
    |eY                         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 ddlmZmZ g dZd Z G d d	 ee            Z G d
 d ee            Z G d de      Z G d de      Zy)z
    pygments.lexers.objective
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Objective-C family languages.

    :copyright: Copyright 2006-2023 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)CLexerCppLexer)ObjectiveCLexerObjectiveCppLexer
LogosLexer
SwiftLexerc                 ~     t        j                  d      t        j                  d       G  f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                      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      ef e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j4                        d0feg ed)      d1efd2efd3 e ee      eej6                        fd4ej4                  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>ZdAfd?	Zy@)B-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@synthesize__bridge__bridge_transfer__autoreleasing__block__weak__strongweakstrongcopyretainassignunsafe_unretainedatomic	nonatomicreadonly	readwritesettergettertypeofinoutinoutreleaseclassz@dynamicz	@optionalz	@requiredz@autoreleasepoolz@import\bsuffix)	idinstancetypeClassIMPSELBOOLIBOutletIBAction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+))rF   oc_forward_classname@z7([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)(\{))rF   oc_ivars.([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?rF   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*)rH   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\)	statementz\[literal_array_innerz\])rN   rG   rH   rJ   rootrQ   r   rU   r    rX   r!   c                     j                  |       ryd| v ryt        j                   d|       ryj                  |       ryy)N      ?r   g?z@[0-9]+gffffff?r   )searchre)text_oc_keywords_oc_messages    ;/usr/lib/python3/dist-packages/pygments/lexers/objective.pyanalyse_textz:objective.<locals>.GeneratedObjectiveCVariant.analyse_text   sC    ""4(9d+##D)    c              3      K   ddl m}m}m} 	j	                  | ||      D ]M  \  }}}|t
        u s|t
        j                  u r&||v s||v s||v rt
        j                  j                  }|||f O y wNr   )COCOA_INTERFACESCOCOA_PROTOCOLSCOCOA_PRIMITIVES)	pygments.lexers._cocoa_builtinsrf   rg   rh   get_tokens_unprocessedr   r?   BuiltinPseudo)
selfr^   stackrf   rg   rh   indextokenvalue	baselexers
            ra   rj   zDobjective.<locals>.GeneratedObjectiveCVariant.get_tokens_unprocessed   s     2 2 44T4G*#ueD=ETZZ$7 00E_4L#33 $ 3 3UE))*s   A/A2N))rY   ) __name__
__module____qualname____doc__r   r   CharFloatHexOctIntegerr   r   r   Typer   rk   r   r   r   r	   r?   Labelr   r   r   FunctionVariabler
   tokensrb   rj   )r_   r`   rr   s   ra   GeneratedObjectiveCVariantr   *   s   	 )v&GU:FLLI2FLLA(&**5!6::.v~~."23/2"67 @ INO 	  ;CHJ +DLL9-t||<GV"DLL15x7N)++Xgt-D13 {#K&R L$**dDJJkJ%' C$**dDJJ7A K$**dDJJkJ%' B$**dDJJ7A 0$**dK8:NP&

F;!& 0$**d+-CE-$**d+V5% %%k"W-V,) +tU4[/ 	 % {#K(4%+tT]];=%t}}5k6*Z0 %;<($ W-V,$% %:;($ W-V,$$ ($#ev
p			*rc   r   )r]   compile)rr   r   r_   r`   s   ` @@ra   	objectiver      sF     ::ABL ** 4 5KS* S*Y S*j &%rc   c                   2    e Zd ZdZdZdZg dZddgZdgZdZ	y	)
r   zC
    For Objective-C source code with preprocessor directives.
    zObjective-Czhttps://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html)zobjective-c
objectiveczobj-cobjcz*.mz*.hztext/x-objective-c皙?N)
rs   rt   ru   rv   nameurlaliases	filenames	mimetypespriority rc   ra   r   r      s1     D PC<GI%&IHrc   r   c                   .    e Zd ZdZdZg dZddgZdgZdZy)	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++r   N)	rs   rt   ru   rv   r   r   r   r   r   r   rc   ra   r   r      s*     DDG I'(IHrc   r   c                   z   e Zd ZdZdZdgZg dZdg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j(                  d      Zd Zy )!r   zf
    For Logos + Objective-C source code with preprocessor directives.

    .. versionadded:: 1.6
    Logoslogos)z*.xz*.xiz*.xmz*.xmiztext/x-logosg      ?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$]+)rF   z(%subclass)(\s+))rF   logos_classname\s+rR   )r   rF   z'([a-zA-Z$_][\w$]*)(\s*)(=)(\s*)([^);]*)rL   rV   rK   r   z*(%config)(\s*\(\s*)(\w+)(\s*=)(.*?)(\)\s*)z(%ctor)(\s*)(\{)rS   z(%new)(\s*)(\()(.*?)(\))z(\s*)(%end)(\s*))rN   r   r   rY   z%(?:hook|ctor|init|c\()c                 D    t         j                  j                  |       ryy)Nr[   r   )r   _logos_keywordsr\   )r^   s    ra   rb   zLogosLexer.analyse_text  s    %%,,T2rc   N)rs   rt   ru   rv   r   r   r   r   r   r   r   r   r   r   r?   r	   r   r   r   r]   r   r   rb   r   rc   ra   r   r      s    DiG0I IH (:g{D$**dKPRg{+-CE'!235gtTZZ0&: (7D"9(*
 TN+?@7djj$T4@B"DJJ/K(!
 ?djj$

3V="DJJ7
 !(7D"9 5gtTZZ02:gtT]]D&$GI (7D+"F(gtWfg>@ (4$"?@
7)FV !bjj!;<Orc   r   c                   
   e Zd ZdZdZdZdgZdgZdg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      ej"                  f edd      ej"                  j$                  fdej&                  fdej*                  fdej,                  fdej.                  fdej0                  fdej2                  fdedfdefdefdefg edd      efd ej<                  f ed!d      ej<                  fd"ej>                  fd#ej@                  d$fd% e!ej@                  e	ejD                        fd& e!ej@                  e	ejF                        fd' e!ej@                  e	ej&                        f ed(d      ej@                  fg	d)e
jH                  fgde	d*f ed+      d,e
j                  fg ed+      d-e
j                  fde
j                  d.fd/e
j                  d*fd0e
j                  fgde	d*fdejD                  f ed1      gde	d*f ed      d2e
j                  f ed1      gd3ejJ                  d4fded*fd5ejL                  fd6efd7efgd8ejJ                  d.fd9ejJ                  d*f ed1      gd:	Z'd; Z(y<)=r   z6
    For Swift source.

    .. versionadded:: 2.0
    Swiftzhttps://www.swift.org/z*.swiftswiftztext/x-swiftz\nr   z//comment-singlez/\*comment-multiz##(if|elseif|else|endif|available)\bpreprockeywords)Array!AutoreleasingUnsafeMutablePointerBidirectionalReverseViewBitBoolCFunctionPointerCOpaquePointerCVaListPointer	CharacterClosedIntervalCollectionOfOneContiguousArray
DictionaryDictionaryGeneratorDictionaryIndexDoubleEmptyCollectionEmptyGeneratorEnumerateGeneratorEnumerateSequenceFilterCollectionViewFilterCollectionViewIndexFilterGeneratorFilterSequenceViewrx   Float80FloatingPointClassificationGeneratorOfGeneratorOfOneGeneratorSequenceHalfOpenInterval
HeapBufferHeapBufferStorageImplicitlyUnwrappedOptionalIndexingGeneratorIntInt16Int32Int64Int8LazyBidirectionalCollectionLazyForwardCollectionLazyRandomAccessCollectionLazySequenceMapCollectionViewMapSequenceGeneratorMapSequenceViewMirrorDispositionObjectIdentifierOnHeapOptionalPermutationGeneratorQuickLookObjectRandomAccessReverseViewRangeRangeGeneratorRawByteRepeatReverseBidirectionalIndexReverseRandomAccessIndex
SequenceOfSinkOfSliceStaticStringStrideThroughStrideThroughGeneratorStrideToStrideToGeneratorr   UIntUInt16UInt32UInt64UInt8UTF16UTF32UTF8UnicodeDecodingResultUnicodeScalar	UnmanagedUnsafeBufferPointerUnsafeBufferPointerGeneratorUnsafeMutableBufferPointerUnsafeMutablePointerUnsafePointerZip2ZipGenerator2AbsoluteValuable	AnyObjectArrayLiteralConvertibleBidirectionalIndexTypeBitwiseOperationsTypeBooleanLiteralConvertibleBooleanTypeCVarArgTypeCollectionType
ComparableDebugPrintableDictionaryLiteralConvertible	Equatable)ExtendedGraphemeClusterLiteralConvertibleExtensibleCollectionTypeFloatLiteralConvertibleFloatingPointTypeForwardIndexTypeGeneratorTypeHashableIntegerArithmeticTypeIntegerLiteralConvertibleIntegerTypeIntervalType
MirrorTypeMutableCollectionTypeMutableSliceableNilLiteralConvertibleOutputStreamType	PrintableRandomAccessIndexTypeRangeReplaceableCollectionTypeRawOptionSetTypeRawRepresentableReflectableSequenceTypeSignedIntegerTypeSignedNumberTypeSinkType	Sliceable
Streamable
StrideableStringInterpolationConvertibleStringLiteralConvertibleUnicodeCodecTypeUnicodeScalarLiteralConvertibleUnsignedIntegerType_ArrayBufferType_BidirectionalIndexType_CocoaStringType_CollectionType_Comparable_ExtensibleCollectionType_ForwardIndexType_Incrementable_IntegerArithmeticType_IntegerType_ObjectiveCBridgeable_RandomAccessIndexType_RawOptionSetType_SequenceType_Sequence_Type_SignedIntegerType_SignedNumberType
_Sliceable_Strideable"_SwiftNSArrayRequiredOverridesType_SwiftNSArrayType_SwiftNSCopyingType'_SwiftNSDictionaryRequiredOverridesType_SwiftNSDictionaryType_SwiftNSEnumeratorType_SwiftNSFastEnumerationType#_SwiftNSStringRequiredOverridesType_SwiftNSStringType_UnsignedIntegerTypeC_ARGCC_ARGVProcessAnyAnyClassBooleanLiteralTypeCBoolCCharCChar16CChar32CDoubleCFloatCIntCLong	CLongLongCShortCSignedCharCUnsignedIntCUnsignedLongCUnsignedShort	CWideCharExtendedGraphemeClusterTypeFloat32Float64FloatLiteralTypeIntMaxIntegerLiteralTypeStringLiteralTypeUIntMaxUWordUnicodeScalarTypeVoidWordNSErrorPointerNSObjectProtocolSelectorr:   r;   )KabsadvancealignofalignofValueassertassertionFailurecontainscountcountElements
debugPrintdebugPrintlndistance	dropFirstdropLastdump	enumerateequalextend
fatalErrorfilterfindfirst	getVaListindicesinsertisEmptyjoinlastlazylexicographicalComparemapmax
maxElementmin
minElementnumericCastoverlaps	partitionpreconditionpreconditionFailureprefixprintprintlnreducereflect	removeAllremoveAtIndex
removeLastremoveRangereversesizeofsizeofValuesortsortedsplicesplit
startsWithstridestrideofstrideofValuer<   swaptoDebugStringtoString	transcodeunderestimateCountunsafeAddressOfunsafeBitCastunsafeDowncastwithExtendedLifetimewithUnsafeMutablePointerwithUnsafeMutablePointerswithUnsafePointerwithUnsafePointers
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_]*"r   z/[(){}\[\].,:;=@#`?]|->|[<&?](?=\w)|(?<=\w)[>!?]z[/=\-+!*%<>&|^?~]+z[a-zA-Z_]\w*)asasyncawaitbreakcasecatchcontinuer
   deferdoelsefallthroughforguardifr5   isrepeatreturnz	#selectorswitchthrowtrywherewhilez@availability\([^)]+\)))associativityconveniencedynamicdidSetfinalgetindirectinfixr7   r  leftmutatingnonenonmutatingoptionaloverridepostfix
precedencer  Protocolrequiredrethrowsrightsetthrowsr|   unownedr(   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*))actorassociatedtyper9   deinitenum	extensionfuncimportinitinternalletoperatorprivateprotocolpublicstaticstruct	subscript	typealiasvarz2:param: [a-zA-Z_]\w*|:returns?:|(FIXME|MARK|TODO):rF   commentz[^\n]z[^*/]rP   z\*/z[*/]rY   z[A-Za-z]\w*z\\\(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\\rT   rV   )	rY   r   r  r   r   r  r   r   r  c              #      K   ddl m}m}m} t	        j
                  | |      D ]M  \  }}}|t        u s|t        j                  u r&||v s||v s||v rt        j                  j                  }|||f O y wre   )
ri   rf   rg   rh   r   rj   r   r?   rk   rl   )rm   r^   rf   rg   rh   ro   rp   rq   s           ra   rj   z!SwiftLexer.get_tokens_unprocessed  s|     	. 	. 11$=	&E5%} 3,,0H// LL//E%%	&s   A2A4N))rs   rt   ru   rv   r   r   r   r   r   r   r   Single	MultilinePreprocr   r   r   rk   rl   r   r   Binrz   ry   rx   r{   r   r   r   r   ReservedConstantDeclarationr   r?   r~   SpecialInterpolEscaper   rj   r   rc   ra   r   r     s   
 D
"CIiG I
 DMTNGNN$45W&&83W__iP J  ?B~ KP?Q@ \\A@D   ',-  \\  !"& t}}% &**%6::&,-.4ll<fnn-68$ @M"H- d#kv
p  " +0	1
  '(8(89 	/ 8=	> 
34;4D4DF '--x8Ig))4<>)g))4?A,hw7J7J4==/" # E NST   	";"
H C__
 D&!Iw~~&
 Iw(()W&&0W&&/g''(
 D&!djj)FO
 D&!JW__-FO	
 foo}566"9:@--I FO
 FOOW-FOOV,FO
AEFN&rc   r   )rv   r]   pygments.lexerr   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   pygments.lexers.c_cppr   r   __all__r   r   r   r   r   r   rc   ra   <module>r     s|    
  * * * 3
Nh&V
i' 
		(+ 	=" =@^& ^&rc   