terminfo.xml

 1<lexer>
 2  <config>
 3    <name>Terminfo</name>
 4    <alias>terminfo</alias>
 5    <filename>terminfo</filename>
 6    <filename>terminfo.src</filename>
 7  </config>
 8  <rules>
 9    <state name="names">
10      <rule pattern="\n">
11        <token type="Text"/>
12        <pop depth="1"/>
13      </rule>
14      <rule pattern="(,)([ \t]*)">
15        <bygroups>
16          <token type="Punctuation"/>
17          <token type="Text"/>
18        </bygroups>
19        <push state="defs"/>
20      </rule>
21      <rule pattern="\|">
22        <token type="Punctuation"/>
23      </rule>
24      <rule pattern="[^,|]+">
25        <token type="NameAttribute"/>
26      </rule>
27    </state>
28    <state name="defs">
29      <rule pattern="\n[ \t]+">
30        <token type="Text"/>
31      </rule>
32      <rule pattern="\n">
33        <token type="Text"/>
34        <pop depth="2"/>
35      </rule>
36      <rule pattern="(#)([0-9]+)">
37        <bygroups>
38          <token type="Operator"/>
39          <token type="LiteralNumber"/>
40        </bygroups>
41      </rule>
42      <rule pattern="=">
43        <token type="Operator"/>
44        <push state="data"/>
45      </rule>
46      <rule pattern="(,)([ \t]*)">
47        <bygroups>
48          <token type="Punctuation"/>
49          <token type="Text"/>
50        </bygroups>
51      </rule>
52      <rule pattern="[^\s,=#]+">
53        <token type="NameClass"/>
54      </rule>
55    </state>
56    <state name="data">
57      <rule pattern="\\[,\\]">
58        <token type="Literal"/>
59      </rule>
60      <rule pattern="(,)([ \t]*)">
61        <bygroups>
62          <token type="Punctuation"/>
63          <token type="Text"/>
64        </bygroups>
65        <pop depth="1"/>
66      </rule>
67      <rule pattern="[^\\,]+">
68        <token type="Literal"/>
69      </rule>
70      <rule pattern=".">
71        <token type="Literal"/>
72      </rule>
73    </state>
74    <state name="root">
75      <rule pattern="^#.*$">
76        <token type="Comment"/>
77      </rule>
78      <rule pattern="^[^\s#,|]+">
79        <token type="NameTag"/>
80        <push state="names"/>
81      </rule>
82    </state>
83  </rules>
84</lexer>