
    MhUm                     6   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 g dZ G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G 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                       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   Zej        ej        z  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,-          e#j0        f e/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.
    BlitzMaxhttp://blitzbasic.comblitzmax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)TNullMethodExceptionTNullFunctionExceptionTNullObjectExceptionTArrayBoundsExceptionTRuntimeException\bprefixsuffix)EStrictSuperStrictModule
ModuleInfoEndReturnContinueExitPublicPrivateVarVarPtrChrLenAscSizeOfSgnAbsMinMaxNewReleaseDeleteIncbin	IncbinPtr	IncbinLen	FrameworkIncludeImportExtern	EndExternFunctionEndFunctionTypeEndTypeExtendsMethod	EndMethodAbstractFinalIfThenElseElseIfEndIfForToNextStepEachInWhileWendEndWhileRepeatUntilForeverSelectCaseDefault	EndSelectTryCatchEndTryThrowAssertGotoDefDataReadDataRestoreData"""C?#popz[^"]+rootr#   N)2__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesversion_addedbmax_vopwordsbmax_sktypesbmax_lktypes	bmax_namebmax_var	bmax_funcre	MULTILINE
IGNORECASEflagsr   r   r   r   Single	Multiliner   Doubler   FloatIntegerHexBinr   r   r   LabelPreprocr
   ReservedClass	NamespacerR   rT   VariableConstantDeclarationr   	Exceptiontokens     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/lexers/basic.pyr   r      s6         D
!C6"G	IIM,M#L<LI]Y ] ] ] ]+7] ];D] ] ]H77IL2=(E Z HHT:667':G<MN&-*$fl3-'VZ($WmWWWYab[)tz*05555Xg&
KLLNNYNN)NNNXg&
G4EFFH
GL!):{J!(tz:!(z;H H I xxz7< *KW\ $
JF F G 7)666Xg&
DJ??A 7<(3W5EF.0CDU % .35B B B DH>S U  (-U< < <  ).q9
v FM"V]F+v}%
w@ @FFFr   r   c                   p   e Zd ZdZdZdZg d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        z  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          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          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 source code.
    
BlitzBasicr   )
blitzbasicb3d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'   )ShlShrSarModOrAndNotrD   rC   HandleIntr   StrFirstLastBeforeAfterr/   r0   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)#r7   r8   r:   r?   r@   rA   rG   rI   InsertrN   rR   rT   r[   r\   r]   r^   r_   r`   ra   rb   rc   Eachre   rf   rh   ri   rj   rk   rl   rm   rt   GosubDataReadRestorerx   ry   rz   [^"\n]+r{   N)*r}   r~   r   r   r   r   r   r   r   r   
bb_sktypesbb_namebb_varr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   rR   rT   r   r   r   r   r   r   r   r   r   o   s          D
!C,,,G#IIM JG]7]]]]PW]]]FL2=(E Z '&-*$fl3-'VZ($U 8  / / / 	
 )k*&G&&&
3-7---Xg&
DJ??A4'444Xg&
DJ??A?7???Xh
KTZPPR)6)))XdmZz; $*j+G GH 0v//Xg&
DM:w| +z4:G GH -',,,Xg&
DJ??A )'*:;2G4GHU <
 EJRWY Y Y  XXdmZ(+z4:O O Pc3
j FM"V]F+'
k: :FFFr   r   c                      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g 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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d6 e'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j1        f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.
    Monkey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$   r   r%   z\$[0-9a-fA-Z]+r'   r/   z(?i)\b(?:Try|Catch|Throw)\b	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\)rz   r)   z(\[)(\s*)(\d*)(\s*)(\])z\s+(?!<)<z#push>\n,z[^"~]+z~q|~n|~r|~t|~z|~~z(?i)^#rem.*?z(?i)^#end.*?z.+)r|   r   r   r   r#   r   N)3r}   r~   r   r   r   r   r   r   r   r   name_variablename_functionname_constant
name_classname_modulekeyword_typekeyword_type_specialr   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   rT   r   r   r   BuiltinPseudor   r   r   r   r   r   WordrR   r   r   r   Escaper   r   r   r   r   r      s         DjGI !I
1CM MM'MJKAL$LE:
Z :
 W	:

 W.	::
 GX:
 GO[1:
 &-*:
 %fl3:
 -:
 ':
  
+!:
" $#:
& $<###W\2':
* ,W-=>+:
, 4>*-:
0 ,T\:1:
2 '(;<3:
4 0?5:
8 +Xg'T^ZPPR9:
< "7#34=:
> 4Xg):66E?:
B BXg&
33[BC:
F +Xg&
33ZAG:
J"#*#35K:
P%
 '.&68Q:
^ *7+;<_:
b $c:
f ?Ig:
h />i:
j [)k:
n """DM2o:
p """DM2q:
r """DM2s:
x ']&&&6;,Z K-K(
    $.1!!!7<0,'Xk:v~z;WWY *f-;(;'J'GFOO
 """DM2"""DM2%'6Z ;,;(GFOO
 &!6=16=&)
 g/9g/8G%&G%&	
e eFFFr   r   c                       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 ZdS )r   z#
    For CBM BASIC V2 sources.
    zCBM BASIC V2cbmbas*.basz-https://en.wikipedia.org/wiki/Commodore_BASICr   r|   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                 4    t          j        d|           rdS d S )Nz^\d+g?)r   matchtexts    r   analyse_textzCbmBasicV2Lexer.analyse_text\  s'     8GT"" 	3	 	r   N)r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   =  s          DjG	I
9CMME 	(Z /070@B ,W-@A=>BlLH%HM*6"-v|<%$
F&    r   r   c                      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,d0 Z-d1S )2r   z!
    For QBasic source code.
    QBasicqbasicbasicz*.BASr   z
text/basicz$https://en.wikipedia.org/wiki/QBasicr   )DATALET)UABSASCATNCDBLCHR$CINTCLNGzCOMMAND$COSCSNGCSRLINCVDCVDMBFCVICVLCVSCVSMBFDATE$zENVIRON$EOFERDEVzERDEV$ERLERREXPFILEATTRFIXFREFREEFILEzHEX$INKEY$INPzINPUT$INSTRINTzIOCTL$LBOUNDzLCASE$LEFT$LENLOCLOFLOGLPOSzLTRIM$MID$zMKD$zMKDMBF$zMKI$zMKL$zMKS$zMKSMBF$zOCT$PEEKPENPLAYPMAPPOINTPOSRIGHT$RNDzRTRIM$SADDSCREENSEEKSETMEMSGNSINzSPACE$SPCSQRSTICKSTR$STRIGSTRING$TABTANTIME$TIMERUBOUNDzUCASE$VALVARPTRzVARPTR$VARSEG)$DYNAMICz$INCLUDE$STATIC)ANDEQVIMPNOTORXOR)BEEPBLOADBSAVECALLzCALL ABSOLUTEzCALL INTERRUPTCALLSCHAINCHDIRCIRCLECLEARCLOSECLSCOLORCOMCOMMONCONSTr   r   DECLAREzDEF FNzDEF SEGDEFDBLDEFINTDEFLNGDEFSNGDEFSTRDEFDIMDOLOOPDRAWENDENVIRONERASEERROREXITFIELDFILESFORNEXTFUNCTIONGETGOSUBGOTOIFTHENINPUTzINPUT #IOCTLKEYr`  KILLr   LINEz
LINE INPUTzLINE INPUT #LOCATELOCKUNLOCKLPRINTLSETr  MKDIRNAMEzON COMzON ERRORzON KEYzON PENzON PLAYzON STRIGzON TIMERz	ON UEVENTONOPENzOPEN COMzOPTION BASEOUTPAINTPALETTEPCOPYr  r  POKEPRESETPRINTzPRINT #zPRINT USINGPSETPUTrt  	RANDOMIZEREADREDIMREMRESETRESTORERESUMERETURNRMDIRRSETRUNr  r  zSELECT CASESHAREDSHELLSLEEPSOUNDSTATICSTOPr#  SUBSWAPSYSTEMr'  r(  TROFFTRONTYPEUEVENTre  VIEWWAITWHILEWENDWIDTHWINDOWWRITE)#ACCESSALIASANYAPPENDASBASEBINARYBYVALCASECDECLDOUBLEELSEELSEIFENDIFINTEGERISLISTLOCALLONGrM  MODrW  OFFrj  OUTPUTRANDOMSIGNALSINGLESTEPSTRINGr]  TOUNTIL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)r|   r  r  r  r  r  r  c                     d| v sd| v rdS d S )Nr-  r.  ?r   r   s    r   r   zQBasicLexer.analyse_text  s$    d!2!23 "3!2r   N).r}   r~   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r   Globalr   r   r
   r   r   r   r   r   r   r   Longr   formatjoinmapr   escaper   r   r   r   r   r   r   r   r   c  s)         D!G'"II
0CM"LI  7L9IJ.H TNT_%)Xdotz4?n& &' !Xdotz4?CCE($-*>?/6=)2Xg&9IJJL0Xg)4?DMot- -. 1Xg)4?DMot}';= => $Xg)4?DM<PQQS+Xdot}';T_   ! *Xg&DDF"Xg&DDFGN##GK  GN##GK  GL!!GJ#T]%9:
+!6<0V\*&.-.&.)7Bk*t}+,U+
^  &&sxxBI|0L0L'M'MNN "

  &&sxxBIy0I0I'J'JKK

  &&sxxBI|0L0L'M'MNN

  &&sxxBIy0I0I'J'JKKX][
 RY
)C)C D DEE

  2 233W=
EE EFN    r   r   c                      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          ef eej!                  e"f eej#        d          e"j$        f eej%        d          ej        f eej&        d          ej'        f eej(        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.
    VBScript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/   )r2   z[a-z_][a-z0-9_]*z\b_\nz(),.:z.+(\n)?z(\s*)(,)(\s*)([a-z_][a-z0-9]*)rz   r   z\"\"r   )r|   r  r#   N)-r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   rR   r   r   Propertyr   r   KEYWORDS	OPERATORSr   OPERATOR_WORDSr   BUILTIN_CONSTANTSBUILTIN_FUNCTIONSr   BUILTIN_VARIABLESr   r	   r   r   r   r   r   r   r     s         DlG'"I
QCMME (Z &-*FJ'-v|<'6"FL1'V,Xg):t}EEzS5Xg):t}EEG.Xg):tzBBD.Xg):t}EEG?Xgz73353Xgz7JU[Ucddf8Xgz7JU\]]_'':w)O)OPCXg):w7JJX\Xeffhw~.U%.u===wGU%/00(;U%4UCCCX]SU%7FFFVU%7FFFUU%7FFFU $'x U8__k*M'
R /Xj+z4=IIKGFOO
 'fm$6=&)E6"	
]4 4FFFr   r   c                   r   e Zd ZdZg dZg dZdZdgZdgZdZ	dZ
d	ej        fd
 eej        ej                  f ed          gd eej        ej                  fdedfdefdej        fd eej        eej        ej                  fd eeej                  fd eeeej                  fdej        fdej        f ee          ef ee          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j         fdej!        fde"fgd ej        fdej        d!fde#dfgd"Z$d# Z%d$S )%r   zy
    BBC Basic was supplied on the BBC Micro, and later Acorn RISC OS.
    It is also used by BBC Basic For Windows.
    )w	OTHERWISEr/  DIVEORr  r3  rR  rb  r  r  r  r%  r  r]  OPENINPTRPAGETIMELOMEMHIMEMr   ACSADVALr   ASNr   BGETr   COUNTDEGr   r   EVALr   EXTFALSEFNrY  INKEYr  r  r  LNr  r2  OPENUPOPENOUTPIr  r  RADr  r  r  r   r&  r  TRUEUSRr*  VPOSr   zGET$r  r
  r  r  r"  r$  r   r  r  r  r  r  r  BPUTr8  r:  r=  r>  CLGr?  r   rJ  rK  rN  rO  ENDPROCENVELOPErV  rZ  r[  GCOLr\  r^  r   r  MODEMOVErW  rj  VDUPLOTrr  PROCrv  rx  REPEATREPORTrz  r|  r  r  COLOURTRACEr  r  OSCLI)/WHENOFENDCASEr  ENDWHILEr  r<  FILLORIGINr  	RECTANGLEr  r  r  MOUSEQUITSYSINSTALLLIBRARYTINTELLIPSEBEATSTEMPOVOICESVOICESTEREOOVERLAYr  AUTOCRUNCHDELETEEDITHELPr  LOADLVARNEWOLDRENUMBERSAVETEXTLOADTEXTSAVETWINTWINOr  SUMBEATz	BBC Basicbbcbasicz*.bbcz(https://www.bbcbasic.co.uk/bbcbasic.htmlr  r%   z(\*)([^\n]*)codez(REM)([^\n]*)r   r|   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([+\-]=|[$!|?+\-*/%^=><();]|>=|<=|<>|<<|>>|>>>|,)r   rz   )r|   r  r#   c                 ^    |                      d          s|                      d          rdS d S )Nz10REM >zREM >r  )
startswithr   s    r   r   zBBCBasicLexer.analyse_text  s8    ??9%% 	)A)A 	3	 	r   N)&r}   r~   r   r   base_keywordsbasic5_keywordsr   r   r   r   r   r   r   r   r
   r   r   Specialr   r   r   r   r   rR   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   3  s        9 9 9M$B B BO DlG	I
4CM 
#Xgngo668GFOO	
 Xg)7>::<J'Z 7?# 6Xg):)4=: :; ,Xgt}--/ 4Xgz4:668 g./N^ U=!!7+U?##W-&-*FJ'vz*2FLA,fl;'6&.)'7A8LG$
L '6=&)E6"
[2 2Fh    r   r   )r   r   pygments.lexerr   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   r   pygments.lexersr   __all__r   r   r   r   r   r   r   r   r   r   <module>r)     sG    
			 H H H H H H H H H H H H H H4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 . . . . . .< < <U U U U UJ U U UpK K K K Kj K K K\} } } } }* } } }@# # # # #j # # #LJ J J J J* J J JZ@ @ @ @ @J @ @ @F] ] ] ] ]J ] ] ] ] ]r   