U
    ]g[                     @   s   d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ dddd	gZd
d ZG dd deeZG dd deeZG dd deZG dd	 d	eZdS )z
    pygments.lexers.objective
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Objective-C family languages.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsusingthiswordsinheritdefault)
TextKeywordNameStringOperatorNumberPunctuationLiteralComment
Whitespace)CLexerCppLexerObjectiveCLexerObjectiveCppLexer
LogosLexer
SwiftLexerc                    s0   t d t dG  fddd}|S )z^
    Generate a subclass of baselexer that accepts the Objective-C syntax
    extensions.
    z @(?:end|implementation|protocol)z<\[\s*[a-zA-Z_]\w*\s+(?:[a-zA-Z_]\w*\s*\]|(?:[a-zA-Z_]\w*)?:)c                       s|  e Zd ZdZdedfdefdejfdejfdejfdejfd	ej	fd
ej
fdedfdedfdedfedddefedddejfdejfdejfdejfdejfdeeedfdeeedfdefegdeejeejeedfd eejeejd!fd"eejeejeedfd#eejeejd!fd$eejeedfd%ejd!fgd&eejed'fd(eejed!fged)ed*d+efd,ed-fd.ed!fgd/eeeeeeejd0feged)d1efd2efd3eeeeejfd4ejfd+ed!fd,ed5fed!gd6ed7fd8ed!fed9gd6ed-fd8ed!fed9gd:ed;fd<ed!fed9gd:ed-fd<ed!fed9gd.ed!fed9gd=Z fd>d?ZdDfdAdB	ZdCS )Ez-objective.<locals>.GeneratedObjectiveCVariantzU
        Implements Objective-C syntax on top of an existing C family lexer.
        @"stringz	@(YES|NO)z3@'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'z&@(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?z@(\d+\.\d*|\.\d+|\d+[fF])[fF]?z@0x[0-9a-fA-F]+[Ll]?z@0[0-7]+[Ll]?z	@\d+[Ll]?z@\(literal_numberz@\[literal_arrayz@\{literal_dictionary)*z	@selectorz@privatez
@protectedz@publicz@encodez@synchronizedz@tryz@throwz@catchz@finallyz@endz	@propertyz@synthesizeZ__bridgeZ__bridge_transferZ__autoreleasingZ__blockZ__weakZ__strongweakstrongcopyZretainZassignZunsafe_unretainedZatomicZ	nonatomicreadonlyZ	readwritesettergettertypeofinoutinoutreleaseclassz@dynamicz	@optionalz	@requiredz@autoreleasepoolz@import\bsuffix)	idZinstancetypeClassZIMPZSELZBOOLZIBOutletZIBActionZunicharz@(true|false|YES|NO)\nz(YES|NO|nil|self|super)\bz3(Boolean|UInt8|SInt8|UInt16|SInt16|UInt32|SInt32)\bz(TRUE|FALSE)\bz!(@interface|@implementation)(\s+))#popoc_classnamez(@class|@protocol)(\s+))r0   oc_forward_classname@z7([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)(\{))r0   oc_ivars.([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?r0   z6([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))(\s*)(\{)z-([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))z([a-zA-Z$_][\w$]*)(\s*)(\{)([a-zA-Z$_][\w$]*)z([a-zA-Z$_][\w$]*)(\s*,\s*)r2   z([a-zA-Z$_][\w$]*)(\s*;?)
whitespace
statements;z\{#pushz\}z/^([-+])(\s*)(\(.*?\))?(\s*)([a-zA-Z$_][\w$]*:?)method,z\.\.\.z (\(.*?\))(\s*)([a-zA-Z$_][\w$]*)z[a-zA-Z$_][\w$]*:function\(literal_number_inner\)Z	statementz\[literal_array_innerz\])r8   r1   r2   r4   rootr;   r   r?   r   rA   r   c                    s<     | rdS d| krdS t d| r*dS  | r8dS dS )N      ?r   g?z@[0-9]+gffffff?r   )searchretext)_oc_keywords_oc_message =/tmp/pip-unpacked-wheel-zak7uw41/pygments/lexers/objective.pyanalyse_text   s    

z:objective.<locals>.GeneratedObjectiveCVariant.analyse_textrB   c           	      3   sp   ddl m}m}m}  | ||D ]H\}}}|tks>|tjkr^||ksV||ksV||kr^tjj}|||fV  q"d S Nr   )COCOA_INTERFACESCOCOA_PROTOCOLSCOCOA_PRIMITIVES)	pygments.lexers._cocoa_builtinsrO   rP   rQ   get_tokens_unprocessedr   r/   BuiltinPseudo)	selfrG   stackrO   rP   rQ   indextokenvalue)	baselexerrJ   rK   rS      s    zDobjective.<locals>.GeneratedObjectiveCVariant.get_tokens_unprocessedN)rM   ) __name__
__module____qualname____doc__r   r   CharFloatHexOctIntegerr   r   r   Typer   rT   r   r
   r   r   r/   ZLabelr   r   r   FunctionVariabler	   tokensrL   rS   rJ   rH   rI   r[   rJ   rK   GeneratedObjectiveCVariant*   s   	


)   

 
 	 xrj   )rE   compile)r[   rj   rJ   ri   rK   	objective   s
    

 rl   c                   @   s:   e Zd ZdZdZdZddddgZdd	gZd
gZdZ	dZ
dS )r   zC
    For Objective-C source code with preprocessor directives.
    zObjective-Czhttps://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.htmlzobjective-cZ
objectiveczobj-cZobjcz*.mz*.hztext/x-objective-c 皙?N)r\   r]   r^   r_   nameurlaliases	filenames	mimetypesversion_addedpriorityrJ   rJ   rJ   rK   r      s   c                   @   s6   e Zd ZdZdZddddgZddgZd	gZd
ZdZ	dS )r   zE
    For Objective-C++ source code with preprocessor directives.
    zObjective-C++zobjective-c++zobjectivec++zobj-c++zobjc++z*.mmz*.hhztext/x-objective-c++rm   rn   N)
r\   r]   r^   r_   ro   rq   rr   rs   rt   ru   rJ   rJ   rJ   rK   r      s   c                   @   s`  e Zd ZdZdZdgZddddgZdgZd	Zd
Z	de
fdee
eeejeefdee
edfdee
fdee
eejdfdee
edfegdefdedfdeejeeeefdejfdedfgdeejeejdfdejdfgdee
edfdee
eejfdee
eejeeefdee
eedfdee
ee
ee
fd eee
efegd!Zed"Zd#d$ Zd%S )&r   zK
    For Logos + Objective-C source code with preprocessor directives.
    ZLogosZlogosz*.xz*.xiz*.xmz*.xmiztext/x-logosz1.6g      ?z(%orig|%log)\bz*(%c)\b(\()(\s*)([a-zA-Z$_][\w$]*)(\s*)(\))z(%init)\b(\()logos_init_directivez(%init)(?=\s*;)z%(%hook|%group)(\s+)([a-zA-Z$_][\w$]+)r0   z(%subclass)(\s+))r0   logos_classname\s+r<   )rv   r0   z'([a-zA-Z$_][\w$]*)(\s*)(=)(\s*)([^);]*)r6   r@   r5   rw   z*(%config)(\s*\(\s*)(\w+)(\s*=)(.*?)(\)\s*)z(%ctor)(\s*)(\{)r=   z(%new)(\s*)(\()(.*?)(\))z(\s*)(%end)(\s*))r8   rv   rw   rB   z%(?:hook|ctor|init|c\()c                 C   s   t j| rdS dS )NrC   r   )r   _logos_keywordsrD   rF   rJ   rJ   rK   rL     s    zLogosLexer.analyse_textN)r\   r]   r^   r_   ro   rq   rr   rs   rt   ru   r   r   r   r
   r   r/   r   rg   r   rh   rE   rk   ry   rL   rJ   rJ   rJ   rK   r      sx    
 
	 

+
c                   @   sB  e Zd ZdZdZdZdgZdgZdgZdZ	de
fd	efd
ejdfdejdfdejdfededddejfedddejjfdejfdejfdejfdejfdejfdejfdedfdedfdefd efd!efged"ddefd#ej fed$ddej fd%ej!fd&ej"d'fd(e#ej"eej$fd)e#ej"eej%fd*e#ej"eejfed+ddej"fg	d,ej&fgded-fed.d/ejfged.d0ejfdejd1fd2ejd-fd3ejfgded-fd!ej$fed4gded-fedd5ejfed4gded-fed6gded-fed6gd7ej'd8fd9ej(fd:efd;efgd<ej'd1fd=ej'd-fed4gd>Z)d?d@ Z*dAS )Br   z
    For Swift source.
    ZSwiftzhttps://www.swift.org/z*.swiftZswiftztext/x-swiftz2.0z\nrx   z//comment-singlez/\*comment-multiz##(if|elseif|else|endif|available)\bpreprockeywords)ArrayZ!AutoreleasingUnsafeMutablePointerZBidirectionalReverseViewZBitZBoolZCFunctionPointerZCOpaquePointerZCVaListPointerZ	CharacterZClosedIntervalZCollectionOfOneZContiguousArrayZ
DictionaryZDictionaryGeneratorZDictionaryIndexDoubleZEmptyCollectionZEmptyGeneratorZEnumerateGeneratorZEnumerateSequenceZFilterCollectionViewZFilterCollectionViewIndexZFilterGeneratorZFilterSequenceViewra   ZFloat80ZFloatingPointClassificationZGeneratorOfZGeneratorOfOneZGeneratorSequenceZHalfOpenIntervalZ
HeapBufferZHeapBufferStorageZImplicitlyUnwrappedOptionalZIndexingGeneratorZIntZInt16ZInt32ZInt64ZInt8ZLazyBidirectionalCollectionZLazyForwardCollectionZLazyRandomAccessCollectionZLazySequenceZMapCollectionViewZMapSequenceGeneratorZMapSequenceViewZMirrorDispositionObjectIdentifierZOnHeapOptionalZPermutationGeneratorZQuickLookObjectZRandomAccessReverseViewZRangeZRangeGeneratorZRawByteZRepeatZReverseBidirectionalIndexZReverseRandomAccessIndexZ
SequenceOfZSinkOfZSliceZStaticStringZStrideThroughZStrideThroughGeneratorZStrideToZStrideToGeneratorr   ZUIntZUInt16ZUInt32ZUInt64ZUInt8ZUTF16ZUTF32UTF8ZUnicodeDecodingResultZUnicodeScalarZ	UnmanagedZUnsafeBufferPointerZUnsafeBufferPointerGeneratorZUnsafeMutableBufferPointerZUnsafeMutablePointerZUnsafePointerZZip2ZZipGenerator2ZAbsoluteValuableZ	AnyObjectZArrayLiteralConvertibleZBidirectionalIndexTypeZBitwiseOperationsTypeZBooleanLiteralConvertibleZBooleanTypeZCVarArgTypeZCollectionTypeZ
ComparableZDebugPrintableZDictionaryLiteralConvertibleZ	EquatableZ)ExtendedGraphemeClusterLiteralConvertibleZExtensibleCollectionTypeZFloatLiteralConvertibleZFloatingPointTypeZForwardIndexTypeGeneratorTypeHashableZIntegerArithmeticTypeZIntegerLiteralConvertibleZIntegerTypeZIntervalTypeZ
MirrorTypeZMutableCollectionTypeZMutableSliceableZNilLiteralConvertibleZOutputStreamTypeZ	PrintableZRandomAccessIndexTypeZRangeReplaceableCollectionTypeZRawOptionSetTypeZRawRepresentableZReflectableZSequenceTypeZSignedIntegerTypeZSignedNumberTypeZSinkTypeZ	SliceableZ
StreamableZ
StrideableZStringInterpolationConvertibleZStringLiteralConvertibleZUnicodeCodecTypeZUnicodeScalarLiteralConvertibleZUnsignedIntegerTypeZ_ArrayBufferTypeZ_BidirectionalIndexTypeZ_CocoaStringTypeZ_CollectionTypeZ_ComparableZ_ExtensibleCollectionTypeZ_ForwardIndexTypeZ_IncrementableZ_IntegerArithmeticTypeZ_IntegerTypeZ_ObjectiveCBridgeableZ_RandomAccessIndexTypeZ_RawOptionSetTypeZ_SequenceTypeZ_Sequence_TypeZ_SignedIntegerTypeZ_SignedNumberTypeZ
_SliceableZ_StrideableZ"_SwiftNSArrayRequiredOverridesTypeZ_SwiftNSArrayTypeZ_SwiftNSCopyingTypeZ'_SwiftNSDictionaryRequiredOverridesTypeZ_SwiftNSDictionaryTypeZ_SwiftNSEnumeratorTypeZ_SwiftNSFastEnumerationTypeZ#_SwiftNSStringRequiredOverridesTypeZ_SwiftNSStringTypeZ_UnsignedIntegerTypeZC_ARGCZC_ARGVProcessAnyZAnyClassZBooleanLiteralTypeZCBoolZCCharZCChar16ZCChar32ZCDoubleZCFloatZCIntZCLongZ	CLongLongZCShortZCSignedCharZCUnsignedIntZCUnsignedLongZCUnsignedShortZ	CWideCharZExtendedGraphemeClusterTypeZFloat32ZFloat64ZFloatLiteralTypeZIntMaxZIntegerLiteralTypeZStringLiteralTypeZUIntMaxZUWordZUnicodeScalarTypeZVoidWordZNSErrorPointerZNSObjectProtocolZSelectorr+   r,   )KabsZadvancealignofZalignofValueassertZassertionFailurecontainscountZcountElementsZ
debugPrintZdebugPrintlnZdistanceZ	dropFirstZdropLastdump	enumerateequalextend
fatalErrorfilterfindfirstZ	getVaListindicesinsertZisEmptyjoinlastlazyZlexicographicalComparemapmaxZ
maxElementminZ
minElementZnumericCastoverlaps	partitionpreconditionZpreconditionFailureprefixprintZprintlnreduceZreflectZ	removeAllZremoveAtIndexZ
removeLastZremoveRangereversesizeofZsizeofValuesortsortedZsplicesplitZ
startsWithZstrideZstrideofZstrideofValuer-   ZswapZtoDebugStringtoStringZ	transcodeZunderestimateCountZunsafeAddressOfZunsafeBitCastZunsafeDowncastZwithExtendedLifetimeZwithUnsafeMutablePointerZwithUnsafeMutablePointersZwithUnsafePointerZwithUnsafePointersZ
withVaListz\$\d+z0b[01_]+z	0o[0-7_]+z0x[0-9a-fA-F_]+zD[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)z[0-9][0-9_]*z"""string-multi"r   z/[(){}\[\].,:;=@#`?]|->|[<&?](?=\w)|(?<=\w)[>!?]z[/=\-+!*%<>&|^?~]+z[a-zA-Z_]\w*)asasyncawaitbreakZcaseZcatchcontinuer	   deferZdoelseZfallthroughforZguardifr&   isrepeatreturnz	#selectorswitchthrowtrywherewhilez@availability\([^)]+\)))ZassociativityZconvenienceZdynamicZdidSetfinalgetZindirectZinfixr(   r   leftZmutatingnoneZnonmutatingoptionaloverrideZpostfix
precedencer   ProtocolrequiredZrethrowsrightsetZthrowsre   Zunownedr   ZwillSetz@availabilityz@autoclosurez	@noreturnz@NSApplicationMainz
@NSCopyingz
@NSManagedz@objcz@UIApplicationMainz	@IBActionz@IBDesignablez@IBInspectablez	@IBOutletz(as|dynamicType|false|is|nil|self|Self|super|true|__COLUMN__|__FILE__|__FUNCTION__|__LINE__|_|#(?:file|line|column|function))\bzimport\bmodulez9(class|enum|extension|struct|protocol)(\s+)([a-zA-Z_]\w*)z(func)(\s+)([a-zA-Z_]\w*)z(var|let)(\s+)([a-zA-Z_]\w*))ZactorZassociatedtyper*   deinitenum	extensionfuncimportinitZinternalZletoperatorprivateprotocolpublicZstaticstructZ	subscriptZ	typealiasvarz2:param: [a-zA-Z_]\w*|:returns?:|(FIXME|MARK|TODO):r0   commentz[^\n]+z[^*/]+r:   z\*/z[*/]+rB   z[A-Za-z]\w*string-commonz\\\(string-intpzN\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}z[^\\"]+z\\r>   r@   )rB   r}   r   rz   r{   r   r|   r   r   r   r   c                 c   sn   ddl m}m}m} t| |D ]H\}}}|tks<|tjkr\||ksT||ksT||kr\tjj	}|||fV  q d S rN   )
rR   rO   rP   rQ   r   rS   r   r/   rT   rU   )rV   rG   rO   rP   rQ   rX   rY   rZ   rJ   rJ   rK   rS     s    
z!SwiftLexer.get_tokens_unprocessedN)+r\   r]   r^   r_   ro   rp   rr   rq   rs   rt   r
   r   r   SingleZ	MultilineZPreprocr   r   r   rT   rU   rg   r   ZBinrc   rb   ra   rd   r   r   r   r   ZReservedConstantZDeclarationr   r/   rf   SpecialZInterpolZEscaperh   rS   rJ   rJ   rJ   rK   r     s   


?@By	

 $




  P)r_   rE   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.tokenr
   r   r   r   r   r   r   r   r   r   Zpygments.lexers.c_cppr   r   __all__rl   r   r   r   r   rJ   rJ   rJ   rK   <module>   s   
(0 ,?