...
1<lexer>
2 <config>
3 <name>Cap'n Proto</name>
4 <alias>capnp</alias>
5 <filename>*.capnp</filename>
6 </config>
7 <rules>
8 <state name="root">
9 <rule pattern="#.*?$">
10 <token type="CommentSingle"/>
11 </rule>
12 <rule pattern="@[0-9a-zA-Z]*">
13 <token type="NameDecorator"/>
14 </rule>
15 <rule pattern="=">
16 <token type="Literal"/>
17 <push state="expression"/>
18 </rule>
19 <rule pattern=":">
20 <token type="NameClass"/>
21 <push state="type"/>
22 </rule>
23 <rule pattern="\$">
24 <token type="NameAttribute"/>
25 <push state="annotation"/>
26 </rule>
27 <rule pattern="(struct|enum|interface|union|import|using|const|annotation|extends|in|of|on|as|with|from|fixed)\b">
28 <token type="Keyword"/>
29 </rule>
30 <rule pattern="[\w.]+">
31 <token type="Name"/>
32 </rule>
33 <rule pattern="[^#@=:$\w]+">
34 <token type="Text"/>
35 </rule>
36 </state>
37 <state name="type">
38 <rule pattern="[^][=;,(){}$]+">
39 <token type="NameClass"/>
40 </rule>
41 <rule pattern="[[(]">
42 <token type="NameClass"/>
43 <push state="parentype"/>
44 </rule>
45 <rule>
46 <pop depth="1"/>
47 </rule>
48 </state>
49 <state name="parentype">
50 <rule pattern="[^][;()]+">
51 <token type="NameClass"/>
52 </rule>
53 <rule pattern="[[(]">
54 <token type="NameClass"/>
55 <push/>
56 </rule>
57 <rule pattern="[])]">
58 <token type="NameClass"/>
59 <pop depth="1"/>
60 </rule>
61 <rule>
62 <pop depth="1"/>
63 </rule>
64 </state>
65 <state name="expression">
66 <rule pattern="[^][;,(){}$]+">
67 <token type="Literal"/>
68 </rule>
69 <rule pattern="[[(]">
70 <token type="Literal"/>
71 <push state="parenexp"/>
72 </rule>
73 <rule>
74 <pop depth="1"/>
75 </rule>
76 </state>
77 <state name="parenexp">
78 <rule pattern="[^][;()]+">
79 <token type="Literal"/>
80 </rule>
81 <rule pattern="[[(]">
82 <token type="Literal"/>
83 <push/>
84 </rule>
85 <rule pattern="[])]">
86 <token type="Literal"/>
87 <pop depth="1"/>
88 </rule>
89 <rule>
90 <pop depth="1"/>
91 </rule>
92 </state>
93 <state name="annotation">
94 <rule pattern="[^][;,(){}=:]+">
95 <token type="NameAttribute"/>
96 </rule>
97 <rule pattern="[[(]">
98 <token type="NameAttribute"/>
99 <push state="annexp"/>
100 </rule>
101 <rule>
102 <pop depth="1"/>
103 </rule>
104 </state>
105 <state name="annexp">
106 <rule pattern="[^][;()]+">
107 <token type="NameAttribute"/>
108 </rule>
109 <rule pattern="[[(]">
110 <token type="NameAttribute"/>
111 <push/>
112 </rule>
113 <rule pattern="[])]">
114 <token type="NameAttribute"/>
115 <pop depth="1"/>
116 </rule>
117 <rule>
118 <pop depth="1"/>
119 </rule>
120 </state>
121 </rules>
122</lexer>
View as plain text