...
1<lexer>
2 <config>
3 <name>TableGen</name>
4 <alias>tablegen</alias>
5 <filename>*.td</filename>
6 <mime_type>text/x-tablegen</mime_type>
7 </config>
8 <rules>
9 <state name="whitespace">
10 <rule pattern="(\n|\s)+">
11 <token type="Text"/>
12 </rule>
13 <rule pattern="//.*?\n">
14 <token type="Comment"/>
15 </rule>
16 </state>
17 <state name="keyword">
18 <rule pattern="(multiclass|foreach|string|class|field|defm|bits|code|list|def|int|let|dag|bit|in)\b">
19 <token type="Keyword"/>
20 </rule>
21 </state>
22 <state name="root">
23 <rule>
24 <include state="macro"/>
25 </rule>
26 <rule>
27 <include state="whitespace"/>
28 </rule>
29 <rule pattern="c?"[^"]*?"">
30 <token type="LiteralString"/>
31 </rule>
32 <rule>
33 <include state="keyword"/>
34 </rule>
35 <rule pattern="\$[_a-zA-Z][_\w]*">
36 <token type="NameVariable"/>
37 </rule>
38 <rule pattern="\d*[_a-zA-Z][_\w]*">
39 <token type="NameVariable"/>
40 </rule>
41 <rule pattern="\[\{[\w\W]*?\}\]">
42 <token type="LiteralString"/>
43 </rule>
44 <rule pattern="[+-]?\d+|0x[\da-fA-F]+|0b[01]+">
45 <token type="LiteralNumber"/>
46 </rule>
47 <rule pattern="[=<>{}\[\]()*.,!:;]">
48 <token type="Punctuation"/>
49 </rule>
50 </state>
51 <state name="macro">
52 <rule pattern="(#include\s+)("[^"]*")">
53 <bygroups>
54 <token type="CommentPreproc"/>
55 <token type="LiteralString"/>
56 </bygroups>
57 </rule>
58 <rule pattern="^\s*#(ifdef|ifndef)\s+[_\w][_\w\d]*">
59 <token type="CommentPreproc"/>
60 </rule>
61 <rule pattern="^\s*#define\s+[_\w][_\w\d]*">
62 <token type="CommentPreproc"/>
63 </rule>
64 <rule pattern="^\s*#endif">
65 <token type="CommentPreproc"/>
66 </rule>
67 </state>
68 </rules>
69</lexer>
View as plain text