<lexer>
<config>
<name>Ragel</name>
<alias>ragel</alias>
</config>
<rules>
<state name="host">
<rule pattern="([^{}\'"/#]+|[^\\]\\[{}]|"(\\\\|\\"|[^"])*"|'(\\\\|\\'|[^'])*'|//.*$\n?|/\*(.|\n)*?\*/|\#.*$\n?|/(?!\*)(\\\\|\\/|[^/])*/|/)+">
<token type="Other"/>
</rule>
<rule pattern="\{">
<token type="Punctuation"/>
<push/>
</rule>
<rule pattern="\}">
<token type="Punctuation"/>
<pop depth="1"/>
</rule>
</state>
<state name="whitespace">
<rule pattern="\s+">
<token type="TextWhitespace"/>
</rule>
</state>
<state name="numbers">
<rule pattern="0x[0-9A-Fa-f]+">
<token type="LiteralNumberHex"/>
</rule>
<rule pattern="[+-]?[0-9]+">
<token type="LiteralNumberInteger"/>
</rule>
</state>
<state name="literals">
<rule pattern=""(\\\\|\\"|[^"])*"">
<token type="LiteralString"/>
</rule>
<rule pattern="'(\\\\|\\'|[^'])*'">
<token type="LiteralString"/>
</rule>
<rule pattern="\[(\\\\|\\\]|[^\]])*\]">
<token type="LiteralString"/>
</rule>
<rule pattern="/(?!\*)(\\\\|\\/|[^/])*/">
<token type="LiteralStringRegex"/>
</rule>
</state>
<state name="keywords">
<rule pattern="(access|action|alphtype)\b">
<token type="Keyword"/>
</rule>
<rule pattern="(getkey|write|machine|include)\b">
<token type="Keyword"/>
</rule>
<rule pattern="(any|ascii|extend|alpha|digit|alnum|lower|upper)\b">
<token type="Keyword"/>
</rule>
<rule pattern="(xdigit|cntrl|graph|print|punct|space|zlen|empty)\b">
<token type="Keyword"/>
</rule>
</state>
<state name="identifiers">
<rule pattern="[a-zA-Z_]\w*">
<token type="NameVariable"/>
</rule>
</state>
<state name="root">
<rule>
<include state="literals"/>
</rule>
<rule>
<include state="whitespace"/>
</rule>
<rule>
<include state="comments"/>
</rule>
<rule>
<include state="keywords"/>
</rule>
<rule>
<include state="numbers"/>
</rule>
<rule>
<include state="identifiers"/>
</rule>
<rule>
<include state="operators"/>
</rule>
<rule pattern="\{">
<token type="Punctuation"/>
<push state="host"/>
</rule>
<rule pattern="=">
<token type="Operator"/>
</rule>
<rule pattern=";">
<token type="Punctuation"/>
</rule>
</state>
<state name="comments">
<rule pattern="\#.*$">
<token type="Comment"/>
</rule>
</state>
<state name="operators">
<rule pattern=",">
<token type="Operator"/>
</rule>
<rule pattern="\||&|--?">
<token type="Operator"/>
</rule>
<rule pattern="\.|<:|:>>?">
<token type="Operator"/>
</rule>
<rule pattern=":">
<token type="Operator"/>
</rule>
<rule pattern="->">
<token type="Operator"/>
</rule>
<rule pattern="(>|\$|%|<|@|<>)(/|eof\b)">
<token type="Operator"/>
</rule>
<rule pattern="(>|\$|%|<|@|<>)(!|err\b)">
<token type="Operator"/>
</rule>
<rule pattern="(>|\$|%|<|@|<>)(\^|lerr\b)">
<token type="Operator"/>
</rule>
<rule pattern="(>|\$|%|<|@|<>)(~|to\b)">
<token type="Operator"/>
</rule>
<rule pattern="(>|\$|%|<|@|<>)(\*|from\b)">
<token type="Operator"/>
</rule>
<rule pattern=">|@|\$|%">
<token type="Operator"/>
</rule>
<rule pattern="\*|\?|\+|\{[0-9]*,[0-9]*\}">
<token type="Operator"/>
</rule>
<rule pattern="!|\^">
<token type="Operator"/>
</rule>
<rule pattern="\(|\)">
<token type="Operator"/>
</rule>
</state>
</rules>
</lexer>