...
1<lexer>
2 <config>
3 <name>Modula-2</name>
4 <alias>modula2</alias>
5 <alias>m2</alias>
6 <filename>*.def</filename>
7 <filename>*.mod</filename>
8 <mime_type>text/x-modula2</mime_type>
9 <dot_all>true</dot_all>
10 </config>
11 <rules>
12 <state name="dialecttags">
13 <rule pattern="\(\*!m2pim\*\)">
14 <token type="CommentSpecial"/>
15 </rule>
16 <rule pattern="\(\*!m2iso\*\)">
17 <token type="CommentSpecial"/>
18 </rule>
19 <rule pattern="\(\*!m2r10\*\)">
20 <token type="CommentSpecial"/>
21 </rule>
22 <rule pattern="\(\*!objm2\*\)">
23 <token type="CommentSpecial"/>
24 </rule>
25 <rule pattern="\(\*!m2iso\+aglet\*\)">
26 <token type="CommentSpecial"/>
27 </rule>
28 <rule pattern="\(\*!m2pim\+gm2\*\)">
29 <token type="CommentSpecial"/>
30 </rule>
31 <rule pattern="\(\*!m2iso\+p1\*\)">
32 <token type="CommentSpecial"/>
33 </rule>
34 <rule pattern="\(\*!m2iso\+xds\*\)">
35 <token type="CommentSpecial"/>
36 </rule>
37 </state>
38 <state name="unigraph_operators">
39 <rule pattern="[+-]">
40 <token type="Operator"/>
41 </rule>
42 <rule pattern="[*/]">
43 <token type="Operator"/>
44 </rule>
45 <rule pattern="\\">
46 <token type="Operator"/>
47 </rule>
48 <rule pattern="[=#<>]">
49 <token type="Operator"/>
50 </rule>
51 <rule pattern="\^">
52 <token type="Operator"/>
53 </rule>
54 <rule pattern="@">
55 <token type="Operator"/>
56 </rule>
57 <rule pattern="&">
58 <token type="Operator"/>
59 </rule>
60 <rule pattern="~">
61 <token type="Operator"/>
62 </rule>
63 <rule pattern="`">
64 <token type="Operator"/>
65 </rule>
66 </state>
67 <state name="string_literals">
68 <rule pattern="'(\\\\|\\'|[^'])*'">
69 <token type="LiteralString"/>
70 </rule>
71 <rule pattern=""(\\\\|\\"|[^"])*"">
72 <token type="LiteralString"/>
73 </rule>
74 </state>
75 <state name="identifiers">
76 <rule pattern="([a-zA-Z_$][\w$]*)">
77 <token type="Name"/>
78 </rule>
79 </state>
80 <state name="pragmas">
81 <rule pattern="<\*.*?\*>">
82 <token type="CommentPreproc"/>
83 </rule>
84 <rule pattern="\(\*\$.*?\*\)">
85 <token type="CommentPreproc"/>
86 </rule>
87 </state>
88 <state name="comments">
89 <rule pattern="^//.*?\n">
90 <token type="CommentSingle"/>
91 </rule>
92 <rule pattern="\(\*([^$].*?)\*\)">
93 <token type="CommentMultiline"/>
94 </rule>
95 <rule pattern="/\*(.*?)\*/">
96 <token type="CommentMultiline"/>
97 </rule>
98 </state>
99 <state name="whitespace">
100 <rule pattern="\n+">
101 <token type="Text"/>
102 </rule>
103 <rule pattern="\s+">
104 <token type="Text"/>
105 </rule>
106 </state>
107 <state name="suffixed_number_literals">
108 <rule pattern="[0-7]+B">
109 <token type="LiteralNumberOct"/>
110 </rule>
111 <rule pattern="[0-7]+C">
112 <token type="LiteralNumberOct"/>
113 </rule>
114 <rule pattern="[0-9A-F]+H">
115 <token type="LiteralNumberHex"/>
116 </rule>
117 </state>
118 <state name="plain_number_literals">
119 <rule pattern="[0-9]+(\'[0-9]+)*\.[0-9]+(\'[0-9]+)*[eE][+-]?[0-9]+(\'[0-9]+)*">
120 <token type="LiteralNumberFloat"/>
121 </rule>
122 <rule pattern="[0-9]+(\'[0-9]+)*\.[0-9]+(\'[0-9]+)*">
123 <token type="LiteralNumberFloat"/>
124 </rule>
125 <rule pattern="[0-9]+(\'[0-9]+)*">
126 <token type="LiteralNumberInteger"/>
127 </rule>
128 </state>
129 <state name="digraph_punctuation">
130 <rule pattern="\.\.">
131 <token type="Punctuation"/>
132 </rule>
133 <rule pattern="<<">
134 <token type="Punctuation"/>
135 </rule>
136 <rule pattern=">>">
137 <token type="Punctuation"/>
138 </rule>
139 <rule pattern="->">
140 <token type="Punctuation"/>
141 </rule>
142 <rule pattern="\|#">
143 <token type="Punctuation"/>
144 </rule>
145 <rule pattern="##">
146 <token type="Punctuation"/>
147 </rule>
148 <rule pattern="\|\*">
149 <token type="Punctuation"/>
150 </rule>
151 </state>
152 <state name="unigraph_punctuation">
153 <rule pattern="[()\[\]{},.:;|]">
154 <token type="Punctuation"/>
155 </rule>
156 <rule pattern="!">
157 <token type="Punctuation"/>
158 </rule>
159 <rule pattern="\?">
160 <token type="Punctuation"/>
161 </rule>
162 </state>
163 <state name="root">
164 <rule>
165 <include state="whitespace"/>
166 </rule>
167 <rule>
168 <include state="dialecttags"/>
169 </rule>
170 <rule>
171 <include state="pragmas"/>
172 </rule>
173 <rule>
174 <include state="comments"/>
175 </rule>
176 <rule>
177 <include state="identifiers"/>
178 </rule>
179 <rule>
180 <include state="suffixed_number_literals"/>
181 </rule>
182 <rule>
183 <include state="prefixed_number_literals"/>
184 </rule>
185 <rule>
186 <include state="plain_number_literals"/>
187 </rule>
188 <rule>
189 <include state="string_literals"/>
190 </rule>
191 <rule>
192 <include state="digraph_punctuation"/>
193 </rule>
194 <rule>
195 <include state="digraph_operators"/>
196 </rule>
197 <rule>
198 <include state="unigraph_punctuation"/>
199 </rule>
200 <rule>
201 <include state="unigraph_operators"/>
202 </rule>
203 </state>
204 <state name="prefixed_number_literals">
205 <rule pattern="0b[01]+(\'[01]+)*">
206 <token type="LiteralNumberBin"/>
207 </rule>
208 <rule pattern="0[ux][0-9A-F]+(\'[0-9A-F]+)*">
209 <token type="LiteralNumberHex"/>
210 </rule>
211 </state>
212 <state name="digraph_operators">
213 <rule pattern="\*\.">
214 <token type="Operator"/>
215 </rule>
216 <rule pattern="\+>">
217 <token type="Operator"/>
218 </rule>
219 <rule pattern="<>">
220 <token type="Operator"/>
221 </rule>
222 <rule pattern="<=">
223 <token type="Operator"/>
224 </rule>
225 <rule pattern=">=">
226 <token type="Operator"/>
227 </rule>
228 <rule pattern="==">
229 <token type="Operator"/>
230 </rule>
231 <rule pattern="::">
232 <token type="Operator"/>
233 </rule>
234 <rule pattern=":=">
235 <token type="Operator"/>
236 </rule>
237 <rule pattern="\+\+">
238 <token type="Operator"/>
239 </rule>
240 <rule pattern="--">
241 <token type="Operator"/>
242 </rule>
243 </state>
244 </rules>
245</lexer>
View as plain text