66
|
1 <lexer>
|
|
2 <config>
|
|
3 <name>Tcl</name>
|
|
4 <alias>tcl</alias>
|
|
5 <filename>*.tcl</filename>
|
|
6 <filename>*.rvt</filename>
|
|
7 <mime_type>text/x-tcl</mime_type>
|
|
8 <mime_type>text/x-script.tcl</mime_type>
|
|
9 <mime_type>application/x-tcl</mime_type>
|
|
10 </config>
|
|
11 <rules>
|
|
12 <state name="command-in-bracket">
|
|
13 <rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
|
14 <token type="Keyword"/>
|
|
15 <push state="params-in-bracket"/>
|
|
16 </rule>
|
|
17 <rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
|
18 <token type="NameBuiltin"/>
|
|
19 <push state="params-in-bracket"/>
|
|
20 </rule>
|
|
21 <rule pattern="([\w.-]+)">
|
|
22 <token type="NameVariable"/>
|
|
23 <push state="params-in-bracket"/>
|
|
24 </rule>
|
|
25 <rule pattern="#">
|
|
26 <token type="Comment"/>
|
|
27 <push state="comment"/>
|
|
28 </rule>
|
|
29 </state>
|
|
30 <state name="command-in-paren">
|
|
31 <rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
|
32 <token type="Keyword"/>
|
|
33 <push state="params-in-paren"/>
|
|
34 </rule>
|
|
35 <rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
|
36 <token type="NameBuiltin"/>
|
|
37 <push state="params-in-paren"/>
|
|
38 </rule>
|
|
39 <rule pattern="([\w.-]+)">
|
|
40 <token type="NameVariable"/>
|
|
41 <push state="params-in-paren"/>
|
|
42 </rule>
|
|
43 <rule pattern="#">
|
|
44 <token type="Comment"/>
|
|
45 <push state="comment"/>
|
|
46 </rule>
|
|
47 </state>
|
|
48 <state name="command-in-brace">
|
|
49 <rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
|
50 <token type="Keyword"/>
|
|
51 <push state="params-in-brace"/>
|
|
52 </rule>
|
|
53 <rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
|
54 <token type="NameBuiltin"/>
|
|
55 <push state="params-in-brace"/>
|
|
56 </rule>
|
|
57 <rule pattern="([\w.-]+)">
|
|
58 <token type="NameVariable"/>
|
|
59 <push state="params-in-brace"/>
|
|
60 </rule>
|
|
61 <rule pattern="#">
|
|
62 <token type="Comment"/>
|
|
63 <push state="comment"/>
|
|
64 </rule>
|
|
65 </state>
|
|
66 <state name="basic">
|
|
67 <rule pattern="\(">
|
|
68 <token type="Keyword"/>
|
|
69 <push state="paren"/>
|
|
70 </rule>
|
|
71 <rule pattern="\[">
|
|
72 <token type="Keyword"/>
|
|
73 <push state="bracket"/>
|
|
74 </rule>
|
|
75 <rule pattern="\{">
|
|
76 <token type="Keyword"/>
|
|
77 <push state="brace"/>
|
|
78 </rule>
|
|
79 <rule pattern=""">
|
|
80 <token type="LiteralStringDouble"/>
|
|
81 <push state="string"/>
|
|
82 </rule>
|
|
83 <rule pattern="(eq|ne|in|ni)\b">
|
|
84 <token type="OperatorWord"/>
|
|
85 </rule>
|
|
86 <rule pattern="!=|==|<<|>>|<=|>=|&&|\|\||\*\*|[-+~!*/%<>&^|?:]">
|
|
87 <token type="Operator"/>
|
|
88 </rule>
|
|
89 </state>
|
|
90 <state name="params-in-bracket">
|
|
91 <rule pattern="\]">
|
|
92 <token type="Keyword"/>
|
|
93 <push state="#pop" state="#pop"/>
|
|
94 </rule>
|
|
95 <rule>
|
|
96 <include state="params"/>
|
|
97 </rule>
|
|
98 </state>
|
|
99 <state name="data">
|
|
100 <rule pattern="\s+">
|
|
101 <token type="Text"/>
|
|
102 </rule>
|
|
103 <rule pattern="0x[a-fA-F0-9]+">
|
|
104 <token type="LiteralNumberHex"/>
|
|
105 </rule>
|
|
106 <rule pattern="0[0-7]+">
|
|
107 <token type="LiteralNumberOct"/>
|
|
108 </rule>
|
|
109 <rule pattern="\d+\.\d+">
|
|
110 <token type="LiteralNumberFloat"/>
|
|
111 </rule>
|
|
112 <rule pattern="\d+">
|
|
113 <token type="LiteralNumberInteger"/>
|
|
114 </rule>
|
|
115 <rule pattern="\$([\w.:-]+)">
|
|
116 <token type="NameVariable"/>
|
|
117 </rule>
|
|
118 <rule pattern="([\w.:-]+)">
|
|
119 <token type="Text"/>
|
|
120 </rule>
|
|
121 </state>
|
|
122 <state name="command">
|
|
123 <rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
|
124 <token type="Keyword"/>
|
|
125 <push state="params"/>
|
|
126 </rule>
|
|
127 <rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
|
128 <token type="NameBuiltin"/>
|
|
129 <push state="params"/>
|
|
130 </rule>
|
|
131 <rule pattern="([\w.-]+)">
|
|
132 <token type="NameVariable"/>
|
|
133 <push state="params"/>
|
|
134 </rule>
|
|
135 <rule pattern="#">
|
|
136 <token type="Comment"/>
|
|
137 <push state="comment"/>
|
|
138 </rule>
|
|
139 </state>
|
|
140 <state name="params-in-brace">
|
|
141 <rule pattern="\}">
|
|
142 <token type="Keyword"/>
|
|
143 <push state="#pop" state="#pop"/>
|
|
144 </rule>
|
|
145 <rule>
|
|
146 <include state="params"/>
|
|
147 </rule>
|
|
148 </state>
|
|
149 <state name="string-square">
|
|
150 <rule pattern="\[">
|
|
151 <token type="LiteralStringDouble"/>
|
|
152 <push state="string-square"/>
|
|
153 </rule>
|
|
154 <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|\\\n|[^\]\\])">
|
|
155 <token type="LiteralStringDouble"/>
|
|
156 </rule>
|
|
157 <rule pattern="\]">
|
|
158 <token type="LiteralStringDouble"/>
|
|
159 <pop depth="1"/>
|
|
160 </rule>
|
|
161 </state>
|
|
162 <state name="bracket">
|
|
163 <rule pattern="\]">
|
|
164 <token type="Keyword"/>
|
|
165 <pop depth="1"/>
|
|
166 </rule>
|
|
167 <rule>
|
|
168 <include state="command-in-bracket"/>
|
|
169 </rule>
|
|
170 <rule>
|
|
171 <include state="basic"/>
|
|
172 </rule>
|
|
173 <rule>
|
|
174 <include state="data"/>
|
|
175 </rule>
|
|
176 </state>
|
|
177 <state name="params-in-paren">
|
|
178 <rule pattern="\)">
|
|
179 <token type="Keyword"/>
|
|
180 <push state="#pop" state="#pop"/>
|
|
181 </rule>
|
|
182 <rule>
|
|
183 <include state="params"/>
|
|
184 </rule>
|
|
185 </state>
|
|
186 <state name="paren">
|
|
187 <rule pattern="\)">
|
|
188 <token type="Keyword"/>
|
|
189 <pop depth="1"/>
|
|
190 </rule>
|
|
191 <rule>
|
|
192 <include state="command-in-paren"/>
|
|
193 </rule>
|
|
194 <rule>
|
|
195 <include state="basic"/>
|
|
196 </rule>
|
|
197 <rule>
|
|
198 <include state="data"/>
|
|
199 </rule>
|
|
200 </state>
|
|
201 <state name="comment">
|
|
202 <rule pattern=".*[^\\]\n">
|
|
203 <token type="Comment"/>
|
|
204 <pop depth="1"/>
|
|
205 </rule>
|
|
206 <rule pattern=".*\\\n">
|
|
207 <token type="Comment"/>
|
|
208 </rule>
|
|
209 </state>
|
|
210 <state name="root">
|
|
211 <rule>
|
|
212 <include state="command"/>
|
|
213 </rule>
|
|
214 <rule>
|
|
215 <include state="basic"/>
|
|
216 </rule>
|
|
217 <rule>
|
|
218 <include state="data"/>
|
|
219 </rule>
|
|
220 <rule pattern="\}">
|
|
221 <token type="Keyword"/>
|
|
222 </rule>
|
|
223 </state>
|
|
224 <state name="brace">
|
|
225 <rule pattern="\}">
|
|
226 <token type="Keyword"/>
|
|
227 <pop depth="1"/>
|
|
228 </rule>
|
|
229 <rule>
|
|
230 <include state="command-in-brace"/>
|
|
231 </rule>
|
|
232 <rule>
|
|
233 <include state="basic"/>
|
|
234 </rule>
|
|
235 <rule>
|
|
236 <include state="data"/>
|
|
237 </rule>
|
|
238 </state>
|
|
239 <state name="params">
|
|
240 <rule pattern=";">
|
|
241 <token type="Keyword"/>
|
|
242 <pop depth="1"/>
|
|
243 </rule>
|
|
244 <rule pattern="\n">
|
|
245 <token type="Text"/>
|
|
246 <pop depth="1"/>
|
|
247 </rule>
|
|
248 <rule pattern="(else|elseif|then)\b">
|
|
249 <token type="Keyword"/>
|
|
250 </rule>
|
|
251 <rule>
|
|
252 <include state="basic"/>
|
|
253 </rule>
|
|
254 <rule>
|
|
255 <include state="data"/>
|
|
256 </rule>
|
|
257 </state>
|
|
258 <state name="string">
|
|
259 <rule pattern="\[">
|
|
260 <token type="LiteralStringDouble"/>
|
|
261 <push state="string-square"/>
|
|
262 </rule>
|
|
263 <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^"\\])">
|
|
264 <token type="LiteralStringDouble"/>
|
|
265 </rule>
|
|
266 <rule pattern=""">
|
|
267 <token type="LiteralStringDouble"/>
|
|
268 <pop depth="1"/>
|
|
269 </rule>
|
|
270 </state>
|
|
271 </rules>
|
|
272 </lexer> |