B
    G
\:^              	   @   s  d Z ddlZddl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 ddlmZmZ ddlmZ ddd	d
dddddg	ZG dd deZG dd deZG dd	 d	eZG dd
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZ dS )z
    pygments.lexers.c_like
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for other C-like languages.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsinheritwordsdefault)TextCommentOperatorKeywordNameStringNumberPunctuation)CLexerCppLexer)_mql_builtins	PikeLexer	NesCLexer	ClayLexerECLexer	ValaLexer	CudaLexer	SwigLexerMqlLexerArduinoLexerc               @   sp   e Zd ZdZdZdgZddgZdgZeddd	e	fd
e	j
fdee	edfdefegdejdfdedfgdZdS )r   z[
    For `Pike <http://pike.lysator.liu.se/>`_ source code.

    .. versionadded:: 2.0
    ZPikeZpikez*.pikez*.pmodztext/x-pike)=catchnewprivate	protectedpublicZgaugethrowthrowsclass	interfaceZ	implementabstractextendsfromthissuperZconstantfinalstaticimportZuseexterninlineprotobreakcontinueifelseforwhiledoswitchcaseasinversionreturntruefalseZnullZ__VERSION__Z	__MAJOR__Z	__MINOR__Z	__BUILD__Z__REAL_VERSION__Z__REAL_MAJOR__Z__REAL_MINOR__Z__REAL_BUILD__Z__DATE__Z__TIME__Z__FILE__Z__DIR__Z__LINE__Z__AUTO_BIGNUM__Z__NT__Z__PIKE__Z__amigaos__Z_Pragmastatic_assertZdefinedZsscanfz\b)suffixz(bool|int|long|float|short|double|char|string|object|void|mapping|array|multiset|program|function|lambda|mixed|[a-z_][a-z0-9_]*_t)\bz(class)(\s+)	classnamez[~!%^&*+=|?:<>/@-]z[a-zA-Z_]\w*z#popz\s*(?=>))
statementsrA   N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r   Typer   r   r
   r   r   Classtokens rN   rN   5lib/python3.7/site-packages/pygments/lexers/c_like.pyr      s    
c               @   sN   e Zd ZdZdZdgZdgZdgZdeddd	e	fed
dd	e	j
fegiZdS )r   z
    For `nesC <https://github.com/tinyos/nesc>`_ source code with preprocessor
    directives.

    .. versionadded:: 2.0
    ZnesCZnescz*.ncztext/x-nescsrcrB   )r%   r9   asyncZatomicZcallZcommandZ	componentZ
componentsZconfigurationZeventr&   ZgenericimplementationZincludesr$   moduler   ZnoraceZpostZprovidessignalZtaskZusesz\b)r@   )
Z	nx_structZnx_unionZ	nx_int8_tZ
nx_int16_tZ
nx_int32_tZ
nx_int64_tZ
nx_uint8_tZnx_uint16_tZnx_uint32_tZnx_uint64_tN)rC   rD   rE   rF   rG   rH   rI   rJ   r   r   rK   r   rM   rN   rN   rN   rO   r   B   s   c               @   s   e Zd ZdZdZdgZdgZdgZdefde	j
fde	jfd	efd
efdefdejfdejfdejfdefdedfdedfgdejfdefgdefgdedfedgdedfededgdZdS )r   zT
    For `Clay <http://claylabs.com/clay/>`_ source.

    .. versionadded:: 2.0
    ZClayz*.clayZclayztext/x-clayz\sz//.*?$z/(\\\n)?[*](.|\n)*?[*](\\\n)?/aK  \b(public|private|import|as|record|variant|instance|define|overload|default|external|alias|rvalue|ref|forward|inline|noinline|forceinline|enum|var|and|or|not|if|else|goto|return|while|switch|case|break|continue|for|in|true|false|try|catch|throw|finally|onerror|staticassert|eval|when|newtype|__FILE__|__LINE__|__COLUMN__|__ARG__)\bz[~!%^&*+=|:<>/-]z[#(){}\[\],;.]z0x[0-9a-fA-F]+[LlUu]*z
\d+[LlUu]*z\b(true|false)\bz(?i)[a-z_?][\w?]*z"""tdqs"dqsz(?i)\\(x[0-9a-f]{2}|.).z\nz#popstringsnl)rootrX   rY   rV   rT   N)rC   rD   rE   rF   rG   rI   rH   rJ   r   r	   Single	Multiliner   r
   r   r   HexIntegerr   Builtinr   Escaper   rM   rN   rN   rN   rO   r   _   s4   
c               @   s|   e Zd ZdZdZdgZddgZddgZedd	d
e	fedd	d
e	j
fdee	edfdejfegdejdfdedfgdZdS )r   zU
    For eC source code with preprocessor directives.

    .. versionadded:: 1.5
    ZeCZecz*.ecz*.ehztext/x-echdrztext/x-ecsrc)+virtualr#   r   r    propertyr,   deleter   Znew0ZrenewZrenew0ZdefinegetsetZremoteZ	dllexportZ	dllimportZstdcallsubclassZ__on_register_module	namespaceusingZtyped_objectZ
any_objectZincrefregisterZwatchZstopwatchingZfirewatchersZ	watchableZclass_designerZclass_fixedZclass_no_expansionZissetZclass_default_propertyZproperty_categoryZ
class_dataZclass_propertyZ	thisclassZdbtableZdbindexZdatabase_openZdbfieldz\b)r@   )uintuint16uint32uint64boolbyteunicharint64z(class)(\s+)rA   z(null|value|this)\bz[a-zA-Z_]\w*z#popz\s*(?=>))rB   rA   N)rC   rD   rE   rF   rG   rH   rI   rJ   r   r   rK   r   r   r   r_   r   rL   rM   rN   rN   rN   rO   r      s    

c               @   s  e Zd ZdZdZddgZddgZdgZdej	d	fd
e
fde
fde
fdejfdejfgdedfdej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fdeeejefdeeejfdefedddefedddejfd eeje
d!fd"eeje
d#fd$eeejfed%ddejfd&ejfd'efge d(e!d)ge d(e d*d+efd,ed-fgd.ed-fd/ej"fd0efdefd1efgd2ej	d3fd4ej	d-fd5ej	d-fd6efgd'ej#d-fgd7ejd-fgd8Z$d9S ):r   zW
    For Vala source code with preprocessor directives.

    .. versionadded:: 1.1
    ZValaZvalaZvapiz*.valaz*.vapiztext/x-valaz^\s*#if\s+0if0z\nz\s+z\\\nz//(\n|(.|\n)*?[^\\]\n)z/(\\\n)?[*](.|\n)*?[*](\\\n)?/z[L@]?"stringz4L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'z(?s)""".*?"""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[~!%^&*+=|?:<>/-]z2(\[)(Compact|Immutable|(?:Boolean|Simple)Type)(\])z$(\[)(CCode|(?:Integer|Floating)Type)z
[()\[\],.])!r9   baser0   r8   r   Z	constructr1   r   rc   r6   r3   enumfinallyr4   Zforeachrd   r2   r:   islockr   outZparamsr<   re   sizeofr7   r(   r!   tryZtypeofr5   yieldz\b)r@   )r%   constZdelegateZdynamicZensuresr-   r.   ZinternaloverrideZownedr   r   r    refZrequiresrS   r+   r"   Zunownedvarra   volatileZweakZyieldsz(namespace|using)(\s+)rg   z)(class|errordomain|interface|struct)(\s+)r#   z(\.)([a-zA-Z_]\w*))voidrn   chardoublefloatintZint8Zint16Zint32rq   longshortZsize_tZssize_trs   Ztime_tZucharrj   Zuint8rk   rl   rm   Zulongrp   Zushortz(true|false|null)\bz[a-zA-Z_]\w*
whitespace	statementrB   z[{}];z#poprU   z/\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})z	[^\\"\n]+z\\z^\s*#if.*?(?<!\\)\nz#pushz^\s*#el(?:se|if).*\nz^\s*#endif.*?(?<!\\)\nz.*?\nz[a-zA-Z_][\w.]*)r   rB   rZ   r   rs   rr   r#   rg   N)%rC   rD   rE   rF   rG   rH   rI   rJ   r	   Preprocr   r[   r\   r   ZCharr   ZFloatr]   ZOctr^   r
   r   r   r   Z	Decoratorr   r   ZDeclarationZ	NamespaceZ	AttributerK   r_   r   r   r`   rL   rM   rN   rN   rN   rO   r      s~   





c               @   sb   e Zd ZdZdZddgZddgZdgZedZ	ed	Z
ed
ZedZedZedZdd ZdS )r   u|   
    For NVIDIA `CUDA™ <http://developer.nvidia.com/category/zone/cuda-zone>`_
    source.

    .. versionadded:: 1.6
    ZCUDAz*.cuz*.cuhZcudaZcuztext/x-cuda)
__device__Z
__global__Z__host__Z__noinline__Z__forceinline__)r   Z__constant__Z
__shared__Z__restrict__)+Zchar1Zuchar1Zchar2Zuchar2Zchar3Zuchar3Zchar4Zuchar4Zshort1Zushort1Zshort2Zushort2Zshort3Zushort3Zshort4Zushort4Zint1Zuint1Zint2Zuint2Zint3Zuint3Zint4Zuint4Zlong1Zulong1Zlong2Zulong2Zlong3Zulong3Zlong4Zulong4Z	longlong1Z
ulonglong1Z	longlong2Z
ulonglong2Zfloat1Zfloat2Zfloat3Zfloat4Zdouble1Zdouble2Zdim3)ZgridDimZblockIdxZblockDimZ	threadIdxZwarpSize)Z__threadfence_blockZ__threadfenceZ__threadfence_systemZ__syncthreadsZ__syncthreads_countZ__syncthreads_andZ__syncthreads_or)z<<<z>>>c             c   s   xt | |D ]\}}}|tkr|| jkr2tj}nX|| jkrDtj}nF|| jkrVtj}n4|| j	krhtj
}n"|| jkrztj}n|| jkrtj}|||fV  qW d S )N)r   get_tokens_unprocessedr   variable_qualifiersr   rK   vector_types	variablesr_   execution_confsZPseudofunction_qualifiersReserved	functionsFunction)selftextindextokenvaluerN   rN   rO   r   8  s    





z CudaLexer.get_tokens_unprocessedN)rC   rD   rE   rF   rG   rI   rH   rJ   re   r   r   r   r   r   r   r   rN   rN   rN   rO   r     s   c               @   s\   e Zd ZdZdZdgZddgZdgZdZdd	e	j
fd
e	fdejfegiZedZdd ZdS )r   zT
    For `SWIG <http://www.swig.org/>`_ source code.

    .. versionadded:: 2.0
    ZSWIGZswigz*.swgz*.iz	text/swigg{Gz?rB   z(%[a-z_][a-z0-9_]*)z\$\**\&?\w+z##*[a-zA-Z_]\w*)Rz%applyz%definez	%directorz%enddefz
%exceptionz%extendz%featurez	%fragmentz%ignorez
%immutablez%importz%includez%inlinez%insertz%modulez
%newobjectz%nspacez%pragmaz%renamez%shared_ptrz	%templatez
%typecheckz%typemapz%argz
%attributez%bangz%beginz	%callbackz%catchesz%clearz	%constantz	%copyctorz%csconstz%csconstvaluez%csenumz%csmethodmodifiersz%csnothrowexceptionz%defaultz%defaultctorz%defaultdtorz%definedz%deletez
%delobjectz%descriptorz%exceptionclassz%exceptionvarz%extend_smart_pointerz
%fragmentsz%headerz%ifcplusplusz%ignorewarnz	%implicitz%implicitconvz%initz
%javaconstz%javaconstvaluez	%javaenumz%javaexceptionz%javamethodmodifiersz%kwargsz%luacodez%mutablez%naturalvarz%nestedworkaroundz	%perlcodez
%pythonabcz%pythonappendz%pythoncallbackz%pythoncodez%pythondynamicz%pythonmaybecallz%pythonnondynamicz%pythonprependz
%refobjectz%shadowz%sizeofz%trackobjectsz%typesz%unrefobjectz%varargsz%warnz%warnfilterc             C   s<   d}t d| t j}x"|D ]}|tjkr0d}P qd}qW |S )Nr   z^\s*(%[a-z_][a-z0-9_]*)g\(\?gQ?)refindallMr   swig_directives)r   rvZmatchesmrN   rN   rO   analyse_textx  s    

zSwigLexer.analyse_textN)rC   rD   rE   rF   rG   rH   rI   rJ   Zpriorityr   r   r	   r   r   rM   re   r   r   rN   rN   rN   rO   r   J  s   c            
   @   s   e Zd ZdZdZdddddgZdd	d
gZdgZdee	j
ddefee	jddejfee	jddejfee	jddejfee	jdddejfegiZdS )r   z
    For `MQL4 <http://docs.mql4.com/>`_ and
    `MQL5 <http://www.mql5.com/en/docs>`_ source code.

    .. versionadded:: 2.0
    ZMQLZmqlZmq4Zmq5Zmql4Zmql5z*.mq4z*.mq5z*.mqhz
text/x-mqlrB   z\b)r@   z(clr)?)prefixr@   N)rC   rD   rE   rF   rG   rH   rI   rJ   r   r   keywordsr   Zc_typesrK   typesr   r   Z	constantsZConstantZcolorsr   rM   rN   rN   rN   rO   r     s   
c               @   sV   e Zd ZdZdZdgZdgZdgZedZ	edZ
edZed	Zed
Zdd ZdS )r   u   
    For `Arduino(tm) <https://arduino.cc/>`_ source.

    This is an extension of the CppLexer, as the Arduino® Language is a superset
    of C++

    .. versionadded:: 2.1
    ZArduinoZarduinoz*.inoztext/x-arduino)ZsetupZloop)notorandxor)kZDIGITAL_MESSAGEZFIRMATA_STRINGZANALOG_MESSAGEZREPORT_DIGITALZREPORT_ANALOGINPUT_PULLUPZSET_PIN_MODEZINTERNAL2V56ZSYSTEM_RESETLED_BUILTINZINTERNAL1V1ZSYSEX_STARTZINTERNALZEXTERNALZHIGHZLOWZINPUTZOUTPUTr   r   r=   r>   r   booleanr   zunsigned charro   r   zunsigned intwordr   zunsigned longr   r   r   rs   r   arrayr+   r   r}   r   ro   r   rs   r   r   r   r   r   r   ra   operatorrz   Zuint8_tZuint16_tZuint32_tZuint64_tZint8_tZint16_tZint32_tZint64_tZdynamic_castZtypedefZ
const_castr}   ZstructZstatic_castunionZunsignedr   r   r+   r   rn   r    Zfriendautor   ru   r-   r#   r   Zreinterpret_castr   ri   Zexplicitsignedr.   rc   Z_BoolcomplexZ_ComplexZ
_ImaginaryZatomic_boolZatomic_charZatomic_scharZatomic_ucharZatomic_shortZatomic_ushortZ
atomic_intZatomic_uintZatomic_longZatomic_ulongZatomic_llongZatomic_ullongZPROGMEM(X  ZKeyboardControllerZMouseControllerZSoftwareSerialZEthernetServerZEthernetClientZLiquidCrystalZRobotControlZGSMVoiceCallZEthernetUDPZ
EsploraTFTZ
HttpClientZ
RobotMotorZ
WiFiClientZ
GSMScannerZ
FileSystemZ	SchedulerZ	GSMServerZ	YunClientZ	YunServer	IPAddressZ	GSMClientZGSMModemZKeyboardZEthernetZConsoleZGSMBandZEsploraZStepperZProcessZWiFiUDPZGSM_SMSZMailboxZUSBHostZFirmataZPImageZClientZServerZGSMPINFileIOZBridgeZSerialZEEPROMZStreamZMouseZAudioZServoZFileZTaskZGPRSZWiFiZWireZTFTZGSMZSPIZSDZrunShellCommandAsynchronouslyZanalogWriteResolutionZretrieveCallingNumberZprintFirmwareVersionZanalogReadResolutionZsendDigitalPortPairZnoListenOnLocalhostZreadJoystickButtonZsetFirmwareVersionZreadJoystickSwitchZscrollDisplayRightZgetVoiceCallStatusZscrollDisplayLeftZwriteMicrosecondsZdelayMicrosecondsZbeginTransmissionZgetSignalStrengthZrunAsynchronouslyZgetAsynchronouslyZlistenOnLocalhostZgetCurrentCarrierZreadAccelerometerZmessageAvailableZsendDigitalPortsZlineFollowConfigZcountryNameWriteZrunShellCommandZreadStringUntilZrewindDirectoryZreadTemperatureZsetClockDividerZreadLightSensorZendTransmissionZanalogReferenceZdetachInterruptZcountryNameReadZattachInterruptZencryptionTypeZreadBytesUntilZrobotNameWriteZreadMicrophoneZrobotNameReadZcityNameWriteZuserNameWriteZreadJoystickYZreadJoystickXZmouseReleasedZopenNextFileZscanNetworksZnoInterruptsZdigitalWriteZbeginSpeakerZmousePressedZisActionDoneZmouseDraggedZdisplayLogosZnoAutoscrollZaddParameterZremoteNumberZgetModifiersZkeyboardReadZuserNameReadZwaitContinueZprocessInputZparseCommandZprintVersionZreadNetworksZwriteMessageZblinkVersionZcityNameReadZreadMessageZsetDataModeZparsePacketZisListeningZsetBitOrderZbeginPacketZisDirectoryZmotorsWriteZdrawCompassZdigitalReadZclearScreenZserialEventZrightToLeftZsetTextSizeZleftToRightZrequestFromZkeyReleasedZcompassReadZanalogWriteZ
interruptsZ
WiFiServerZ
disconnectZ
playMelodyZ
parseFloatZ
autoscrollZ
getPINUsedZ
setPINUsedZ
setTimeoutZ
sendAnalogZ
readSliderZ
analogReadZ
beginWriteZ
createCharZ
motorsStopZ
keyPressedZ
tempoWriteZ
readButtonZ
subnetMaskZ
debugPrintZ
macAddressZ
writeGreenZ
randomSeedZ
attachGPRSZ
readStringZ
sendStringZ
remotePortZ
releaseAllZ
mouseMovedZ
backgroundZ
getXChangeZ
getYChangeZ
answerCallZ	getResultZ	voiceCallZ	endPacketZ	constrainZ	getSocketZ	writeJSONZ	getButtonZ	availableZ	connectedZ	findUntilZ	readBytesZ	exitValueZ	readGreenZ	writeBlueZ	startLoopr   Z	isPressedZ	sendSysexZ	pauseModeZ	gatewayIPZ	setCursorZ	getOemKeyZ	tuneWriteZ	noDisplayZ	loadImageZ	switchPINZ	onRequestZ	onReceiveZ	changePINZplayFileZnoBufferZparseIntZoverflowZcheckPINZknobReadZbeginTFTZbitClearZupdateIRZbitWriteZpositionZwriteRGBZhighByteZwriteRedZsetSpeedZreadBlueZnoStrokeZremoteIPZtransferZshutdownZhangCallZbeginSMSZendWriteZattachedZmaintainZnoCursorZcheckRegZcheckPUKZshiftOutZisValidZshiftInZpulseInZconnectZprintlnZlocalIPZpinModeZgetIMEIZdisplayZnoBlinkZprocessZgetBandZrunningZbeginSDZdrawBMPZlowByteZsetBandreleaseZbitReadZprepareZpointToZreadRedZsetModeZnoFillremoveZlistenZstrokedetachZattachZnoToneexistsbufferZheightZbitSetZcircleZconfigZcursorZrandomZIRreadZsetDNSZendSMSZgetKeyZmicrosZmillisZbeginprintwriteZreadyflushwidthZisPINZblinkclearZpressmkdirrmdircloseZpointr|   ZimageZBSSIDZclickZdelayreadr   ZmovepeekZbeepZrectlineopenseekZfillsizeZturnstophomefindstepZtoneZsqrtZRSSIZSSIDendbitZtanZcosZsinpowmapabsmaxminrd   runZputZisAlphaNumericZisAlphaZisAsciiZisWhitespaceZ	isControlZisDigitZisGraphZisLowerCaseZisPrintableZisPunctZisSpaceZisUpperCaseZisHexadecimalDigit)rg   templateZmutablerh   ZasmZtypeidtypenamer(   ZalignofZ	constexprZdecltypeZnoexceptr?   Zthread_localZrestrictc             c   s   xt | |D ]\}}}|| jkr2|tj|fV  q|| jkrJ|t|fV  q|| jkrd|tj	|fV  q|| j
kr||t|fV  q|| jkr|tj|fV  q|||fV  qW d S )N)r   r   	structurer   r_   	operatorsr
   r   r   r   suppress_highlightr   r   )r   r   r   r   r   rN   rN   rO   r     s    




z#ArduinoLexer.get_tokens_unprocessedN)rC   rD   rE   rF   rG   rH   rI   rJ   re   r   r   r   r   r   r   rN   rN   rN   rO   r     s   @)!rF   r   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   Zpygments.lexers.c_cppr   r   Zpygments.lexersr   __all__r   r   r   r   r   r   r   r   r   rN   rN   rN   rO   <module>
   s     (
(3&b0=