
    |em                     
   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y)z
    pygments.lexers.basic
    ~~~~~~~~~~~~~~~~~~~~~

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

    :copyright: Copyright 2006-2023 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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j0                  fdej4                  dfdej8                  fdej8                  fdej:                  fdej<                  fdej>                  fde	z  e fde!fde"jF                  fd ejH                  fd!ez   ee%jL                  ee!e"jN                        fd"ed#ed$ ee%jL                  ee%jP                        fe ee"jR                  ee%jT                  e ee!ee%jT                  e"jN                  ee%jT                  ee!      fe ee"jV                  ee%jT                  e ee!ee%jT                  e"jN                  ee%jT                        fd%ez   ee%jL                  ee"jN                        fd&e%jT                  fd'e%jX                  fd(e%jZ                  f e.d)d*d*+      e"j^                  f e.d,d*d*+      e%jL                  fd-ez  e"jV                  fgd.ej4                  fd/ej4                  d0fd1ej4                  fgd2Z0y3)4r   z>
    For BlitzMax source code.

    .. versionadded:: 1.4
    BlitzMaxhttp://blitzbasic.comblitzmax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*(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]+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]+)(z\.)z\b(Type|Extends)([ \t]+)(%s)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RestoreDataz(%s)"""C?#popz[^"]+rootr#   N)1__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypes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	NamespacerQ   rS   VariableConstantDeclarationr   	Exceptiontokens     7/usr/lib/python3/dist-packages/pygments/lexers/basic.pyr   r      s    D
!C6"G	II,M#L<LI 
L,	;H 77ILL2==(E Z HT:67':G<M<MN&--*$fll3-'VZZ($I&([)tzz*0+y9g&&
KLN $g&&
G4E4EFH 
GLL!):{J!(tzz:!(z;H I xz7<< *KW\\ $

JF G -	:g&&
DJJ?A 7<<(3W5E5EF.0C0CD % .35B DH>>S   (-U<  	"DMM2u;
z FMM"V]]F+v}}%
{BFr   r   c                   r   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
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j0                  fdej2                  f eddd      efdefdefde
z  ej<                  fde
z   ee jB                  eejD                        fde
z   ee jB                  eej<                        fde
z   eeeeeejD                        fd ez   eejF                  ee jH                  eeeejD                  ee	      fd!ez   ee jB                  eejF                  ee jH                  eeeejD                  	      fd"e
z   ee jB                  eejD                        fd#e jJ                  fd$e jL                  f ed%dd      e jB                  fe eejN                  ee jH                  eeeejD                        fgd&ej(                  fd'ej(                  d(fd)ej(                  fgd*Z(y+),r   z@
    For BlitzBasic source code.

    .. versionadded:: 2.0
    
BlitzBasicr   )
blitzbasicb3dbplusz*.bbz*.declsz	text/x-bbz@{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NotrC   rB   HandleIntr   StrFirstLastBefore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)#r6   r7   r9   r>   r?   r@   rF   rH   InsertrM   rQ   rS   rZ   r[   r\   r]   r^   r_   r`   ra   rb   Eachrd   re   rg   rh   ri   rj   rk   rl   rs   GosubDataReadRestorerw   rx   ry   [^"\n]+rz   N))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   rQ   rS   r   r   r   r   r   r   r   r   r   s   s    D
!C,G#II JGz7,F LL2==(E Z '&--*$fll3-'VZZ($ 8  / 	
 )k*($**5%1g&&
DJJ?A,8g&&
DJJ?A77Ch
KTZZPR"V+dmmZz; $**j+GH )61g&&
DMM:w|| +z4::GH %0g&&
DJJ?A )'*:*:;2G4G4GH <
 EJRWY  XdmmZ(+z4::O Pc3
j FMM"V]]F+'
k:Fr   r   c                   J   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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j2                  fdej2                  fdej4                  fdej6                  fdej8                  fdez  ej<                  fdej>                  fde jB                  fde jD                  fde jD                  jF                  fde jH                  fd  e%ejL                  ee jL                  e      fd!ej>                  fd" e%ejN                  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)jT                  fd-e(fd.e
z  e jH                  fd.e	z  e jV                  fd.ez  e jX                  fd/e	z  e jV                  fd0e(d$fdefd1e(dfd2e(d3fgd4ez  e jL                  fd.ez  ej<                  fd.ez  e jZ                  fd5 e%e(eej4                  ee(      fd6ed3fd7e(d8fd9e(d3fd:ed3f e.d3      g	d.e
z  e jH                  fd.ez  e jX                  fd;ez  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Z0yC)Dr   z
    For
    `Monkey <https://en.wikipedia.org/wiki/Monkey_(programming_language)>`_
    source code.

    .. versionadded:: 1.6
    Monkey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[?%#$]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'   z\b%s\bz(?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%s\bz(?i)%s\b:z\(z\)ry   z%s\.z(\[)(\s*)(\d*)(\s*)(\])z\s+(?!<)<z#push>\nz%s,z[^"~]+z~q|~n|~r|~t|~z|~~z(?i)^#rem.*?z(?i)^#end.*?z.+)r{   r   r   r   r#   r   N)1r|   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
   rS   r   r   r   BuiltinPseudor   r   r   r   r   r   WordrQ   r   r   r   Escaper   r   r   r   r   r      s    DjGI !I MM'MJKAL$LLE:
Z :
 W	:

 W..	::
 GX:
 GOO[1:
 &--*:
 %fll3:
 -:
 ':
  

+!:
" $#:
& %w||4':
* ,W-=-=>+:
, 4>>*-:
0 ,T\\:1:
2 '(;(;<3:
4 0?5:
8 +g''T^^ZPR9:
< "7#3#34=:
> 4g)):6E?:
B Bg&&
3[BC:
F +g&&
3ZAG:
J"#*#3#35K:
P%
 '.&6&68Q:
^ *7+;+;<_:
b $c:
f ?Ig:
h />i:
j [)k:
n }$dmm4o:
p }$dmm4q:
r }$dmm4s:
x =($--8;,Z K-K(
 {"DNN3|#W\\2z!4::.'k:v~~z;WY *f-;(;'J'FO
 }$dmm4}$dmm4))7<<8Z ;,;(FO
 &!6==16==&)
 g//9g//8G%%&G%%&	
eFr   r   c                       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 Zy)r   z>
    For CBM BASIC V2 sources.

    .. versionadded:: 1.6
    zCBM BASIC V2cbmbas*.basr{   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                 2    t        j                  d|       ryy )Nz^\d+g?)r   matchtexts    r   analyse_textzCbmBasicV2Lexer.analyse_textd  s     88GT" #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   E  s    
 DjG	IMME 	(Z /070@0@B ,W-@-@A=>BllLH%HMM*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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j0                  fd eej4                  ej                  ej4                        fd eej6                  ej                  ej*                  ej                  e      fd eej6                  ej                  ej*                  ej                  ej*                  j,                        fd eej6                  ej                  ej*                  j,                        fd eej                  ej*                  j,                  ej                  e      fd eej4                  ej                  ej$                        fd eej4                  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@                  jB                  fd&ej@                  fd'efd(e"fd)ej*                  j,                  fgd*d+jG                   e$e%jL                  e            z  ej6                  fgd*d+jG                   e$e%jL                  e	            z  ej4                  fgd*d+jG                   e$e%jL                  e
            z  ejN                  fgd*d+jG                   e$e%jL                  e            z  ejP                  fgd,d+jG                   e$e%jL                  e            z  ej4                  fgd,d+jG                  e      z  efgd-Z)d. Z*y/)0r   zm
    For
    `QBasic <http://en.wikipedia.org/wiki/QBasic>`_
    source code.

    .. versionadded:: 2.0
    QBasicqbasicbasicz*.BASr   z
text/basic)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PUTrp  	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UEVENTra  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LONGrI  MODrS  OFFrf  OUTPUTRANDOMSIGNALSINGLESTEPSTRINGrY  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(%s)(?=\(|\b)|z\b(%s)\b)r{   r  r  r  r  r  r  c                     d| v sd| v ryy )Nr)  r*  ?r   r   s    r   r   zQBasicLexer.analyse_text  s    d!2 "3r   N)+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   joinmapr   escaper   r   r   r   r   r   r   r   r   k  s    D!G'"II"LI  7L9IJ.H TNT__%)dootzz4??nn&' !dootzz4??CE($--*>*>?/6==)2g&&9I9IJL0g))4??DMMoot-. 1g))4??DMMoot}}';';=> $g))4??DMM<P<PQS+doot}}';';T__ ! *g&&DF"g&&DFN#K N#K L!J#T]]%9%9:

+!6<<0V\\*&..--.&..)7Bk*t}}++,U+
^  #((3ryy,+G"HH  "

  #((3ryy)+D"EE

  #((3ryy,+G"HH

  #((3ryy)+D"EEx}}U
 388C		:$>??

 388H--w7
EEFNr   r   c                      e Zd ZdZdZdgZddg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j0                        fd eej*                  eej2                        fd eej*                  eej4                        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j6                        fde
j                  f eej<                  d      ef eej>                        e f eejB                  d      e jD                  f eejF                  d      ej4                  f eejH                  d      ejJ                  f eejL                  d      ejJ                  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*y')(r   zd
    VBScript is scripting language that is modeled on Visual Basic.

    .. versionadded:: 2.4
    VBScriptvbscriptz*.vbsz*.VBSz'[^\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.   )r1   z[a-z_][a-z0-9_]*z\b_\nz(),.:z.+(\n)?z(\s*)(,)(\s*)([a-z_][a-z0-9]*)ry   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   rQ   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MME (Z &--*FJJ'-v||<'6"FLL1'V,g)):t}}EzS5g)):t}}EG.g)):tzzBD.g)):t}}EG?gz7353gz7JU[UcUcdf8gz7JU\]_'':w)OPCg)):w7J7JJX\XeXefhw~~.%..u=wG%//0(;%44UCX]]S%77FV%77FU%77FU $'x 8_k*M'
R /j+z4==IKFO
 'fmm$6==&)E6"	
]4Fr   r   c                      e Zd ZdZg dZg dZdZdgZdg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j2                  dfdej6                  fdej8                  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j2                  fdej2                  dfde!dfgd Z"d! Z#y")#r   z
    BBC Basic was supplied on the BBC Micro, and later Acorn RISC OS.
    It is also used by BBC Basic For Windows.

    .. versionadded:: 2.4
    )w	OTHERWISEr+  DIVEORr  r/  rN  r^  r  r  r  r!  r  rY  OPENINPTRPAGETIMELOMEMHIMEMr   ACSADVALr   ASNr   BGETr   COUNTDEGr   r   EVALr   EXTFALSEFNrU  INKEYr  r  r  LNr
  r.  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  BPUTr4  r6  r9  r:  CLGr;  r   rF  rG  rJ  rK  ENDPROCENVELOPErR  rV  rW  GCOLrX  rZ  r   r  MODEMOVErS  rf  VDUPLOTrn  PROCrr  rt  REPEATREPORTrv  rx  r{  r  COLOURTRACEr  r  OSCLI)/WHENOFENDCASEr  ENDWHILEr  r8  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*.bbcr%   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   ry   )r{   r  r#   c                 J    | j                  d      s| j                  d      ryy )Nz10REM >zREM >r  )
startswithr   s    r   r   zBBCBasicLexer.analyse_text  s"    ??9%)A *Br   N)$r|   r}   r~   r   base_keywordsbasic5_keywordsr   r   r   r   r   r   r
   r   r   Specialr   r   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   <  s   9M$BO DlG	I 

#gnngoo68FO	
 g))7>>:<J'Z 7??# 6g)):))4==:; ,gt}}-/ 4gz4::68 g../N^^ =!7+?#W-&--*FJJ'vzz*2FLLA,fll;'6&..)'7A8LG$
L '6==&)E6"
[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#     s    
 H H4 4 4 .<YJ YxMj M`* D#j #LL* L^?J ?D]J ]r   