...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>QBasic</name>
     4    <alias>qbasic</alias>
     5    <alias>basic</alias>
     6    <filename>*.BAS</filename>
     7    <filename>*.bas</filename>
     8    <mime_type>text/basic</mime_type>
     9  </config>
    10  <rules>
    11    <state name="root">
    12      <rule pattern="\n+">
    13        <token type="Text"/>
    14      </rule>
    15      <rule pattern="\s+">
    16        <token type="TextWhitespace"/>
    17      </rule>
    18      <rule pattern="^(\s*)(\d*)(\s*)(REM .*)$">
    19        <bygroups>
    20          <token type="TextWhitespace"/>
    21          <token type="NameLabel"/>
    22          <token type="TextWhitespace"/>
    23          <token type="CommentSingle"/>
    24        </bygroups>
    25      </rule>
    26      <rule pattern="^(\s*)(\d+)(\s*)">
    27        <bygroups>
    28          <token type="TextWhitespace"/>
    29          <token type="NameLabel"/>
    30          <token type="TextWhitespace"/>
    31        </bygroups>
    32      </rule>
    33      <rule pattern="(?=[\s]*)(\w+)(?=[\s]*=)">
    34        <token type="NameVariableGlobal"/>
    35      </rule>
    36      <rule pattern="(?=[^&#34;]*)\&#39;.*$">
    37        <token type="CommentSingle"/>
    38      </rule>
    39      <rule pattern="&#34;[^\n&#34;]*&#34;">
    40        <token type="LiteralStringDouble"/>
    41      </rule>
    42      <rule pattern="(END)(\s+)(FUNCTION|IF|SELECT|SUB)">
    43        <bygroups>
    44          <token type="KeywordReserved"/>
    45          <token type="TextWhitespace"/>
    46          <token type="KeywordReserved"/>
    47        </bygroups>
    48      </rule>
    49      <rule pattern="(DECLARE)(\s+)([A-Z]+)(\s+)(\S+)">
    50        <bygroups>
    51          <token type="KeywordDeclaration"/>
    52          <token type="TextWhitespace"/>
    53          <token type="NameVariable"/>
    54          <token type="TextWhitespace"/>
    55          <token type="Name"/>
    56        </bygroups>
    57      </rule>
    58      <rule pattern="(DIM)(\s+)(SHARED)(\s+)([^\s(]+)">
    59        <bygroups>
    60          <token type="KeywordDeclaration"/>
    61          <token type="TextWhitespace"/>
    62          <token type="NameVariable"/>
    63          <token type="TextWhitespace"/>
    64          <token type="NameVariableGlobal"/>
    65        </bygroups>
    66      </rule>
    67      <rule pattern="(DIM)(\s+)([^\s(]+)">
    68        <bygroups>
    69          <token type="KeywordDeclaration"/>
    70          <token type="TextWhitespace"/>
    71          <token type="NameVariableGlobal"/>
    72        </bygroups>
    73      </rule>
    74      <rule pattern="^(\s*)([a-zA-Z_]+)(\s*)(\=)">
    75        <bygroups>
    76          <token type="TextWhitespace"/>
    77          <token type="NameVariableGlobal"/>
    78          <token type="TextWhitespace"/>
    79          <token type="Operator"/>
    80        </bygroups>
    81      </rule>
    82      <rule pattern="(GOTO|GOSUB)(\s+)(\w+\:?)">
    83        <bygroups>
    84          <token type="KeywordReserved"/>
    85          <token type="TextWhitespace"/>
    86          <token type="NameLabel"/>
    87        </bygroups>
    88      </rule>
    89      <rule pattern="(SUB)(\s+)(\w+\:?)">
    90        <bygroups>
    91          <token type="KeywordReserved"/>
    92          <token type="TextWhitespace"/>
    93          <token type="NameLabel"/>
    94        </bygroups>
    95      </rule>
    96      <rule>
    97        <include state="declarations"/>
    98      </rule>
    99      <rule>
   100        <include state="functions"/>
   101      </rule>
   102      <rule>
   103        <include state="metacommands"/>
   104      </rule>
   105      <rule>
   106        <include state="operators"/>
   107      </rule>
   108      <rule>
   109        <include state="statements"/>
   110      </rule>
   111      <rule>
   112        <include state="keywords"/>
   113      </rule>
   114      <rule pattern="[a-zA-Z_]\w*[$@#&amp;!]">
   115        <token type="NameVariableGlobal"/>
   116      </rule>
   117      <rule pattern="[a-zA-Z_]\w*\:">
   118        <token type="NameLabel"/>
   119      </rule>
   120      <rule pattern="\-?\d*\.\d+[@|#]?">
   121        <token type="LiteralNumberFloat"/>
   122      </rule>
   123      <rule pattern="\-?\d+[@|#]">
   124        <token type="LiteralNumberFloat"/>
   125      </rule>
   126      <rule pattern="\-?\d+#?">
   127        <token type="LiteralNumberIntegerLong"/>
   128      </rule>
   129      <rule pattern="\-?\d+#?">
   130        <token type="LiteralNumberInteger"/>
   131      </rule>
   132      <rule pattern="!=|==|:=|\.=|&lt;&lt;|&gt;&gt;|[-~+/\\*%=&lt;&gt;&amp;^|?:!.]">
   133        <token type="Operator"/>
   134      </rule>
   135      <rule pattern="[\[\]{}(),;]">
   136        <token type="Punctuation"/>
   137      </rule>
   138      <rule pattern="[\w]+">
   139        <token type="NameVariableGlobal"/>
   140      </rule>
   141    </state>
   142    <state name="declarations">
   143      <rule pattern="\b(DATA|LET)(?=\(|\b)">
   144        <token type="KeywordDeclaration"/>
   145      </rule>
   146    </state>
   147    <state name="functions">
   148      <rule pattern="\b(ABS|ASC|ATN|CDBL|CHR\$|CINT|CLNG|COMMAND\$|COS|CSNG|CSRLIN|CVD|CVDMBF|CVI|CVL|CVS|CVSMBF|DATE\$|ENVIRON\$|EOF|ERDEV|ERDEV\$|ERL|ERR|EXP|FILEATTR|FIX|FRE|FREEFILE|HEX\$|INKEY\$|INP|INPUT\$|INSTR|INT|IOCTL\$|LBOUND|LCASE\$|LEFT\$|LEN|LOC|LOF|LOG|LPOS|LTRIM\$|MID\$|MKD\$|MKDMBF\$|MKI\$|MKL\$|MKS\$|MKSMBF\$|OCT\$|PEEK|PEN|PLAY|PMAP|POINT|POS|RIGHT\$|RND|RTRIM\$|SADD|SCREEN|SEEK|SETMEM|SGN|SIN|SPACE\$|SPC|SQR|STICK|STR\$|STRIG|STRING\$|TAB|TAN|TIME\$|TIMER|UBOUND|UCASE\$|VAL|VARPTR|VARPTR\$|VARSEG)(?=\(|\b)">
   149        <token type="KeywordReserved"/>
   150      </rule>
   151    </state>
   152    <state name="metacommands">
   153      <rule pattern="\b(\$DYNAMIC|\$INCLUDE|\$STATIC)(?=\(|\b)">
   154        <token type="KeywordConstant"/>
   155      </rule>
   156    </state>
   157    <state name="operators">
   158      <rule pattern="\b(AND|EQV|IMP|NOT|OR|XOR)(?=\(|\b)">
   159        <token type="OperatorWord"/>
   160      </rule>
   161    </state>
   162    <state name="statements">
   163      <rule pattern="\b(BEEP|BLOAD|BSAVE|CALL|CALL\ ABSOLUTE|CALL\ INTERRUPT|CALLS|CHAIN|CHDIR|CIRCLE|CLEAR|CLOSE|CLS|COLOR|COM|COMMON|CONST|DATA|DATE\$|DECLARE|DEF\ FN|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|INPUT|INPUT\ \#|IOCTL|KEY|KEY|KILL|LET|LINE|LINE\ INPUT|LINE\ INPUT\ \#|LOCATE|LOCK|UNLOCK|LPRINT|LSET|MID\$|MKDIR|NAME|ON\ COM|ON\ ERROR|ON\ KEY|ON\ PEN|ON\ PLAY|ON\ STRIG|ON\ TIMER|ON\ UEVENT|ON|OPEN|OPEN\ COM|OPTION\ BASE|OUT|PAINT|PALETTE|PCOPY|PEN|PLAY|POKE|PRESET|PRINT|PRINT\ \#|PRINT\ USING|PSET|PUT|PUT|RANDOMIZE|READ|REDIM|REM|RESET|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SCREEN|SEEK|SELECT\ CASE|SHARED|SHELL|SLEEP|SOUND|STATIC|STOP|STRIG|SUB|SWAP|SYSTEM|TIME\$|TIMER|TROFF|TRON|TYPE|UEVENT|UNLOCK|VIEW|WAIT|WHILE|WEND|WIDTH|WINDOW|WRITE)\b">
   164        <token type="KeywordReserved"/>
   165      </rule>
   166    </state>
   167    <state name="keywords">
   168      <rule pattern="\b(ACCESS|ALIAS|ANY|APPEND|AS|BASE|BINARY|BYVAL|CASE|CDECL|DOUBLE|ELSE|ELSEIF|ENDIF|INTEGER|IS|LIST|LOCAL|LONG|LOOP|MOD|NEXT|OFF|ON|OUTPUT|RANDOM|SIGNAL|SINGLE|STEP|STRING|THEN|TO|UNTIL|USING|WEND)\b">
   169        <token type="Keyword"/>
   170      </rule>
   171    </state>
   172  </rules>
   173</lexer>

View as plain text