B
    bY                 @   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 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-2022 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                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.
        z@"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weakZstrongcopyZretainZassignZunsafe_unretainedZatomicZ	nonatomicreadonlyZ	readwritesettergetterZtypeofinoutinoutreleaseclassz@dynamicz	@optionalz	@requiredz@autoreleasepoolz@importz\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+))z#popoc_classnamez(@class|@protocol)(\s+))z#popoc_forward_classname@z7([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)(\{))z#popoc_ivarsz.([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?z#popz6([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*)(\{)z([a-zA-Z$_][\w$]*)z([a-zA-Z$_][\w$]*)(\s*,\s*)r+   z([a-zA-Z$_][\w$]*)(\s*;?)Z
whitespace
statements;z\{z#pushz\}z/^([-+])(\s*)(\(.*?\))?(\s*)([a-zA-Z$_][\w$]*:?)method,z\.\.\.z (\(.*?\))(\s*)([a-zA-Z$_][\w$]*)z[a-zA-Z$_][\w$]*:functionz\(literal_number_innerz\)Z	statementz\[literal_array_innerz\])r.   r*   r+   r-   rootr0   r   r3   r   r4   r   c                s<     | rdS d| krdS t d| r*dS  | r8dS dS )Ng      ?z@"g?z@[0-9]+gffffff?r   )searchre)text)_oc_keywords_oc_message 8lib/python3.7/site-packages/pygments/lexers/objective.pyanalyse_text   s    

z:objective.<locals>.GeneratedObjectiveCVariant.analyse_textr5   c       	      3   st   ddl m}m}m} xZ | ||D ]H\}}}|tks@|tjkr`||ksX||ksX||kr`tjj}|||fV  q$W d S )Nr   )COCOA_INTERFACESCOCOA_PROTOCOLSCOCOA_PRIMITIVES)	pygments.lexers._cocoa_builtinsr?   r@   rA   get_tokens_unprocessedr   r)   BuiltinPseudo)	selfr8   stackr?   r@   rA   indextokenvalue)	baselexerr;   r<   rC      s    zDobjective.<locals>.GeneratedObjectiveCVariant.get_tokens_unprocessedN)r>   ) __name__
__module____qualname____doc__r   r   ZCharFloatHexOctIntegerr   r   r   Typer   rD   r   r
   r   r   r)   ZLabelr   r   r   FunctionVariabler	   tokensr=   rC   r;   )r9   r:   rK   r;   r<   GeneratedObjectiveCVariant*   s   


rX   )r7   compile)rK   rX   r;   )r9   r:   rK   r<   	objective   s
    

 rZ   c               @   s6   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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-cg?N)
rL   rM   rN   rO   nameurlaliases	filenames	mimetypespriorityr;   r;   r;   r<   r      s   c               @   s2   e Zd ZdZdZddddgZddgZd	g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++g?N)	rL   rM   rN   rO   r[   r]   r^   r_   r`   r;   r;   r;   r<   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
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   zf
    For Logos + Objective-C source code with preprocessor directives.

    .. versionadded:: 1.6
    ZLogosZlogosz*.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$]+)z#popz(%subclass)(\s+))z#poplogos_classnamez\s+r1   )ra   z#popz'([a-zA-Z$_][\w$]*)(\s*)(=)(\s*)([^);]*)z([a-zA-Z$_][\w$]*)z\)z.([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?rb   z*(%config)(\s*\(\s*)(\w+)(\s*=)(.*?)(\)\s*)z(%ctor)(\s*)(\{)r2   z(%new)(\s*)(\()(.*?)(\))z(\s*)(%end)(\s*))r.   ra   rb   r5   z%(?:hook|ctor|init|c\()c             C   s   t j| rdS dS )Ng      ?r   )r   _logos_keywordsr6   )r8   r;   r;   r<   r=     s    zLogosLexer.analyse_textN)rL   rM   rN   rO   r[   r]   r^   r_   r`   r   r   r   r
   r   r)   r   rV   r   rW   r7   rY   rc   r=   r;   r;   r;   r<   r      sP   





c               @   s  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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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+d-e
jfde
jd.fd/e
jd*fd0e
jfgde	d*fdej"fed1gde	d*fedd2e
jfed1gd3ej%d4fded*fd5ej&fd6efd7efgd8ej%d.fd9ej%d*fed1gd:	Z'd;d< Z(d=S )>r   z6
    For Swift source.

    .. versionadded:: 2.0
    ZSwiftzhttps://www.swift.org/z*.swiftZswiftztext/x-swiftz\nz\s+z//zcomment-singlez/\*zcomment-multiz##(if|elseif|else|endif|available)\bpreprockeywords)ZArrayZ!AutoreleasingUnsafeMutablePointerZBidirectionalReverseViewZBitZBoolZCFunctionPointerZCOpaquePointerZCVaListPointerZ	CharacterZClosedIntervalZCollectionOfOneZContiguousArrayZ
DictionaryZDictionaryGeneratorZDictionaryIndexDoubleZEmptyCollectionZEmptyGeneratorZEnumerateGeneratorZEnumerateSequenceZFilterCollectionViewZFilterCollectionViewIndexZFilterGeneratorZFilterSequenceViewrP   ZFloat80ZFloatingPointClassificationZGeneratorOfZGeneratorOfOneZGeneratorSequenceZHalfOpenIntervalZ
HeapBufferZHeapBufferStorageZImplicitlyUnwrappedOptionalZIndexingGeneratorZIntZInt16ZInt32ZInt64ZInt8ZLazyBidirectionalCollectionZLazyForwardCollectionZLazyRandomAccessCollectionZLazySequenceZMapCollectionViewZMapSequenceGeneratorZMapSequenceViewZMirrorDispositionZObjectIdentifierZOnHeapZ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UTF32Z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_ARGVZProcessZ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VoidZWordZNSErrorPointerZNSObjectProtocolZSelectorz\b)r'   )KabsZadvanceZalignofZalignofValueassertZassertionFailurecontainscountZcountElementsZ
debugPrintZdebugPrintlnZdistanceZ	dropFirstZdropLastdump	enumerateZequalextendZ
fatalErrorfilterfindfirstZ	getVaListindicesinsertZisEmptyjoinZlastlazyZlexicographicalComparemapmaxZ
maxElementminZ
minElementZnumericCastZoverlaps	partitionZpreconditionZpreconditionFailureprefixprintZprintlnreduceZreflectZ	removeAllZremoveAtIndexZ
removeLastZremoveRangereverseZsizeofZsizeofValuesortsortedZsplicesplitZ
startsWithZstrideZstrideofZstrideofValuer'   ZswapZtoDebugStringZ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_]*"r   z/[(){}\[\].,:;=@#`?]|->|[<&?](?=\w)|(?<=\w)[>!?]z[/=\-+!*%<>&|^?~]+z[a-zA-Z_]\w*)asasyncawaitbreakZcaseZcatchcontinuer	   ZdeferZdoelseZfallthroughforZguardifr"   isrepeatreturnz	#selectorZswitchthrowtrywherewhilez@availability\([^)]+\)))ZassociativityZconvenienceZdynamicZdidSetfinalgetZindirectZinfixr$   rv   leftZmutatingZnoneZnonmutatingZoptionaloverrideZpostfixZ
precedencer{   ZProtocolrequiredZrethrowsrightsetZthrowsrT   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&   Zdeinitenum	extensionfuncimportZinitZinternalZletoperatorZprivateZprotocolZpublicZstaticstructZ	subscriptZ	typealiasvarz2:param: [a-zA-Z_]\w*|:returns?:|(FIXME|MARK|TODO):z#popcommentz[^\n]z[^*/]z#pushz\*/z[*/]r5   z[A-Za-z]\w*z\\\(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\\z\(z\))	r5   re   r   zcomment-singlezcomment-multir   rd   r   zstring-intpc             c   sr   ddl m}m}m} xXt| |D ]H\}}}|tks>|tjkr^||ksV||ksV||kr^tjj	}|||fV  q"W d S )Nr   )r?   r@   rA   )
rB   r?   r@   rA   r   rC   r   r)   rD   rE   )rF   r8   r?   r@   rA   rH   rI   rJ   r;   r;   r<   rC     s    z!SwiftLexer.get_tokens_unprocessedN))rL   rM   rN   rO   r[   r\   r^   r]   r_   r
   r   SingleZ	MultilineZPreprocr   r   r   rD   rE   rV   r   ZBinrR   rQ   rP   rS   r   r   r   r   ZReservedZConstantZDeclarationr   r)   rU   SpecialZInterpolZEscaperW   rC   r;   r;   r;   r<   r     s   


>








)rO   r7   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.tokenr
   r   r   r   r   r   r   r   r   Zpygments.lexers.c_cppr   r   __all__rZ   r   r   r   r   r;   r;   r;   r<   <module>	   s   (, ,@