U
    `a[RO                     @   s   d Z ddlZddl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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dS )z
    pygments.lexers.basic
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for BASIC like languages (other than VB.net).

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerbygroupsdefaultwordsinclude)TextCommentOperatorKeywordNameStringNumberPunctuationBlitzBasicLexerBlitzMaxLexerMonkeyLexerCbmBasicV2LexerQBasicLexerc                   @   s  e Zd ZdZdZddgZdgZdgZdZdZ	d	Z
d
Zdee	e
ef Zed ZejejB Zdefdefdejfdejfdejdfdejfdejfdejfdejfdejfde efdefdej fdej!fde e"e#j$eeej%fdeef e"e#j$ee#j&fee"ej'ee#j(eeeee#j(ej%ee#j(eefee"ej)ee#j(eeeee#j(ej%ee#j(fde e"e#j$eej%fde#j(fd e#j*fd!e#j+fe,d"d#d#d$ej-fe,d%d#d#d$e#j$fd&e ej)fgd'ejfd(ejd)fd*ejfgd+Z.d,S )-r   zY
    For `BlitzMax <http://blitzbasic.com>`_ source code.

    .. versionadded:: 1.4
    ZBlitzMaxZblitzmaxZbmaxz*.bmxz
text/x-bmxz\b(Shl|Shr|Sar|Mod)\bz@{1,2}|[!#$%]z&\b(Int|Byte|Short|Float|Double|Long)\b	[a-z_]\w*zp(%s)(?:(?:([ \t]*)(%s)|([ \t]*:[ \t]*\b(?:Shl|Shr|Sar|Mod)\b)|([ \t]*)(:)([ \t]*)(?:%s|(%s)))(?:([ \t]*)(Ptr))?)z?((?:[ \t]|\.\.\n)*)([(])[ \t]+z\.\.\nz'.*?\nz*([ \t]*)\bRem\n(\n|.)*?\s*\bEnd([ \t]*)Rem"string[0-9]+\.[0-9]*(?!\.)z\.[0-9]*(?!\.)[0-9]+\$[0-9a-f]+\%[10]+z9(?:(?:(:)?([ \t]*)(:?%s|([+\-*/&|~]))|Or|And|Not|[=<>^]))z[(),.:\[\]]z(?:#[\w \t]*)z(?:\?[\w \t]*)z\b(New)\b([ \t]?)([(]?)(%s)z+\b(Import|Framework|Module)([ \t]+)(%s\.%s)z\b(Type|Extends)([ \t]+)(%s)z	\b(Ptr)\bz#\b(Pi|True|False|Null|Self|Super)\bz\b(Local|Global|Const|Field)\b)ZTNullMethodExceptionZTNullFunctionExceptionZTNullObjectExceptionZTArrayBoundsExceptionZTRuntimeException\bprefixsuffix)EZStrictZSuperStrictZModule
ModuleInfoEndReturnZContinueExitZPublicZPrivateZVarZVarPtrChrLenAscZSizeOfSgnAbsZMinZMaxNewZReleaseDeleteZIncbinZ	IncbinPtrZ	IncbinLenZ	FrameworkIncludeZImportZExternZ	EndExternFunctionZEndFunctionTypeZEndTypeZExtendsZMethodZ	EndMethodZAbstractZFinalIfThenElseElseIfEndIfForToNextStepZEachInWhileWendZEndWhileRepeatUntilForeverSelectCaseDefaultZ	EndSelectZTryZCatchZEndTryZThrowZAssertGotoZDefDataZReadDataZRestoreDataz(%s)"""C?#pop[^"]+rootr   N)/__name__
__module____qualname____doc__namealiases	filenames	mimetypesZbmax_vopwordsZbmax_sktypesZbmax_lktypesZ	bmax_nameZbmax_varZ	bmax_funcre	MULTILINE
IGNORECASEflagsr   r   Single	Multiliner   Doubler   FloatIntegerHexBinr	   r   r   LabelPreprocr   r
   ReservedClass	Namespacer,   r-   VariableConstantDeclarationr   	Exceptiontokens rc   rc   7/usr/lib/python3/dist-packages/pygments/lexers/basic.pyr      s   

              =
c                   @   s  e Zd ZdZdZdddgZddgZdgZd	Zd
Z	de	ee	f Z
ejejB Zdefdejfdejdfdejfdejfdejfdejfdejfeddddefdefdefde	 ejfde	 eej eej!fde	 eej eejfde	 eeeeeej!fde
 eej"eej#eeeej!ee	fde
 eej eej"eej#eeeej!	fd e	 eej eej!fd!ej$fd"ej%fed#dddej fe
eej&eej#eeeej!fgd$ejfd%ejd&fd'ejfgd(Z'd)S )*r   z[
    For `BlitzBasic <http://blitzbasic.com>`_ source code.

    .. versionadded:: 2.0
    Z
BlitzBasicZ
blitzbasicZb3dZbplusz*.bbz*.declsz	text/x-bbz@{1,2}|[#$%]z[a-z]\w*z3(%s)(?:([ \t]*)(%s)|([ \t]*)([.])([ \t]*)(?:(%s)))?r   z;.*?\nr   r   r   \.[0-9]+(?!\.)r   r   r   )ZShlZShrZSarZModZOrZAndZNotr(   r'   ZHandleZIntrU   ZStrZFirstZLastZBeforeZAfterr   r   z([+\-*/~=<>^])z[(),:\[\]\\]z\.([ \t]*)(%s)z\b(New)\b([ \t]+)(%s)z\b(Gosub|Goto)\b([ \t]+)(%s)z'\b(Object)\b([ \t]*)([.])([ \t]*)(%s)\bz\b%s\b([ \t]*)(\()z\b(Function)\b([ \t]+)%sz\b(Type)([ \t]+)(%s)z\b(Pi|True|False|Null)\bz"\b(Local|Global|Const|Field|Dim)\b)#r!   r"   r#   r$   r%   r&   r)   r*   ZInsertr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   ZEachr7   r8   r9   r:   r;   r<   r=   r>   r?   ZGosubZDataZReadZRestorer@   rA   rB   rC   rD   N)(rF   rG   rH   rI   rJ   rK   rL   rM   Z
bb_sktypesZbb_nameZbb_varrN   rO   rP   rQ   r   r   rR   r   rT   r   rU   rV   rW   rX   r   r	   r   r   rY   r   r
   r[   r\   r,   r-   r_   r`   r^   rb   rc   rc   rc   rd   r   q   s   

        	   5
c                !   @   s  e Zd ZdZdZdgZdgZdgZdZdZ	dZ
dZd	Zd
ZdZejZdefdefdejdfdejfdejdfdejdfdejfdejfdejfdejfdejfde ejfdejfde j!fde j"fde j"j#fde j$fd e%ej&ee j&efd!ejfd"e%ej'edfd#e%ejed$fd%e%ejed&fd'ejfd(ejfd)ejfd*e(fd+e)fd,e)j*fd-e(fd.e
 e j$fd.e	 e j+fd.e e j,fg d/e	 e j+fd0e(d$fdefd1e(dfd2e(d3fgd4e e j&fd.e ejfd.e e j-fd5e%e(eejee(fd6ed3fd7e(d8fd9e(d3fd:ed3fe.d3g	d.e
 e j$fd.e e j,fd;e ejfdefd0e(d$fd<e(d8fe.d3gd=ejfd>ej/fdejd3fgd?ejd8fd@ejd3fd:ejfdAejfgdBZ0dCS )Dr   z
    For
    `Monkey <https://en.wikipedia.org/wiki/Monkey_(programming_language)>`_
    source code.

    .. versionadded:: 1.6
    ZMonkeyZmonkeyz*.monkeyztext/x-monkeyr   z[A-Z]\w*z[A-Z_][A-Z0-9_]*z
[a-z0-9_]*z+(?:Int|Float|String|Bool|Object|Array|Void)z[?%#$]\s+z'.*z(?i)^#rem\bcommentz6(?i)^(?:#If|#ElseIf|#Else|#EndIf|#End|#Print|#Error)\bz^#	variablesr   r   r   re   r   z\$[0-9a-fA-Z]+r   z\b%s\bz(?i)\b(?:Try|Catch|Throw)\bZ	Throwablez(?i)\b(?:Null|True|False)\bz(?i)\b(?:Self|Super)\bz\b(?:HOST|LANG|TARGET|CONFIG)\bz(?i)^(Import)(\s+)(.*)(\n)z(?i)^Strict\b.*\nz#(?i)(Const|Local|Global|Field)(\s+)z1(?i)(New|Class|Interface|Extends|Implements)(\s+)	classnamez(?i)(Function|Method)(\s+)funcnamezB(?i)(?:End|Return|Public|Private|Extern|Property|Final|Abstract)\bz(?i)(?:If|Then|Else|ElseIf|EndIf|Select|Case|Default|While|Wend|Repeat|Until|Forever|For|To|Until|Step|EachIn|Next|Exit|Continue)\s+z(?i)\b(?:Module|Inline)\bz[\[\]]z.<=|>=|<>|\*=|/=|\+=|-=|&=|~=|\|=|[-&*/^+=<>|~]z(?i)(?:Not|Mod|Shl|Shr|And|Or)z[(){}!#,.:]z%s\bz(?i)%s\b:z\(z\)rB   z%s\.z(\[)(\s*)(\d*)(\s*)(\])z\s+(?!<)<z#push>z\nz%s,z[^"~]+z~q|~n|~r|~t|~z|~~z(?i)^#rem.*?z(?i)^#end.*?z.+)rE   rj   ri   rh   r   rg   N)1rF   rG   rH   rI   rJ   rK   rL   rM   Zname_variableZname_functionZname_constantZ
name_classZname_moduleZkeyword_typeZkeyword_type_specialrN   rO   rQ   r   r   rS   rZ   r   rT   r   rU   rV   rW   rX   r
   r-   r[   r   ra   BuiltinZPseudor_   r   r]   r`   r   r	   Wordr,   r^   r\   r   ZEscaperb   rc   rc   rc   rd   r      s   




 
 
 <



c                   @   s   e Zd ZdZdZdgZdgZejZ	dde
jfdefdejfd	ejfd
ejfdefdejfdefdejfdefdefgiZdd ZdS )r   z>
    For CBM BASIC V2 sources.

    .. versionadded:: 1.6
    zCBM BASIC V2Zcbmbas*.basrE   zrem.*\nrf   znew|run|end|for|to|next|step|go(to|sub)?|on|return|stop|cont|if|then|input#?|read|wait|load|save|verify|poke|sys|print#?|list|clr|cmd|open|close|get#?zdata|restore|dim|let|def|fnzktab|spc|sgn|int|abs|usr|fre|pos|sqr|rnd|log|exp|cos|sin|tan|atn|peek|len|val|asc|(str|chr|left|right|mid)\$z
[-+*/^<>=]z
not|and|orz	"[^"\n]*.z\d+|[-+]?\d*\.\d*(e[-+]?\d+)?z[(),:;]z\w+[$%]?c                 C   s   t d|rdS d S )Nz\d+g?)rN   match)selftextrc   rc   rd   analyse_texta  s    zCbmBasicV2Lexer.analyse_textN)rF   rG   rH   rI   rJ   rK   rL   rN   rP   rQ   r   rR   r   r
   r[   r`   r   ro   r	   rp   r   r   rU   r   rb   ru   rc   rc   rc   rd   r   B  s0   c                   @   sT  e Zd ZdZdZddgZddgZdgZdZd	Z	d
Z
dZdZdZdefdejfdeejejejejfdeejejejfdejjfdejfdejfdeejejejfdeejejejejefdeejejejejejjfdeejejejjfdeejejjejefdeejejejfdeejejejfededededed ed!d"ejjfd#ejfd$ejfd%ejfd&ej j!fd&ej fd'efd(e"fd)ejjfgd*d+#e$e%j&e ejfgd*d+#e$e%j&e	 ejfgd*d+#e$e%j&e
 ej'fgd*d+#e$e%j&e ej(fgd,d+#e$e%j&e ejfgd,d+#e efgd-Z)d.d/ Z*d0S )1r   zm
    For
    `QBasic <http://en.wikipedia.org/wiki/QBasic>`_
    source code.

    .. versionadded:: 2.0
    ZQBasicZqbasicZbasicz*.BASrq   z
text/basic)DATALET)UZABSZASCZATNZCDBLzCHR$ZCINTZCLNGzCOMMAND$ZCOSZCSNGZCSRLINZCVDZCVDMBFZCVIZCVLZCVSZCVSMBFDATE$zENVIRON$ZEOFZERDEVzERDEV$ZERLZERRZEXPZFILEATTRZFIXZFREZFREEFILEzHEX$zINKEY$ZINPzINPUT$ZINSTRZINTzIOCTL$ZLBOUNDzLCASE$zLEFT$ZLENZLOCZLOFZLOGZLPOSzLTRIM$MID$zMKD$zMKDMBF$zMKI$zMKL$zMKS$zMKSMBF$zOCT$ZPEEKPENPLAYZPMAPZPOINTZPOSzRIGHT$ZRNDzRTRIM$ZSADDSCREENSEEKZSETMEMZSGNZSINzSPACE$ZSPCZSQRZSTICKzSTR$STRIGzSTRING$ZTABZTANTIME$TIMERZUBOUNDzUCASE$ZVALZVARPTRzVARPTR$ZVARSEG)$DYNAMICz$INCLUDE$STATIC)ZANDZEQVZIMPZNOTORZXOR)ZBEEPZBLOADZBSAVECALLzCALL ABSOLUTEzCALL INTERRUPTZCALLSZCHAINZCHDIRZCIRCLEZCLEARZCLOSEZCLSZCOLORZCOMZCOMMONZCONSTrv   rx   ZDECLAREzDEF FNzDEF SEGZDEFDBLZDEFINTZDEFLNGZDEFSNGZDEFSTRZDEFZDIMZDOLOOPZDRAWZENDZENVIRONZERASEZERRORZEXITZFIELDZFILESZFORNEXTZFUNCTIONZGETZGOSUBZGOTOZIFTHENZINPUTzINPUT #ZIOCTLKEYr   ZKILLrw   ZLINEz
LINE INPUTzLINE INPUT #ZLOCATEZLOCKUNLOCKZLPRINTZLSETry   ZMKDIRNAMEzON COMzON ERRORzON KEYzON PENzON PLAYzON STRIGzON TIMERz	ON UEVENTONZOPENzOPEN COMzOPTION BASEZOUTZPAINTZPALETTEZPCOPYrz   r{   ZPOKEZPRESETZPRINTzPRINT #zPRINT USINGZPSETPUTr   Z	RANDOMIZEZREADZREDIMZREMZRESETZRESTOREZRESUMEZRETURNZRMDIRZRSETZRUNr|   r}   zSELECT CASEZSHAREDZSHELLZSLEEPZSOUNDZSTATICZSTOPr~   ZSUBZSWAPZSYSTEMr   r   ZTROFFZTRONZTYPEZUEVENTr   ZVIEWZWAITZWHILEWENDZWIDTHZWINDOWZWRITE)#ZACCESSZALIASANYZAPPENDZASZBASEZBINARYZBYVALZCASEZCDECLZDOUBLEELSEZELSEIFZENDIFZINTEGERZISZLISTZLOCALZLONGr   ZMODr   ZOFFr   ZOUTPUTZRANDOMZSIGNALZSINGLEZSTEPSTRINGr   ZTOZUNTILZUSINGr   z\n+rf   z^(\s*)(\d*)(\s*)(REM .*)$z^(\s*)(\d+)(\s*)z(?=[\s]*)(\w+)(?=[\s]*=)z(?=[^"]*)\'.*$z	"[^\n"]*"z"(END)(\s+)(FUNCTION|IF|SELECT|SUB)z (DECLARE)(\s+)([A-Z]+)(\s+)(\S+)z (DIM)(\s+)(SHARED)(\s+)([^\s(]+)z(DIM)(\s+)([^\s(]+)z^(\s*)([a-zA-Z_]+)(\s*)(\=)z(GOTO|GOSUB)(\s+)(\w+\:?)z(SUB)(\s+)(\w+\:?)declarations	functionsmetacommands	operators
statementskeywordsz[a-zA-Z_]\w*[$@#&!]z[a-zA-Z_]\w*\:z\-?\d*\.\d+[@|#]?z\-?\d+[@|#]z\-?\d+#?z'!=|==|:=|\.=|<<|>>|[-~+/\\*%=<>&^|?:!.]z[\[\]{}(),;]z[\w]+z\b(%s)(?=\(|\b)|z\b(%s)\b)rE   r   r   r   r   r   r   c                 C   s   d| ksd| krdS d S )Nr   r   g?rc   )rt   rc   rc   rd   ru     s    zQBasicLexer.analyse_textN)+rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   r   r   r   r   
Whitespacer   r   rY   r   rR   r^   ZGlobalr   rT   r
   r[   r`   r	   r   r   rU   rV   ZLongr   joinmaprN   escaper_   rp   rb   ru   rc   rc   rc   rd   r   h  s   

  


/G)rI   rN   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   __all__r   r   r   r   r   rc   rc   rc   rd   <module>   s   
([O &