ragel.xml

  1<lexer>
  2  <config>
  3    <name>Ragel</name>
  4    <alias>ragel</alias>
  5  </config>
  6  <rules>
  7    <state name="host">
  8      <rule pattern="([^{}\&#39;&#34;/#]+|[^\\]\\[{}]|&#34;(\\\\|\\&#34;|[^&#34;])*&#34;|&#39;(\\\\|\\&#39;|[^&#39;])*&#39;|//.*$\n?|/\*(.|\n)*?\*/|\#.*$\n?|/(?!\*)(\\\\|\\/|[^/])*/|/)+">
  9        <token type="Other"/>
 10      </rule>
 11      <rule pattern="\{">
 12        <token type="Punctuation"/>
 13        <push/>
 14      </rule>
 15      <rule pattern="\}">
 16        <token type="Punctuation"/>
 17        <pop depth="1"/>
 18      </rule>
 19    </state>
 20    <state name="whitespace">
 21      <rule pattern="\s+">
 22        <token type="TextWhitespace"/>
 23      </rule>
 24    </state>
 25    <state name="numbers">
 26      <rule pattern="0x[0-9A-Fa-f]+">
 27        <token type="LiteralNumberHex"/>
 28      </rule>
 29      <rule pattern="[+-]?[0-9]+">
 30        <token type="LiteralNumberInteger"/>
 31      </rule>
 32    </state>
 33    <state name="literals">
 34      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 35        <token type="LiteralString"/>
 36      </rule>
 37      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
 38        <token type="LiteralString"/>
 39      </rule>
 40      <rule pattern="\[(\\\\|\\\]|[^\]])*\]">
 41        <token type="LiteralString"/>
 42      </rule>
 43      <rule pattern="/(?!\*)(\\\\|\\/|[^/])*/">
 44        <token type="LiteralStringRegex"/>
 45      </rule>
 46    </state>
 47    <state name="keywords">
 48      <rule pattern="(access|action|alphtype)\b">
 49        <token type="Keyword"/>
 50      </rule>
 51      <rule pattern="(getkey|write|machine|include)\b">
 52        <token type="Keyword"/>
 53      </rule>
 54      <rule pattern="(any|ascii|extend|alpha|digit|alnum|lower|upper)\b">
 55        <token type="Keyword"/>
 56      </rule>
 57      <rule pattern="(xdigit|cntrl|graph|print|punct|space|zlen|empty)\b">
 58        <token type="Keyword"/>
 59      </rule>
 60    </state>
 61    <state name="identifiers">
 62      <rule pattern="[a-zA-Z_]\w*">
 63        <token type="NameVariable"/>
 64      </rule>
 65    </state>
 66    <state name="root">
 67      <rule>
 68        <include state="literals"/>
 69      </rule>
 70      <rule>
 71        <include state="whitespace"/>
 72      </rule>
 73      <rule>
 74        <include state="comments"/>
 75      </rule>
 76      <rule>
 77        <include state="keywords"/>
 78      </rule>
 79      <rule>
 80        <include state="numbers"/>
 81      </rule>
 82      <rule>
 83        <include state="identifiers"/>
 84      </rule>
 85      <rule>
 86        <include state="operators"/>
 87      </rule>
 88      <rule pattern="\{">
 89        <token type="Punctuation"/>
 90        <push state="host"/>
 91      </rule>
 92      <rule pattern="=">
 93        <token type="Operator"/>
 94      </rule>
 95      <rule pattern=";">
 96        <token type="Punctuation"/>
 97      </rule>
 98    </state>
 99    <state name="comments">
100      <rule pattern="\#.*$">
101        <token type="Comment"/>
102      </rule>
103    </state>
104    <state name="operators">
105      <rule pattern=",">
106        <token type="Operator"/>
107      </rule>
108      <rule pattern="\||&amp;|--?">
109        <token type="Operator"/>
110      </rule>
111      <rule pattern="\.|&lt;:|:&gt;&gt;?">
112        <token type="Operator"/>
113      </rule>
114      <rule pattern=":">
115        <token type="Operator"/>
116      </rule>
117      <rule pattern="-&gt;">
118        <token type="Operator"/>
119      </rule>
120      <rule pattern="(&gt;|\$|%|&lt;|@|&lt;&gt;)(/|eof\b)">
121        <token type="Operator"/>
122      </rule>
123      <rule pattern="(&gt;|\$|%|&lt;|@|&lt;&gt;)(!|err\b)">
124        <token type="Operator"/>
125      </rule>
126      <rule pattern="(&gt;|\$|%|&lt;|@|&lt;&gt;)(\^|lerr\b)">
127        <token type="Operator"/>
128      </rule>
129      <rule pattern="(&gt;|\$|%|&lt;|@|&lt;&gt;)(~|to\b)">
130        <token type="Operator"/>
131      </rule>
132      <rule pattern="(&gt;|\$|%|&lt;|@|&lt;&gt;)(\*|from\b)">
133        <token type="Operator"/>
134      </rule>
135      <rule pattern="&gt;|@|\$|%">
136        <token type="Operator"/>
137      </rule>
138      <rule pattern="\*|\?|\+|\{[0-9]*,[0-9]*\}">
139        <token type="Operator"/>
140      </rule>
141      <rule pattern="!|\^">
142        <token type="Operator"/>
143      </rule>
144      <rule pattern="\(|\)">
145        <token type="Operator"/>
146      </rule>
147    </state>
148  </rules>
149</lexer>