<lexer> <config> <name>Snobol</name> <alias>snobol</alias> <filename>*.snobol</filename> <mime_type>text/x-snobol</mime_type> </config> <rules> <state name="heredoc"> <rule pattern=".*\n"> <token type="LiteralStringHeredoc"/> </rule> </state> <state name="root"> <rule pattern="\*.*\n"> <token type="Comment"/> </rule> <rule pattern="[+.] "> <token type="Punctuation"/> <push state="statement"/> </rule> <rule pattern="-.*\n"> <token type="Comment"/> </rule> <rule pattern="END\s*\n"> <token type="NameLabel"/> <push state="heredoc"/> </rule> <rule pattern="[A-Za-z$][\w$]*"> <token type="NameLabel"/> <push state="statement"/> </rule> <rule pattern="\s+"> <token type="Text"/> <push state="statement"/> </rule> </state> <state name="statement"> <rule pattern="\s*\n"> <token type="Text"/> <pop depth="1"/> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> <rule pattern="(?<=[^\w.])(LT|LE|EQ|NE|GE|GT|INTEGER|IDENT|DIFFER|LGT|SIZE|REPLACE|TRIM|DUPL|REMDR|DATE|TIME|EVAL|APPLY|OPSYN|LOAD|UNLOAD|LEN|SPAN|BREAK|ANY|NOTANY|TAB|RTAB|REM|POS|RPOS|FAIL|FENCE|ABORT|ARB|ARBNO|BAL|SUCCEED|INPUT|OUTPUT|TERMINAL)(?=[^\w.])"> <token type="NameBuiltin"/> </rule> <rule pattern="[A-Za-z][\w.]*"> <token type="Name"/> </rule> <rule pattern="\*\*|[?$.!%*/#+\-@|&\\=]"> <token type="Operator"/> </rule> <rule pattern=""[^"]*""> <token type="LiteralString"/> </rule> <rule pattern="'[^']*'"> <token type="LiteralString"/> </rule> <rule pattern="[0-9]+(?=[^.EeDd])"> <token type="LiteralNumberInteger"/> </rule> <rule pattern="[0-9]+(\.[0-9]*)?([EDed][-+]?[0-9]+)?"> <token type="LiteralNumberFloat"/> </rule> <rule pattern=":"> <token type="Punctuation"/> <push state="goto"/> </rule> <rule pattern="[()<>,;]"> <token type="Punctuation"/> </rule> </state> <state name="goto"> <rule pattern="\s*\n"> <token type="Text"/> <pop depth="2"/> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> <rule pattern="F|S"> <token type="Keyword"/> </rule> <rule pattern="(\()([A-Za-z][\w.]*)(\))"> <bygroups> <token type="Punctuation"/> <token type="NameLabel"/> <token type="Punctuation"/> </bygroups> </rule> </state> </rules> </lexer>