...
1<lexer>
2 <config>
3 <name>Smalltalk</name>
4 <alias>smalltalk</alias>
5 <alias>squeak</alias>
6 <alias>st</alias>
7 <filename>*.st</filename>
8 <mime_type>text/x-smalltalk</mime_type>
9 </config>
10 <rules>
11 <state name="inner_parenth">
12 <rule pattern="\)">
13 <token type="LiteralStringSymbol"/>
14 <pop depth="1"/>
15 </rule>
16 <rule>
17 <include state="_parenth_helper"/>
18 </rule>
19 </state>
20 <state name="objects">
21 <rule pattern="\[">
22 <token type="Text"/>
23 <push state="blockvariables"/>
24 </rule>
25 <rule pattern="\]">
26 <token type="Text"/>
27 <push state="afterobject"/>
28 </rule>
29 <rule pattern="\b(self|super|true|false|nil|thisContext)\b">
30 <token type="NameBuiltinPseudo"/>
31 <push state="afterobject"/>
32 </rule>
33 <rule pattern="\b[A-Z]\w*(?!:)\b">
34 <token type="NameClass"/>
35 <push state="afterobject"/>
36 </rule>
37 <rule pattern="\b[a-z]\w*(?!:)\b">
38 <token type="NameVariable"/>
39 <push state="afterobject"/>
40 </rule>
41 <rule pattern="#("(""|[^"])*"|[-+*/\\~<>=|&!?,@%]+|[\w:]+)">
42 <token type="LiteralStringSymbol"/>
43 <push state="afterobject"/>
44 </rule>
45 <rule>
46 <include state="literals"/>
47 </rule>
48 </state>
49 <state name="afterobject">
50 <rule pattern="! !$">
51 <token type="Keyword"/>
52 <pop depth="1"/>
53 </rule>
54 <rule>
55 <include state="whitespaces"/>
56 </rule>
57 <rule pattern="\b(ifTrue:|ifFalse:|whileTrue:|whileFalse:|timesRepeat:)">
58 <token type="NameBuiltin"/>
59 <pop depth="1"/>
60 </rule>
61 <rule pattern="\b(new\b(?!:))">
62 <token type="NameBuiltin"/>
63 </rule>
64 <rule pattern=":=|_">
65 <token type="Operator"/>
66 <pop depth="1"/>
67 </rule>
68 <rule pattern="\b[a-zA-Z]+\w*:">
69 <token type="NameFunction"/>
70 <pop depth="1"/>
71 </rule>
72 <rule pattern="\b[a-zA-Z]+\w*">
73 <token type="NameFunction"/>
74 </rule>
75 <rule pattern="\w+:?|[-+*/\\~<>=|&!?,@%]+">
76 <token type="NameFunction"/>
77 <pop depth="1"/>
78 </rule>
79 <rule pattern="\.">
80 <token type="Punctuation"/>
81 <pop depth="1"/>
82 </rule>
83 <rule pattern=";">
84 <token type="Punctuation"/>
85 </rule>
86 <rule pattern="[\])}]">
87 <token type="Text"/>
88 </rule>
89 <rule pattern="[\[({]">
90 <token type="Text"/>
91 <pop depth="1"/>
92 </rule>
93 </state>
94 <state name="literals">
95 <rule pattern="'(''|[^'])*'">
96 <token type="LiteralString"/>
97 <push state="afterobject"/>
98 </rule>
99 <rule pattern="\$.">
100 <token type="LiteralStringChar"/>
101 <push state="afterobject"/>
102 </rule>
103 <rule pattern="#\(">
104 <token type="LiteralStringSymbol"/>
105 <push state="parenth"/>
106 </rule>
107 <rule pattern="\)">
108 <token type="Text"/>
109 <push state="afterobject"/>
110 </rule>
111 <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
112 <token type="LiteralNumber"/>
113 <push state="afterobject"/>
114 </rule>
115 </state>
116 <state name="root">
117 <rule pattern="(<)(\w+:)(.*?)(>)">
118 <bygroups>
119 <token type="Text"/>
120 <token type="Keyword"/>
121 <token type="Text"/>
122 <token type="Text"/>
123 </bygroups>
124 </rule>
125 <rule>
126 <include state="squeak fileout"/>
127 </rule>
128 <rule>
129 <include state="whitespaces"/>
130 </rule>
131 <rule>
132 <include state="method definition"/>
133 </rule>
134 <rule pattern="(\|)([\w\s]*)(\|)">
135 <bygroups>
136 <token type="Operator"/>
137 <token type="NameVariable"/>
138 <token type="Operator"/>
139 </bygroups>
140 </rule>
141 <rule>
142 <include state="objects"/>
143 </rule>
144 <rule pattern="\^|:=|_">
145 <token type="Operator"/>
146 </rule>
147 <rule pattern="[\]({}.;!]">
148 <token type="Text"/>
149 </rule>
150 </state>
151 <state name="_parenth_helper">
152 <rule>
153 <include state="whitespaces"/>
154 </rule>
155 <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
156 <token type="LiteralNumber"/>
157 </rule>
158 <rule pattern="[-+*/\\~<>=|&#!?,@%\w:]+">
159 <token type="LiteralStringSymbol"/>
160 </rule>
161 <rule pattern="'(''|[^'])*'">
162 <token type="LiteralString"/>
163 </rule>
164 <rule pattern="\$.">
165 <token type="LiteralStringChar"/>
166 </rule>
167 <rule pattern="#*\(">
168 <token type="LiteralStringSymbol"/>
169 <push state="inner_parenth"/>
170 </rule>
171 </state>
172 <state name="parenth">
173 <rule pattern="\)">
174 <token type="LiteralStringSymbol"/>
175 <push state="root" state="afterobject"/>
176 </rule>
177 <rule>
178 <include state="_parenth_helper"/>
179 </rule>
180 </state>
181 <state name="whitespaces">
182 <rule pattern="\s+">
183 <token type="Text"/>
184 </rule>
185 <rule pattern=""(""|[^"])*"">
186 <token type="Comment"/>
187 </rule>
188 </state>
189 <state name="squeak fileout">
190 <rule pattern="^"(""|[^"])*"!">
191 <token type="Keyword"/>
192 </rule>
193 <rule pattern="^'(''|[^'])*'!">
194 <token type="Keyword"/>
195 </rule>
196 <rule pattern="^(!)(\w+)( commentStamp: )(.*?)( prior: .*?!\n)(.*?)(!)">
197 <bygroups>
198 <token type="Keyword"/>
199 <token type="NameClass"/>
200 <token type="Keyword"/>
201 <token type="LiteralString"/>
202 <token type="Keyword"/>
203 <token type="Text"/>
204 <token type="Keyword"/>
205 </bygroups>
206 </rule>
207 <rule pattern="^(!)(\w+(?: class)?)( methodsFor: )('(?:''|[^'])*')(.*?!)">
208 <bygroups>
209 <token type="Keyword"/>
210 <token type="NameClass"/>
211 <token type="Keyword"/>
212 <token type="LiteralString"/>
213 <token type="Keyword"/>
214 </bygroups>
215 </rule>
216 <rule pattern="^(\w+)( subclass: )(#\w+)(\s+instanceVariableNames: )(.*?)(\s+classVariableNames: )(.*?)(\s+poolDictionaries: )(.*?)(\s+category: )(.*?)(!)">
217 <bygroups>
218 <token type="NameClass"/>
219 <token type="Keyword"/>
220 <token type="LiteralStringSymbol"/>
221 <token type="Keyword"/>
222 <token type="LiteralString"/>
223 <token type="Keyword"/>
224 <token type="LiteralString"/>
225 <token type="Keyword"/>
226 <token type="LiteralString"/>
227 <token type="Keyword"/>
228 <token type="LiteralString"/>
229 <token type="Keyword"/>
230 </bygroups>
231 </rule>
232 <rule pattern="^(\w+(?: class)?)(\s+instanceVariableNames: )(.*?)(!)">
233 <bygroups>
234 <token type="NameClass"/>
235 <token type="Keyword"/>
236 <token type="LiteralString"/>
237 <token type="Keyword"/>
238 </bygroups>
239 </rule>
240 <rule pattern="(!\n)(\].*)(! !)$">
241 <bygroups>
242 <token type="Keyword"/>
243 <token type="Text"/>
244 <token type="Keyword"/>
245 </bygroups>
246 </rule>
247 <rule pattern="! !$">
248 <token type="Keyword"/>
249 </rule>
250 </state>
251 <state name="method definition">
252 <rule pattern="([a-zA-Z]+\w*:)(\s*)(\w+)">
253 <bygroups>
254 <token type="NameFunction"/>
255 <token type="Text"/>
256 <token type="NameVariable"/>
257 </bygroups>
258 </rule>
259 <rule pattern="^(\b[a-zA-Z]+\w*\b)(\s*)$">
260 <bygroups>
261 <token type="NameFunction"/>
262 <token type="Text"/>
263 </bygroups>
264 </rule>
265 <rule pattern="^([-+*/\\~<>=|&!?,@%]+)(\s*)(\w+)(\s*)$">
266 <bygroups>
267 <token type="NameFunction"/>
268 <token type="Text"/>
269 <token type="NameVariable"/>
270 <token type="Text"/>
271 </bygroups>
272 </rule>
273 </state>
274 <state name="blockvariables">
275 <rule>
276 <include state="whitespaces"/>
277 </rule>
278 <rule pattern="(:)(\s*)(\w+)">
279 <bygroups>
280 <token type="Operator"/>
281 <token type="Text"/>
282 <token type="NameVariable"/>
283 </bygroups>
284 </rule>
285 <rule pattern="\|">
286 <token type="Operator"/>
287 <pop depth="1"/>
288 </rule>
289 <rule>
290 <pop depth="1"/>
291 </rule>
292 </state>
293 </rules>
294</lexer>
View as plain text