66
|
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> |