U
    ]gUm                     @   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mZmZ ddlmZ 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dS )z
    pygments.lexers.basic
    ~~~~~~~~~~~~~~~~~~~~~

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

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerbygroupsdefaultwordsinclude)
CommentErrorKeywordNameNumberPunctuationOperatorStringText
Whitespace)_vbscript_builtinsBlitzBasicLexerBlitzMaxLexerMonkeyLexerCbmBasicV2LexerQBasicLexerVBScriptLexerBBCBasicLexerc                   @   s  e Zd 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Zde de de de d	Zed ZejejB Zdefdee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
 de!fd e"fd!e#j$fd"ej%fd#e d$ee&j'ee"e#j(fd%e d&e d$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 d$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#j0fe/d.d,d,d-e&j'fde d$e#j,fgd/ejfd0ejd1fd2ejfgd3Z1d4S )5r   z#
    For BlitzMax source code.
    ZBlitzMaxhttp://blitzbasic.comZblitzmaxZbmaxz*.bmxz
text/x-bmxz1.4z\b(Shl|Shr|Sar|Mod)\bz@{1,2}|[!#$%]z&\b(Int|Byte|Short|Float|Double|Long)\b	[a-z_]\w*(z)(?:(?:([ \t]*)(z?)|([ \t]*:[ \t]*\b(?:Shl|Shr|Sar|Mod)\b)|([ \t]*)(:)([ \t]*)(?:z|(z)))(?:([ \t]*)(Ptr))?)z?((?:[ \t]|\.\.\n)*)([(])\s+z
(\.\.)(\n)z'.*?\nz*([ \t]*)\bRem\n(\n|.)*?\s*\bEnd([ \t]*)Rem"string[0-9]+\.[0-9]*(?!\.)z\.[0-9]*(?!\.)[0-9]+\$[0-9a-f]+\%[10]+z(?:(?:(:)?([ \t]*)(:?z"|([+\-*/&|~]))|Or|And|Not|[=<>^]))z[(),.:\[\]]z(?:#[\w \t]*)z(?:\?[\w \t]*)z\b(New)\b([ \t]?)([(]?)()z$\b(Import|Framework|Module)([ \t]+)(\.z\b(Type|Extends)([ \t]+)(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SuperStrictModule
ModuleInfoEndReturn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Abstract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RestoreData"""C?#popz[^"]+rootr   N)2__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesversion_addedZbmax_vopwordsZbmax_sktypesZbmax_lktypesZ	bmax_nameZbmax_varZ	bmax_funcre	MULTILINE
IGNORECASEflagsr   r   r   r   Single	Multiliner   Doubler   FloatIntegerHexBinr   r   r
   LabelPreprocr	   ReservedClass	Namespacer7   r8   VariableConstantDeclarationr   	Exceptiontokens rp   rp   9/tmp/pip-unpacked-wheel-zak7uw41/pygments/lexers/basic.pyr      s   

            
  ;
c                   @   s  e Zd ZdZdZdZdddgZddgZd	gZd
Z	dZ
dZde de
 de d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 d ejfd!e d e e!j"eej#fd"e d e e!j"eejfd#e d$e eeeeej#fde d%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 d 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)d0S )1r   z%
    For BlitzBasic source code.
    Z
BlitzBasicr   Z
blitzbasicZb3dZbplusz*.bbz*.declsz	text/x-bb2.0z@{1,2}|[#$%]z[a-z]\w*r   z)(?:([ \t]*)(z)|([ \t]*)([.])([ \t]*)(?:(z)))?r   z;.*?\nr   r   r   \.[0-9]+(?!\.)r    r!   r"   )ZShlZShrZSarZModOrAndZNotr3   r2   HandleZIntrb   ZStrZFirstZLastZBeforeZAfterr%   r&   z([+\-*/~=<>^])z[(),:\[\]\\]z\.([ \t]*)(r#   z\b(New)\b([ \t]+)(z\b(Gosub|Goto)\b([ \t]+)(z"\b(Object)\b([ \t]*)([.])([ \t]*)(z)\bz\b([ \t]*)(\()z\b(Function)\b([ \t]+)z\b(Type)([ \t]+)(z\b(Pi|True|False|Null)\bz"\b(Local|Global|Const|Field|Dim)\b)#r+   r,   r.   r/   r0   r1   r4   r5   ZInsertr6   r7   r8   r:   r;   r<   r=   r>   r?   r@   rA   rB   EachrC   rD   rE   rF   rG   rH   rI   rJ   rK   ZGosubDataZReadZRestorerL   rM   rN   [^"\n]+rO   N)*rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   Z
bb_sktypesZbb_nameZbb_varr[   r\   r]   r^   r   r   r_   r   ra   r   rb   rc   rd   re   r   r   r   r
   rf   r   r	   rh   ri   r7   r8   rl   rm   rk   ro   rp   rp   rp   rq   r   o   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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 d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e de"j&fe de"j-fe
 de"j.fg d0e de"j-fd1e*d&fdefd2e*dfd3e*d4fge d5e"j(fe dej fe de"j/fd6e'e*eejee*fd7ed4fd8e*d9fd:e*d4fd;ed4fe0d4g	e de"j&fe
 de"j.fe ej fdefd1e*d&fd<e*d9fe0d4gd=ejfd>ej1fdejd4fgd?ejd9fd@ejd4fd;ejfdAejfgdBZ2dCS )Dr   z!
    For Monkey source code.
    ZMonkeyZmonkeyz*.monkeyztext/x-monkeyz%https://blitzresearch.itch.io/monkeyx1.6r   z[A-Z]\w*z[A-Z_][A-Z0-9_]*z
[a-z0-9_]*z+(?:Int|Float|String|Bool|Object|Array|Void)z[?%#$]r   z'.*z(?i)^#rem\bcommentz6(?i)^(?:#If|#ElseIf|#Else|#EndIf|#End|#Print|#Error)\bz^#	variablesr   r   r   rs   r    z\$[0-9a-fA-Z]+r"   r%   z(?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(?i):z\(z\)rN   r$   z(\[)(\s*)(\d*)(\s*)(\])z\s+(?!<)<z#push>\n,z[^"~]+z~q|~n|~r|~t|~z|~~z(?i)^#rem.*?z(?i)^#end.*?z.+)rP   r~   r}   r|   r   r{   N)3rQ   rR   rS   rT   rU   rW   rX   rY   rV   rZ   Zname_variableZname_functionZname_constantZ
name_classZname_moduleZkeyword_typeZkeyword_type_specialr[   r\   r^   r   r   r`   rg   r   ra   r   rb   rc   rd   re   r	   r8   rh   r
   rn   BuiltinPseudorl   r   rj   rm   r   r   Wordr7   rk   ri   r   ZEscapero   rp   rp   rp   rq   r      s   




 
 
 <




c                   @   s   e Zd ZdZdZdgZdgZdZd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.
    zCBM BASIC V2Zcbmbas*.basz-https://en.wikipedia.org/wiki/Commodore_BASICrz   rP   zrem.*\nr   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?)r[   matchtextrp   rp   rq   analyse_text\  s    zCbmBasicV2Lexer.analyse_textN)rQ   rR   rS   rT   rU   rW   rX   rV   rZ   r[   r]   r^   r   r_   r   r	   rh   rm   r
   r   r   r   r   r   rb   r   ro   r   rp   rp   rp   rq   r   =  s4   c                   @   sh  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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,d0d1 Z-d2S )3r   z!
    For QBasic source code.
    ZQBasicZqbasicbasicz*.BASr   z
text/basicz$https://en.wikipedia.org/wiki/QBasicrr   )DATALET)UABSASCATNZCDBLCHR$ZCINTZCLNGzCOMMAND$COSZCSNGZCSRLINZCVDZCVDMBFZCVIZCVLZCVSZCVSMBFDATE$zENVIRON$EOFZERDEVzERDEV$ERLERREXPZFILEATTRZFIXZFREZFREEFILEzHEX$INKEY$ZINPzINPUT$INSTRINTzIOCTL$ZLBOUNDzLCASE$LEFT$LENZLOCZLOFLOGZLPOSzLTRIM$MID$zMKD$zMKDMBF$zMKI$zMKL$zMKS$zMKSMBF$zOCT$ZPEEKPENPLAYZPMAPPOINTPOSRIGHT$RNDzRTRIM$ZSADDSCREENSEEKZSETMEMSGNSINzSPACE$SPCSQRZSTICKSTR$STRIGSTRING$TABTANTIME$TIMERZUBOUNDzUCASE$VALZVARPTRzVARPTR$ZVARSEG)$DYNAMICz$INCLUDE$STATIC)ANDZEQVZIMPNOTORZXOR)ZBEEPZBLOADZBSAVECALLzCALL ABSOLUTEzCALL INTERRUPTZCALLSCHAINZCHDIRCIRCLECLEARCLOSECLSZCOLORZCOMZCOMMONZCONSTr   r   ZDECLAREzDEF FNzDEF SEGZDEFDBLZDEFINTZDEFLNGZDEFSNGZDEFSTRDEFDIMZDOLOOPDRAWENDZENVIRONZERASEERRORZEXITZFIELDZFILESFORNEXTZFUNCTIONGETGOSUBGOTOIFTHENINPUTzINPUT #ZIOCTLKEYr   ZKILLr   LINEz
LINE INPUTzLINE INPUT #ZLOCATEZLOCKUNLOCKZLPRINTZLSETr   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PCOPYr   r   ZPOKEZPRESETPRINTzPRINT #zPRINT USINGZPSETPUTr   Z	RANDOMIZEREADZREDIMREMRESETRESTORERESUMERETURNZRMDIRZRSETRUNr   r   zSELECT CASEZSHAREDSHELLZSLEEPSOUNDZSTATICSTOPr   ZSUBSWAPZSYSTEMr   r   ZTROFFZTRONZTYPEZUEVENTr   ZVIEWWAITWHILEWENDWIDTHZWINDOWWRITE)#ZACCESSZALIASANYAPPENDZASZBASEZBINARYZBYVALCASEZCDECLZDOUBLEELSEZELSEIFENDIFZINTEGERZISLISTLOCALLONGr   MODr   OFFr   ZOUTPUTZRANDOMZSIGNALZSINGLESTEPSTRINGr   TOUNTILZUSINGr   z\n+r   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({})(?=\(|\b)|z\b({})\b)rP   r   r   r   r   r   r   c                 C   s   d| ksd| krdS d S )Nr   r   ?rp   r   rp   rp   rq   r     s    zQBasicLexer.analyse_textN).rQ   rR   rS   rT   rU   rW   rX   rY   rV   rZ   r   r   r   r   r   r   r   r   r   r
   rf   r   r_   rk   ZGlobalr   ra   r	   rh   rm   r   r   r   rb   rc   ZLongr   formatjoinmapr[   escaperl   r   ro   r   rp   rp   rp   rq   r   c  s   

  


/Gc                   @   s  e Zd ZdZdZdgZddgZdZdZe	j
Zdejfd	e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fdeeje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deeeefdeeeeeeeejfdeeeeeeeefdeeeefdeejeejeejfdejfeej ddefeej!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ej'fdefd e"fed!e)fd"e*fgd#eee)eejfe+d$gd%ejfd&ejfd
ejd$fd'e*d$fgd(Z,d)S )*r   zI
    VBScript is scripting language that is modeled on Visual Basic.
    ZVBScriptZvbscriptz*.vbsz*.VBSzEhttps://learn.microsoft.com/en-us/previous-versions/t0aew7h6(v=vs.85)2.4z'[^\n]*r   r   r   z&h[0-9a-f]+z[0-9]+\.[0-9]*(e[+-]?[0-9]+)?z\.[0-9]+(e[+-]?[0-9]+)?z[0-9]+e[+-]?[0-9]+r    z#.+#z(dim)(\s+)([a-z_][a-z0-9_]*)dim_morez%(function|sub)(\s+)([a-z_][a-z0-9_]*)z(class)(\s+)([a-z_][a-z0-9_]*)z(const)(\s+)([a-z_][a-z0-9_]*)z/(end)(\s+)(class|function|if|property|sub|with)z#(on)(\s+)(error)(\s+)(goto)(\s+)(0)z((on)(\s+)(error)(\s+)(resume)(\s+)(next)z(option)(\s+)(explicit)z3(property)(\s+)(get|let|set)(\s+)([a-z_][a-z0-9_]*)zrem\s.*[^\n]*r%   )r(   z[a-z_][a-z0-9_]*z\b_\nz(),.:z.+(\n)?z(\s*)(,)(\s*)([a-z_][a-z0-9]*)rN   ry   z\"\"r   )rP   r   r   N)-rQ   rR   rS   rT   rU   rW   rX   rV   rZ   r[   r]   r^   r   r_   r   r   ra   r   rd   rb   rc   r   r	   rm   r
   rk   r7   ri   rl   ZPropertyr   r   ZKEYWORDSZ	OPERATORSr   ZOPERATOR_WORDSr   ZBUILTIN_CONSTANTSZBUILTIN_FUNCTIONSr   ZBUILTIN_VARIABLESr   r   r   ro   rp   rp   rp   rq   r     s   
 

)
c                w   @   s  e Zd ZdZdddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGddddddHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsgwZdtdudvdwdxdydzd{d|d2d}d~dddddddddddddddddddddddddddddddddddg/ZdZdgZdgZdZ	dZ
dejfdeejejfedgdeejejfdedfdefdejfdeejeejejfdeeejfdeeeejfdejfdejfeeefeeefdejdfdejfdejfdejfdejfdejfdej fdej!fde"fgdejfdejdfde#dfgdZ$dd Z%dS )r   zy
    BBC Basic was supplied on the BBC Micro, and later Acorn RISC OS.
    It is also used by BBC Basic For Windows.
    Z	OTHERWISEr   ZDIVZEORr   r   r   r   r   r   r   r   r   r   ZOPENINZPTRZPAGEZTIMEZLOMEMZHIMEMr   ZACSZADVALr   ZASNr   ZBGETr   ZCOUNTZDEGr   r   ZEVALr   ZEXTFALSEZFNr   ZINKEYr   r   r   LNr   r   ZOPENUPZOPENOUTPIr   r   ZRADr   r   r   r   r   r   TRUEZUSRr   ZVPOSr   zGET$r   r   r   r   r   r   r   r   ZBPUTr   r   r   r   ZCLGr   r   r   r   r   r   ZENDPROCZENVELOPEr   r   r   ZGCOLr   r   r   r   ZMODEZMOVEr   r   ZVDUZPLOTr   ZPROCr   r   REPEATZREPORTr   r   r   r   ZCOLOURTRACEr   r   ZOSCLIZWHENZOFZENDCASEr   ZENDWHILEr   r   ZFILLZORIGINZ	RECTANGLEr   r   r   ZMOUSEZQUITZSYSINSTALLLIBRARYZTINTZELLIPSEZBEATSZTEMPOZVOICESZVOICEZSTEREOZOVERLAYr   AUTOZCRUNCHDELETEZEDITZHELPr   ZLOADZLVARZNEWZOLDZRENUMBERZSAVEZTEXTLOADZTEXTSAVEZTWINZTWINOZSUMZBEATz	BBC BasicZbbcbasicz*.bbcz(https://www.bbcbasic.co.uk/bbcbasic.htmlr   r    z(\*)([^\n]*)codez(REM)([^\n]*)r   rP   r   r   z%(DEF)(\s*)(FN|PROC)([A-Za-z_@][\w@]*)z(FN|PROC)([A-Za-z_@][\w@]*)z#(GOTO|GOSUB|THEN|RESTORE)(\s*)(\d+)z(TRUE|FALSE)z>(PAGE|LOMEM|HIMEM|TIME|WIDTH|ERL|ERR|REPORT\$|POS|VPOS|VOICES)r   r   z%[01]{1,32}z&[0-9a-f]{1,8}z"[+-]?[0-9]+\.[0-9]*(E[+-]?[0-9]+)?z[+-]?\.[0-9]+(E[+-]?[0-9]+)?z[+-]?[0-9]+E[+-]?[0-9]+z[+-]?\d+z([A-Za-z_@][\w@]*[%$]?)z1([+\-]=|[$!|?+\-*/%^=><();]|>=|<=|<>|<<|>>|>>>|,)ry   rN   )rP   r
  r   c                 C   s   |  ds|  drdS d S )Nz10REM >zREM >r   )
startswithr   rp   rp   rq   r     s    zBBCBasicLexer.analyse_textN)&rQ   rR   rS   rT   Zbase_keywordsZbasic5_keywordsrU   rW   rX   rV   rZ   r
   rf   r   r	   r   r   Specialr   rm   r_   r   rg   r7   rl   r   r   ra   r   re   rd   rb   rc   rk   r   r   ro   r   rp   rp   rp   rq   r   3  s                                                                                                                                    
 



&
4)rT   r[   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   Zpygments.lexersr   __all__r   r   r   r   r   r   r   rp   rp   rp   rq   <module>   s$   
0  XN & C