Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /smlnj-lib/trunk/JSON/json.lex.sml
ViewVC logotype

Annotation of /smlnj-lib/trunk/JSON/json.lex.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3632 - (view) (download)

1 : jhr 3206 structure JSONLexer = struct
2 :    
3 :     datatype yystart_state =
4 :     S | INITIAL
5 :     structure UserDeclarations =
6 :     struct
7 :    
8 :    
9 :     structure T = JSONTokens
10 :     type lex_result = T.token
11 :     fun eof () = T.EOF
12 :     fun int s = T.INT(valOf(IntInf.fromString s))
13 :     fun float s = T.FLOAT(valOf(LargeReal.fromString s))
14 :     (* support for incremental construction of strings *)
15 :     val sbuf : string list ref = ref []
16 :     fun addStr s = sbuf := s :: !sbuf
17 :     fun addUChr lit = let
18 :     (* trim the "\u" prefix *)
19 :     val digits = Substring.triml 2 (Substring.full lit)
20 :     val SOME(w, _) = Word.scan StringCvt.HEX Substring.getc digits
21 :     in
22 :     addStr(UTF8.encode w)
23 :     end
24 :     fun finishString () = (T.STRING(String.concat(List.rev(!sbuf))) before sbuf := [])
25 :    
26 :    
27 :     end
28 :    
29 :     local
30 :     datatype yymatch
31 :     = yyNO_MATCH
32 :     | yyMATCH of ULexBuffer.stream * action * yymatch
33 :     withtype action = ULexBuffer.stream * yymatch -> UserDeclarations.lex_result
34 :    
35 :     val yytable : ((UTF8.wchar * UTF8.wchar * int) list * int list) Vector.vector =
36 :     Vector.fromList []
37 :     fun yystreamify' p input = ULexBuffer.mkStream (p, input)
38 :    
39 :     fun yystreamifyReader' p readFn strm = let
40 :     val s = ref strm
41 :     fun iter(strm, n, accum) =
42 :     if n > 1024 then (String.implode (rev accum), strm)
43 :     else (case readFn strm
44 :     of NONE => (String.implode (rev accum), strm)
45 :     | SOME(c, strm') => iter (strm', n+1, c::accum))
46 :     fun input() = let
47 :     val (data, strm) = iter(!s, 0, [])
48 :     in
49 :     s := strm;
50 :     data
51 :     end
52 :     in
53 :     yystreamify' p input
54 :     end
55 :    
56 :     fun yystreamifyInstream' p strm = yystreamify' p (fn ()=>TextIO.input strm)
57 :    
58 :     fun innerLex
59 :     (yystrm_, yyss_, yysm) = let
60 :     (* current start state *)
61 :     val yyss = ref yyss_
62 :     fun YYBEGIN ss = (yyss := ss)
63 :     (* current input stream *)
64 :     val yystrm = ref yystrm_
65 :     fun yysetStrm strm = yystrm := strm
66 :     fun yygetPos() = ULexBuffer.getpos (!yystrm)
67 :     fun yystreamify input = yystreamify' (yygetPos()) input
68 :     fun yystreamifyReader readFn strm = yystreamifyReader' (yygetPos()) readFn strm
69 :     fun yystreamifyInstream strm = yystreamifyInstream' (yygetPos()) strm
70 :     (* start position of token -- can be updated via skip() *)
71 :     val yystartPos = ref (yygetPos())
72 :     (* get one char of input *)
73 :     fun yygetc strm = (case UTF8.getu ULexBuffer.getc strm
74 :     of (SOME (0w10, s')) =>
75 :     (AntlrStreamPos.markNewLine yysm (ULexBuffer.getpos strm);
76 :     SOME (0w10, s'))
77 :     | x => x)
78 :     fun yygetList getc strm = let
79 :     val get1 = UTF8.getu getc
80 :     fun iter (strm, accum) =
81 :     (case get1 strm
82 :     of NONE => rev accum
83 :     | SOME (w, strm') => iter (strm', w::accum)
84 :     (* end case *))
85 :     in
86 :     iter (strm, [])
87 :     end
88 :     (* create yytext *)
89 :     fun yymksubstr(strm) = ULexBuffer.subtract (strm, !yystrm)
90 :     fun yymktext(strm) = Substring.string (yymksubstr strm)
91 :     fun yymkunicode(strm) = yygetList Substring.getc (yymksubstr strm)
92 :     open UserDeclarations
93 :     fun lex () = let
94 :     fun yystuck (yyNO_MATCH) = raise Fail "lexer reached a stuck state"
95 :     | yystuck (yyMATCH (strm, action, old)) =
96 :     action (strm, old)
97 :     val yypos = yygetPos()
98 :     fun yygetlineNo strm = AntlrStreamPos.lineNo yysm (ULexBuffer.getpos strm)
99 :     fun yygetcolNo strm = AntlrStreamPos.colNo yysm (ULexBuffer.getpos strm)
100 :     fun yyactsToMatches (strm, [], oldMatches) = oldMatches
101 :     | yyactsToMatches (strm, act::acts, oldMatches) =
102 :     yyMATCH (strm, act, yyactsToMatches (strm, acts, oldMatches))
103 :     fun yygo actTable =
104 :     (fn (~1, _, oldMatches) => yystuck oldMatches
105 :     | (curState, strm, oldMatches) => let
106 :     val (transitions, finals') = Vector.sub (yytable, curState)
107 :     val finals = map (fn i => Vector.sub (actTable, i)) finals'
108 :     fun tryfinal() =
109 :     yystuck (yyactsToMatches (strm, finals, oldMatches))
110 :     fun find (c, []) = NONE
111 :     | find (c, (c1, c2, s)::ts) =
112 :     if c1 <= c andalso c <= c2 then SOME s
113 :     else find (c, ts)
114 :     in case yygetc strm
115 :     of SOME(c, strm') =>
116 :     (case find (c, transitions)
117 :     of NONE => tryfinal()
118 :     | SOME n =>
119 :     yygo actTable
120 :     (n, strm',
121 :     yyactsToMatches (strm, finals, oldMatches)))
122 :     | NONE => tryfinal()
123 :     end)
124 :     val yylastwasnref = ref (ULexBuffer.lastWasNL (!yystrm))
125 :     fun continue() = let val yylastwasn = !yylastwasnref in
126 :     let
127 :     fun yyAction0 (strm, lastMatch : yymatch) = (yystrm := strm; skip() )
128 :     fun yyAction1 (strm, lastMatch : yymatch) = (yystrm := strm; T.LCB )
129 :     fun yyAction2 (strm, lastMatch : yymatch) = (yystrm := strm; T.RCB )
130 :     fun yyAction3 (strm, lastMatch : yymatch) = (yystrm := strm; T.LB )
131 :     fun yyAction4 (strm, lastMatch : yymatch) = (yystrm := strm; T.RB )
132 :     fun yyAction5 (strm, lastMatch : yymatch) = (yystrm := strm; T.COMMA )
133 :     fun yyAction6 (strm, lastMatch : yymatch) = (yystrm := strm; T.COLON )
134 :     fun yyAction7 (strm, lastMatch : yymatch) = (yystrm := strm; T.KW_null )
135 :     fun yyAction8 (strm, lastMatch : yymatch) = (yystrm := strm; T.KW_true )
136 :     fun yyAction9 (strm, lastMatch : yymatch) = (yystrm := strm; T.KW_false )
137 :     fun yyAction10 (strm, lastMatch : yymatch) = let
138 :     val yytext = yymktext(strm)
139 :     in
140 :     yystrm := strm; T.INT(valOf(IntInf.fromString yytext))
141 :     end
142 :     fun yyAction11 (strm, lastMatch : yymatch) = let
143 :     val yytext = yymktext(strm)
144 :     in
145 :     yystrm := strm; float yytext
146 :     end
147 :     fun yyAction12 (strm, lastMatch : yymatch) = let
148 :     val yytext = yymktext(strm)
149 :     in
150 :     yystrm := strm; float yytext
151 :     end
152 :     fun yyAction13 (strm, lastMatch : yymatch) = let
153 :     val yytext = yymktext(strm)
154 :     in
155 :     yystrm := strm; float yytext
156 :     end
157 :     fun yyAction14 (strm, lastMatch : yymatch) = (yystrm := strm;
158 :     YYBEGIN S; continue() )
159 :     fun yyAction15 (strm, lastMatch : yymatch) = (yystrm := strm;
160 :     addStr "\\"; continue() )
161 :     fun yyAction16 (strm, lastMatch : yymatch) = (yystrm := strm;
162 : jhr 3632 addStr "\""; continue() )
163 :     fun yyAction17 (strm, lastMatch : yymatch) = (yystrm := strm;
164 : jhr 3206 addStr "/"; continue() )
165 : jhr 3632 fun yyAction18 (strm, lastMatch : yymatch) = (yystrm := strm;
166 : jhr 3206 addStr "\b"; continue() )
167 : jhr 3632 fun yyAction19 (strm, lastMatch : yymatch) = (yystrm := strm;
168 : jhr 3206 addStr "\f"; continue() )
169 : jhr 3632 fun yyAction20 (strm, lastMatch : yymatch) = (yystrm := strm;
170 : jhr 3206 addStr "\n"; continue() )
171 : jhr 3632 fun yyAction21 (strm, lastMatch : yymatch) = (yystrm := strm;
172 : jhr 3206 addStr "\r"; continue() )
173 : jhr 3632 fun yyAction22 (strm, lastMatch : yymatch) = (yystrm := strm;
174 : jhr 3206 addStr "\t"; continue() )
175 : jhr 3632 fun yyAction23 (strm, lastMatch : yymatch) = let
176 : jhr 3206 val yytext = yymktext(strm)
177 :     in
178 :     yystrm := strm; addUChr yytext; continue()
179 :     end
180 : jhr 3632 fun yyAction24 (strm, lastMatch : yymatch) = let
181 : jhr 3206 val yytext = yymktext(strm)
182 :     in
183 :     yystrm := strm; addStr yytext; continue()
184 :     end
185 : jhr 3632 fun yyAction25 (strm, lastMatch : yymatch) = (yystrm := strm;
186 : jhr 3206 YYBEGIN INITIAL; finishString() )
187 :     fun yyAction26 (strm, lastMatch : yymatch) = (yystrm := strm; skip() )
188 : jhr 3632 fun yyAction27 (strm, lastMatch : yymatch) = (yystrm := strm; skip() )
189 :     fun yyQ33 (strm, lastMatch : yymatch) = (case (yygetc(strm))
190 : jhr 3206 of NONE => yyAction2(strm, yyNO_MATCH)
191 :     | SOME(inp, strm') => yyAction2(strm, yyNO_MATCH)
192 :     (* end case *))
193 : jhr 3632 fun yyQ32 (strm, lastMatch : yymatch) = (case (yygetc(strm))
194 : jhr 3206 of NONE => yyAction1(strm, yyNO_MATCH)
195 :     | SOME(inp, strm') => yyAction1(strm, yyNO_MATCH)
196 :     (* end case *))
197 : jhr 3632 fun yyQ36 (strm, lastMatch : yymatch) = (case (yygetc(strm))
198 : jhr 3206 of NONE => yyAction8(strm, yyNO_MATCH)
199 :     | SOME(inp, strm') => yyAction8(strm, yyNO_MATCH)
200 :     (* end case *))
201 : jhr 3632 fun yyQ35 (strm, lastMatch : yymatch) = (case (yygetc(strm))
202 : jhr 3206 of NONE => yystuck(lastMatch)
203 :     | SOME(inp, strm') =>
204 :     if inp = 0wx65
205 : jhr 3632 then yyQ36(strm', lastMatch)
206 : jhr 3206 else yystuck(lastMatch)
207 :     (* end case *))
208 : jhr 3632 fun yyQ34 (strm, lastMatch : yymatch) = (case (yygetc(strm))
209 : jhr 3206 of NONE => yystuck(lastMatch)
210 :     | SOME(inp, strm') =>
211 :     if inp = 0wx75
212 : jhr 3632 then yyQ35(strm', lastMatch)
213 : jhr 3206 else yystuck(lastMatch)
214 :     (* end case *))
215 : jhr 3632 fun yyQ31 (strm, lastMatch : yymatch) = (case (yygetc(strm))
216 :     of NONE => yyAction27(strm, yyNO_MATCH)
217 : jhr 3206 | SOME(inp, strm') =>
218 :     if inp = 0wx72
219 : jhr 3632 then yyQ34(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
220 :     else yyAction27(strm, yyNO_MATCH)
221 : jhr 3206 (* end case *))
222 : jhr 3632 fun yyQ39 (strm, lastMatch : yymatch) = (case (yygetc(strm))
223 : jhr 3206 of NONE => yyAction7(strm, yyNO_MATCH)
224 :     | SOME(inp, strm') => yyAction7(strm, yyNO_MATCH)
225 :     (* end case *))
226 : jhr 3632 fun yyQ38 (strm, lastMatch : yymatch) = (case (yygetc(strm))
227 : jhr 3206 of NONE => yystuck(lastMatch)
228 :     | SOME(inp, strm') =>
229 :     if inp = 0wx6C
230 : jhr 3632 then yyQ39(strm', lastMatch)
231 : jhr 3206 else yystuck(lastMatch)
232 :     (* end case *))
233 : jhr 3632 fun yyQ37 (strm, lastMatch : yymatch) = (case (yygetc(strm))
234 : jhr 3206 of NONE => yystuck(lastMatch)
235 :     | SOME(inp, strm') =>
236 :     if inp = 0wx6C
237 : jhr 3632 then yyQ38(strm', lastMatch)
238 : jhr 3206 else yystuck(lastMatch)
239 :     (* end case *))
240 : jhr 3632 fun yyQ30 (strm, lastMatch : yymatch) = (case (yygetc(strm))
241 :     of NONE => yyAction27(strm, yyNO_MATCH)
242 : jhr 3206 | SOME(inp, strm') =>
243 :     if inp = 0wx75
244 : jhr 3632 then yyQ37(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
245 :     else yyAction27(strm, yyNO_MATCH)
246 : jhr 3206 (* end case *))
247 : jhr 3632 fun yyQ43 (strm, lastMatch : yymatch) = (case (yygetc(strm))
248 : jhr 3206 of NONE => yyAction9(strm, yyNO_MATCH)
249 :     | SOME(inp, strm') => yyAction9(strm, yyNO_MATCH)
250 :     (* end case *))
251 : jhr 3632 fun yyQ42 (strm, lastMatch : yymatch) = (case (yygetc(strm))
252 : jhr 3206 of NONE => yystuck(lastMatch)
253 :     | SOME(inp, strm') =>
254 :     if inp = 0wx65
255 : jhr 3632 then yyQ43(strm', lastMatch)
256 : jhr 3206 else yystuck(lastMatch)
257 :     (* end case *))
258 : jhr 3632 fun yyQ41 (strm, lastMatch : yymatch) = (case (yygetc(strm))
259 : jhr 3206 of NONE => yystuck(lastMatch)
260 :     | SOME(inp, strm') =>
261 :     if inp = 0wx73
262 : jhr 3632 then yyQ42(strm', lastMatch)
263 : jhr 3206 else yystuck(lastMatch)
264 :     (* end case *))
265 : jhr 3632 fun yyQ40 (strm, lastMatch : yymatch) = (case (yygetc(strm))
266 : jhr 3206 of NONE => yystuck(lastMatch)
267 :     | SOME(inp, strm') =>
268 :     if inp = 0wx6C
269 : jhr 3632 then yyQ41(strm', lastMatch)
270 : jhr 3206 else yystuck(lastMatch)
271 :     (* end case *))
272 : jhr 3632 fun yyQ29 (strm, lastMatch : yymatch) = (case (yygetc(strm))
273 :     of NONE => yyAction27(strm, yyNO_MATCH)
274 : jhr 3206 | SOME(inp, strm') =>
275 :     if inp = 0wx61
276 : jhr 3632 then yyQ40(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
277 :     else yyAction27(strm, yyNO_MATCH)
278 : jhr 3206 (* end case *))
279 : jhr 3632 fun yyQ28 (strm, lastMatch : yymatch) = (case (yygetc(strm))
280 : jhr 3206 of NONE => yyAction4(strm, yyNO_MATCH)
281 :     | SOME(inp, strm') => yyAction4(strm, yyNO_MATCH)
282 :     (* end case *))
283 : jhr 3632 fun yyQ27 (strm, lastMatch : yymatch) = (case (yygetc(strm))
284 : jhr 3206 of NONE => yyAction3(strm, yyNO_MATCH)
285 :     | SOME(inp, strm') => yyAction3(strm, yyNO_MATCH)
286 :     (* end case *))
287 : jhr 3632 fun yyQ26 (strm, lastMatch : yymatch) = (case (yygetc(strm))
288 : jhr 3206 of NONE => yyAction6(strm, yyNO_MATCH)
289 :     | SOME(inp, strm') => yyAction6(strm, yyNO_MATCH)
290 :     (* end case *))
291 : jhr 3632 fun yyQ48 (strm, lastMatch : yymatch) = (case (yygetc(strm))
292 : jhr 3206 of NONE => yyAction12(strm, yyNO_MATCH)
293 :     | SOME(inp, strm') =>
294 :     if inp = 0wx30
295 : jhr 3632 then yyQ48(strm', yyMATCH(strm, yyAction12, yyNO_MATCH))
296 : jhr 3206 else if inp < 0wx30
297 :     then yyAction12(strm, yyNO_MATCH)
298 :     else if inp <= 0wx39
299 : jhr 3632 then yyQ48(strm', yyMATCH(strm, yyAction12, yyNO_MATCH))
300 : jhr 3206 else yyAction12(strm, yyNO_MATCH)
301 :     (* end case *))
302 : jhr 3632 fun yyQ47 (strm, lastMatch : yymatch) = (case (yygetc(strm))
303 : jhr 3206 of NONE => yystuck(lastMatch)
304 :     | SOME(inp, strm') =>
305 :     if inp = 0wx30
306 : jhr 3632 then yyQ48(strm', lastMatch)
307 : jhr 3206 else if inp < 0wx30
308 :     then yystuck(lastMatch)
309 :     else if inp <= 0wx39
310 : jhr 3632 then yyQ48(strm', lastMatch)
311 : jhr 3206 else yystuck(lastMatch)
312 :     (* end case *))
313 : jhr 3632 fun yyQ46 (strm, lastMatch : yymatch) = (case (yygetc(strm))
314 : jhr 3206 of NONE => yystuck(lastMatch)
315 :     | SOME(inp, strm') =>
316 :     if inp = 0wx2D
317 : jhr 3632 then yyQ47(strm', lastMatch)
318 : jhr 3206 else if inp < 0wx2D
319 :     then if inp = 0wx2B
320 : jhr 3632 then yyQ47(strm', lastMatch)
321 : jhr 3206 else yystuck(lastMatch)
322 :     else if inp = 0wx30
323 : jhr 3632 then yyQ48(strm', lastMatch)
324 : jhr 3206 else if inp < 0wx30
325 :     then yystuck(lastMatch)
326 :     else if inp <= 0wx39
327 : jhr 3632 then yyQ48(strm', lastMatch)
328 : jhr 3206 else yystuck(lastMatch)
329 :     (* end case *))
330 : jhr 3632 fun yyQ52 (strm, lastMatch : yymatch) = (case (yygetc(strm))
331 : jhr 3206 of NONE => yyAction13(strm, yyNO_MATCH)
332 :     | SOME(inp, strm') =>
333 :     if inp = 0wx30
334 : jhr 3632 then yyQ52(strm', yyMATCH(strm, yyAction13, yyNO_MATCH))
335 : jhr 3206 else if inp < 0wx30
336 :     then yyAction13(strm, yyNO_MATCH)
337 :     else if inp <= 0wx39
338 : jhr 3632 then yyQ52(strm', yyMATCH(strm, yyAction13, yyNO_MATCH))
339 : jhr 3206 else yyAction13(strm, yyNO_MATCH)
340 :     (* end case *))
341 : jhr 3632 fun yyQ51 (strm, lastMatch : yymatch) = (case (yygetc(strm))
342 : jhr 3206 of NONE => yystuck(lastMatch)
343 :     | SOME(inp, strm') =>
344 :     if inp = 0wx30
345 : jhr 3632 then yyQ52(strm', lastMatch)
346 : jhr 3206 else if inp < 0wx30
347 :     then yystuck(lastMatch)
348 :     else if inp <= 0wx39
349 : jhr 3632 then yyQ52(strm', lastMatch)
350 : jhr 3206 else yystuck(lastMatch)
351 :     (* end case *))
352 : jhr 3632 fun yyQ50 (strm, lastMatch : yymatch) = (case (yygetc(strm))
353 : jhr 3206 of NONE => yystuck(lastMatch)
354 :     | SOME(inp, strm') =>
355 :     if inp = 0wx2D
356 : jhr 3632 then yyQ51(strm', lastMatch)
357 : jhr 3206 else if inp < 0wx2D
358 :     then if inp = 0wx2B
359 : jhr 3632 then yyQ51(strm', lastMatch)
360 : jhr 3206 else yystuck(lastMatch)
361 :     else if inp = 0wx30
362 : jhr 3632 then yyQ52(strm', lastMatch)
363 : jhr 3206 else if inp < 0wx30
364 :     then yystuck(lastMatch)
365 :     else if inp <= 0wx39
366 : jhr 3632 then yyQ52(strm', lastMatch)
367 : jhr 3206 else yystuck(lastMatch)
368 :     (* end case *))
369 : jhr 3632 fun yyQ49 (strm, lastMatch : yymatch) = (case (yygetc(strm))
370 : jhr 3206 of NONE => yyAction11(strm, yyNO_MATCH)
371 :     | SOME(inp, strm') =>
372 :     if inp = 0wx45
373 : jhr 3632 then yyQ50(strm', yyMATCH(strm, yyAction11, yyNO_MATCH))
374 : jhr 3206 else if inp < 0wx45
375 :     then if inp = 0wx30
376 : jhr 3632 then yyQ49(strm', yyMATCH(strm, yyAction11, yyNO_MATCH))
377 : jhr 3206 else if inp < 0wx30
378 :     then yyAction11(strm, yyNO_MATCH)
379 :     else if inp <= 0wx39
380 : jhr 3632 then yyQ49(strm', yyMATCH(strm, yyAction11, yyNO_MATCH))
381 : jhr 3206 else yyAction11(strm, yyNO_MATCH)
382 :     else if inp = 0wx65
383 : jhr 3632 then yyQ50(strm', yyMATCH(strm, yyAction11, yyNO_MATCH))
384 : jhr 3206 else yyAction11(strm, yyNO_MATCH)
385 :     (* end case *))
386 : jhr 3632 fun yyQ44 (strm, lastMatch : yymatch) = (case (yygetc(strm))
387 : jhr 3206 of NONE => yystuck(lastMatch)
388 :     | SOME(inp, strm') =>
389 :     if inp = 0wx30
390 : jhr 3632 then yyQ49(strm', lastMatch)
391 : jhr 3206 else if inp < 0wx30
392 :     then yystuck(lastMatch)
393 :     else if inp <= 0wx39
394 : jhr 3632 then yyQ49(strm', lastMatch)
395 : jhr 3206 else yystuck(lastMatch)
396 :     (* end case *))
397 : jhr 3632 fun yyQ45 (strm, lastMatch : yymatch) = (case (yygetc(strm))
398 : jhr 3206 of NONE => yyAction10(strm, yyNO_MATCH)
399 :     | SOME(inp, strm') =>
400 :     if inp = 0wx3A
401 :     then yyAction10(strm, yyNO_MATCH)
402 :     else if inp < 0wx3A
403 :     then if inp = 0wx2F
404 :     then yyAction10(strm, yyNO_MATCH)
405 :     else if inp < 0wx2F
406 :     then if inp = 0wx2E
407 : jhr 3632 then yyQ44(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
408 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
409 : jhr 3632 else yyQ45(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
410 : jhr 3206 else if inp = 0wx46
411 :     then yyAction10(strm, yyNO_MATCH)
412 :     else if inp < 0wx46
413 :     then if inp = 0wx45
414 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
415 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
416 :     else if inp = 0wx65
417 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
418 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
419 :     (* end case *))
420 : jhr 3632 fun yyQ25 (strm, lastMatch : yymatch) = (case (yygetc(strm))
421 : jhr 3206 of NONE => yyAction10(strm, yyNO_MATCH)
422 :     | SOME(inp, strm') =>
423 :     if inp = 0wx3A
424 :     then yyAction10(strm, yyNO_MATCH)
425 :     else if inp < 0wx3A
426 :     then if inp = 0wx2F
427 :     then yyAction10(strm, yyNO_MATCH)
428 :     else if inp < 0wx2F
429 :     then if inp = 0wx2E
430 : jhr 3632 then yyQ44(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
431 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
432 : jhr 3632 else yyQ45(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
433 : jhr 3206 else if inp = 0wx46
434 :     then yyAction10(strm, yyNO_MATCH)
435 :     else if inp < 0wx46
436 :     then if inp = 0wx45
437 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
438 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
439 :     else if inp = 0wx65
440 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
441 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
442 :     (* end case *))
443 : jhr 3632 fun yyQ24 (strm, lastMatch : yymatch) = (case (yygetc(strm))
444 : jhr 3206 of NONE => yyAction10(strm, yyNO_MATCH)
445 :     | SOME(inp, strm') =>
446 :     if inp = 0wx45
447 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
448 : jhr 3206 else if inp < 0wx45
449 :     then if inp = 0wx2E
450 : jhr 3632 then yyQ44(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
451 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
452 :     else if inp = 0wx65
453 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
454 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
455 :     (* end case *))
456 : jhr 3632 fun yyQ57 (strm, lastMatch : yymatch) = (case (yygetc(strm))
457 : jhr 3206 of NONE => yystuck(lastMatch)
458 :     | SOME(inp, strm') =>
459 :     if inp = 0wx2A
460 : jhr 3632 then yyQ57(strm', lastMatch)
461 :     else yyQ56(strm', lastMatch)
462 : jhr 3206 (* end case *))
463 : jhr 3632 and yyQ56 (strm, lastMatch : yymatch) = (case (yygetc(strm))
464 : jhr 3206 of NONE => yystuck(lastMatch)
465 :     | SOME(inp, strm') =>
466 :     if inp = 0wx2A
467 : jhr 3632 then yyQ57(strm', lastMatch)
468 :     else yyQ56(strm', lastMatch)
469 : jhr 3206 (* end case *))
470 : jhr 3632 fun yyQ55 (strm, lastMatch : yymatch) = (case (yygetc(strm))
471 :     of NONE => yyAction26(strm, yyNO_MATCH)
472 : jhr 3206 | SOME(inp, strm') =>
473 :     if inp = 0wx2A
474 : jhr 3632 then yyQ57(strm', yyMATCH(strm, yyAction26, yyNO_MATCH))
475 :     else yyQ56(strm', yyMATCH(strm, yyAction26, yyNO_MATCH))
476 : jhr 3206 (* end case *))
477 : jhr 3632 fun yyQ53 (strm, lastMatch : yymatch) = (case (yygetc(strm))
478 : jhr 3206 of NONE => yystuck(lastMatch)
479 :     | SOME(inp, strm') =>
480 :     if inp = 0wx2A
481 : jhr 3632 then yyQ54(strm', lastMatch)
482 :     else yyQ53(strm', lastMatch)
483 : jhr 3206 (* end case *))
484 : jhr 3632 and yyQ54 (strm, lastMatch : yymatch) = (case (yygetc(strm))
485 : jhr 3206 of NONE => yystuck(lastMatch)
486 :     | SOME(inp, strm') =>
487 :     if inp = 0wx2B
488 : jhr 3632 then yyQ53(strm', lastMatch)
489 : jhr 3206 else if inp < 0wx2B
490 :     then if inp = 0wx2A
491 : jhr 3632 then yyQ54(strm', lastMatch)
492 :     else yyQ53(strm', lastMatch)
493 : jhr 3206 else if inp = 0wx2F
494 : jhr 3632 then yyQ55(strm', lastMatch)
495 :     else yyQ53(strm', lastMatch)
496 : jhr 3206 (* end case *))
497 : jhr 3632 fun yyQ23 (strm, lastMatch : yymatch) = (case (yygetc(strm))
498 :     of NONE => yyAction27(strm, yyNO_MATCH)
499 : jhr 3206 | SOME(inp, strm') =>
500 :     if inp = 0wx2A
501 : jhr 3632 then yyQ53(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
502 :     else yyAction27(strm, yyNO_MATCH)
503 : jhr 3206 (* end case *))
504 : jhr 3632 fun yyQ59 (strm, lastMatch : yymatch) = (case (yygetc(strm))
505 : jhr 3206 of NONE => yyAction10(strm, yyNO_MATCH)
506 :     | SOME(inp, strm') =>
507 :     if inp = 0wx3A
508 :     then yyAction10(strm, yyNO_MATCH)
509 :     else if inp < 0wx3A
510 :     then if inp = 0wx2F
511 :     then yyAction10(strm, yyNO_MATCH)
512 :     else if inp < 0wx2F
513 :     then if inp = 0wx2E
514 : jhr 3632 then yyQ44(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
515 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
516 : jhr 3632 else yyQ45(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
517 : jhr 3206 else if inp = 0wx46
518 :     then yyAction10(strm, yyNO_MATCH)
519 :     else if inp < 0wx46
520 :     then if inp = 0wx45
521 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
522 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
523 :     else if inp = 0wx65
524 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
525 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
526 :     (* end case *))
527 : jhr 3632 fun yyQ58 (strm, lastMatch : yymatch) = (case (yygetc(strm))
528 : jhr 3206 of NONE => yyAction10(strm, yyNO_MATCH)
529 :     | SOME(inp, strm') =>
530 :     if inp = 0wx45
531 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
532 : jhr 3206 else if inp < 0wx45
533 :     then if inp = 0wx2E
534 : jhr 3632 then yyQ44(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
535 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
536 :     else if inp = 0wx65
537 : jhr 3632 then yyQ46(strm', yyMATCH(strm, yyAction10, yyNO_MATCH))
538 : jhr 3206 else yyAction10(strm, yyNO_MATCH)
539 :     (* end case *))
540 : jhr 3632 fun yyQ22 (strm, lastMatch : yymatch) = (case (yygetc(strm))
541 :     of NONE => yyAction27(strm, yyNO_MATCH)
542 : jhr 3206 | SOME(inp, strm') =>
543 :     if inp = 0wx31
544 : jhr 3632 then yyQ59(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
545 : jhr 3206 else if inp < 0wx31
546 :     then if inp = 0wx30
547 : jhr 3632 then yyQ58(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
548 :     else yyAction27(strm, yyNO_MATCH)
549 : jhr 3206 else if inp <= 0wx39
550 : jhr 3632 then yyQ59(strm', yyMATCH(strm, yyAction27, yyNO_MATCH))
551 :     else yyAction27(strm, yyNO_MATCH)
552 : jhr 3206 (* end case *))
553 : jhr 3632 fun yyQ21 (strm, lastMatch : yymatch) = (case (yygetc(strm))
554 : jhr 3206 of NONE => yyAction5(strm, yyNO_MATCH)
555 :     | SOME(inp, strm') => yyAction5(strm, yyNO_MATCH)
556 :     (* end case *))
557 : jhr 3632 fun yyQ20 (strm, lastMatch : yymatch) = (case (yygetc(strm))
558 : jhr 3206 of NONE => yyAction14(strm, yyNO_MATCH)
559 :     | SOME(inp, strm') => yyAction14(strm, yyNO_MATCH)
560 :     (* end case *))
561 : jhr 3632 fun yyQ60 (strm, lastMatch : yymatch) = (case (yygetc(strm))
562 : jhr 3206 of NONE => yyAction0(strm, yyNO_MATCH)
563 :     | SOME(inp, strm') =>
564 :     if inp = 0wxD
565 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
566 : jhr 3206 else if inp < 0wxD
567 :     then if inp = 0wx9
568 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
569 : jhr 3206 else if inp < 0wx9
570 :     then yyAction0(strm, yyNO_MATCH)
571 :     else if inp <= 0wxA
572 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
573 : jhr 3206 else yyAction0(strm, yyNO_MATCH)
574 :     else if inp = 0wx20
575 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
576 : jhr 3206 else yyAction0(strm, yyNO_MATCH)
577 :     (* end case *))
578 : jhr 3632 fun yyQ19 (strm, lastMatch : yymatch) = (case (yygetc(strm))
579 : jhr 3206 of NONE => yyAction0(strm, yyNO_MATCH)
580 :     | SOME(inp, strm') =>
581 :     if inp = 0wxD
582 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
583 : jhr 3206 else if inp < 0wxD
584 :     then if inp = 0wx9
585 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
586 : jhr 3206 else if inp < 0wx9
587 :     then yyAction0(strm, yyNO_MATCH)
588 :     else if inp <= 0wxA
589 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
590 : jhr 3206 else yyAction0(strm, yyNO_MATCH)
591 :     else if inp = 0wx20
592 : jhr 3632 then yyQ60(strm', yyMATCH(strm, yyAction0, yyNO_MATCH))
593 : jhr 3206 else yyAction0(strm, yyNO_MATCH)
594 :     (* end case *))
595 : jhr 3632 fun yyQ18 (strm, lastMatch : yymatch) = (case (yygetc(strm))
596 :     of NONE => yyAction27(strm, yyNO_MATCH)
597 :     | SOME(inp, strm') => yyAction27(strm, yyNO_MATCH)
598 : jhr 3206 (* end case *))
599 :     fun yyQ1 (strm, lastMatch : yymatch) = (case (yygetc(strm))
600 :     of NONE =>
601 :     if ULexBuffer.eof(!(yystrm))
602 :     then let
603 :     val yycolno = ref(yygetcolNo(!(yystrm)))
604 :     val yylineno = ref(yygetlineNo(!(yystrm)))
605 :     in
606 :     (case (!(yyss))
607 :     of _ => (UserDeclarations.eof())
608 :     (* end case *))
609 :     end
610 :     else yystuck(lastMatch)
611 :     | SOME(inp, strm') =>
612 :     if inp = 0wx3A
613 : jhr 3632 then yyQ26(strm', lastMatch)
614 : jhr 3206 else if inp < 0wx3A
615 :     then if inp = 0wx22
616 : jhr 3632 then yyQ20(strm', lastMatch)
617 : jhr 3206 else if inp < 0wx22
618 :     then if inp = 0wxD
619 : jhr 3632 then yyQ19(strm', lastMatch)
620 : jhr 3206 else if inp < 0wxD
621 :     then if inp = 0wx9
622 : jhr 3632 then yyQ19(strm', lastMatch)
623 :     else if inp < 0wx9
624 : jhr 3206 then yyQ18(strm', lastMatch)
625 :     else if inp <= 0wxA
626 : jhr 3632 then yyQ19(strm', lastMatch)
627 :     else yyQ18(strm', lastMatch)
628 : jhr 3206 else if inp = 0wx20
629 : jhr 3632 then yyQ19(strm', lastMatch)
630 :     else yyQ18(strm', lastMatch)
631 : jhr 3206 else if inp = 0wx2E
632 : jhr 3632 then yyQ18(strm', lastMatch)
633 : jhr 3206 else if inp < 0wx2E
634 :     then if inp = 0wx2C
635 : jhr 3632 then yyQ21(strm', lastMatch)
636 : jhr 3206 else if inp = 0wx2D
637 : jhr 3632 then yyQ22(strm', lastMatch)
638 :     else yyQ18(strm', lastMatch)
639 : jhr 3206 else if inp = 0wx30
640 : jhr 3632 then yyQ24(strm', lastMatch)
641 :     else if inp = 0wx2F
642 : jhr 3206 then yyQ23(strm', lastMatch)
643 : jhr 3632 else yyQ25(strm', lastMatch)
644 : jhr 3206 else if inp = 0wx6E
645 : jhr 3632 then yyQ30(strm', lastMatch)
646 : jhr 3206 else if inp < 0wx6E
647 :     then if inp = 0wx5D
648 : jhr 3632 then yyQ28(strm', lastMatch)
649 : jhr 3206 else if inp < 0wx5D
650 :     then if inp = 0wx5B
651 : jhr 3632 then yyQ27(strm', lastMatch)
652 :     else yyQ18(strm', lastMatch)
653 : jhr 3206 else if inp = 0wx66
654 : jhr 3632 then yyQ29(strm', lastMatch)
655 :     else yyQ18(strm', lastMatch)
656 : jhr 3206 else if inp = 0wx7B
657 : jhr 3632 then yyQ32(strm', lastMatch)
658 : jhr 3206 else if inp < 0wx7B
659 :     then if inp = 0wx74
660 : jhr 3632 then yyQ31(strm', lastMatch)
661 :     else yyQ18(strm', lastMatch)
662 : jhr 3206 else if inp = 0wx7D
663 : jhr 3632 then yyQ33(strm', lastMatch)
664 :     else yyQ18(strm', lastMatch)
665 : jhr 3206 (* end case *))
666 : jhr 3632 fun yyQ17 (strm, lastMatch : yymatch) = (case (yygetc(strm))
667 :     of NONE => yyAction23(strm, yyNO_MATCH)
668 :     | SOME(inp, strm') => yyAction23(strm, yyNO_MATCH)
669 :     (* end case *))
670 : jhr 3206 fun yyQ16 (strm, lastMatch : yymatch) = (case (yygetc(strm))
671 : jhr 3632 of NONE => yystuck(lastMatch)
672 :     | SOME(inp, strm') =>
673 :     if inp = 0wx41
674 :     then yyQ17(strm', lastMatch)
675 :     else if inp < 0wx41
676 :     then if inp = 0wx30
677 :     then yyQ17(strm', lastMatch)
678 :     else if inp < 0wx30
679 :     then yystuck(lastMatch)
680 :     else if inp <= 0wx39
681 :     then yyQ17(strm', lastMatch)
682 :     else yystuck(lastMatch)
683 :     else if inp = 0wx61
684 :     then yyQ17(strm', lastMatch)
685 :     else if inp < 0wx61
686 :     then if inp <= 0wx46
687 :     then yyQ17(strm', lastMatch)
688 :     else yystuck(lastMatch)
689 :     else if inp <= 0wx66
690 :     then yyQ17(strm', lastMatch)
691 :     else yystuck(lastMatch)
692 : jhr 3206 (* end case *))
693 :     fun yyQ15 (strm, lastMatch : yymatch) = (case (yygetc(strm))
694 :     of NONE => yystuck(lastMatch)
695 :     | SOME(inp, strm') =>
696 :     if inp = 0wx41
697 :     then yyQ16(strm', lastMatch)
698 :     else if inp < 0wx41
699 :     then if inp = 0wx30
700 :     then yyQ16(strm', lastMatch)
701 :     else if inp < 0wx30
702 :     then yystuck(lastMatch)
703 :     else if inp <= 0wx39
704 :     then yyQ16(strm', lastMatch)
705 :     else yystuck(lastMatch)
706 :     else if inp = 0wx61
707 :     then yyQ16(strm', lastMatch)
708 :     else if inp < 0wx61
709 :     then if inp <= 0wx46
710 :     then yyQ16(strm', lastMatch)
711 :     else yystuck(lastMatch)
712 :     else if inp <= 0wx66
713 :     then yyQ16(strm', lastMatch)
714 :     else yystuck(lastMatch)
715 :     (* end case *))
716 :     fun yyQ14 (strm, lastMatch : yymatch) = (case (yygetc(strm))
717 :     of NONE => yystuck(lastMatch)
718 :     | SOME(inp, strm') =>
719 :     if inp = 0wx41
720 :     then yyQ15(strm', lastMatch)
721 :     else if inp < 0wx41
722 :     then if inp = 0wx30
723 :     then yyQ15(strm', lastMatch)
724 :     else if inp < 0wx30
725 :     then yystuck(lastMatch)
726 :     else if inp <= 0wx39
727 :     then yyQ15(strm', lastMatch)
728 :     else yystuck(lastMatch)
729 :     else if inp = 0wx61
730 :     then yyQ15(strm', lastMatch)
731 :     else if inp < 0wx61
732 :     then if inp <= 0wx46
733 :     then yyQ15(strm', lastMatch)
734 :     else yystuck(lastMatch)
735 :     else if inp <= 0wx66
736 :     then yyQ15(strm', lastMatch)
737 :     else yystuck(lastMatch)
738 :     (* end case *))
739 :     fun yyQ13 (strm, lastMatch : yymatch) = (case (yygetc(strm))
740 :     of NONE => yystuck(lastMatch)
741 :     | SOME(inp, strm') =>
742 :     if inp = 0wx41
743 :     then yyQ14(strm', lastMatch)
744 :     else if inp < 0wx41
745 :     then if inp = 0wx30
746 :     then yyQ14(strm', lastMatch)
747 :     else if inp < 0wx30
748 :     then yystuck(lastMatch)
749 :     else if inp <= 0wx39
750 :     then yyQ14(strm', lastMatch)
751 :     else yystuck(lastMatch)
752 :     else if inp = 0wx61
753 :     then yyQ14(strm', lastMatch)
754 :     else if inp < 0wx61
755 :     then if inp <= 0wx46
756 :     then yyQ14(strm', lastMatch)
757 :     else yystuck(lastMatch)
758 :     else if inp <= 0wx66
759 :     then yyQ14(strm', lastMatch)
760 :     else yystuck(lastMatch)
761 :     (* end case *))
762 :     fun yyQ12 (strm, lastMatch : yymatch) = (case (yygetc(strm))
763 : jhr 3632 of NONE => yyAction22(strm, yyNO_MATCH)
764 :     | SOME(inp, strm') => yyAction22(strm, yyNO_MATCH)
765 : jhr 3206 (* end case *))
766 :     fun yyQ11 (strm, lastMatch : yymatch) = (case (yygetc(strm))
767 :     of NONE => yyAction21(strm, yyNO_MATCH)
768 :     | SOME(inp, strm') => yyAction21(strm, yyNO_MATCH)
769 :     (* end case *))
770 :     fun yyQ10 (strm, lastMatch : yymatch) = (case (yygetc(strm))
771 :     of NONE => yyAction20(strm, yyNO_MATCH)
772 :     | SOME(inp, strm') => yyAction20(strm, yyNO_MATCH)
773 :     (* end case *))
774 :     fun yyQ9 (strm, lastMatch : yymatch) = (case (yygetc(strm))
775 :     of NONE => yyAction19(strm, yyNO_MATCH)
776 :     | SOME(inp, strm') => yyAction19(strm, yyNO_MATCH)
777 :     (* end case *))
778 :     fun yyQ8 (strm, lastMatch : yymatch) = (case (yygetc(strm))
779 :     of NONE => yyAction18(strm, yyNO_MATCH)
780 :     | SOME(inp, strm') => yyAction18(strm, yyNO_MATCH)
781 :     (* end case *))
782 :     fun yyQ7 (strm, lastMatch : yymatch) = (case (yygetc(strm))
783 : jhr 3632 of NONE => yyAction15(strm, yyNO_MATCH)
784 :     | SOME(inp, strm') => yyAction15(strm, yyNO_MATCH)
785 :     (* end case *))
786 :     fun yyQ6 (strm, lastMatch : yymatch) = (case (yygetc(strm))
787 : jhr 3206 of NONE => yyAction17(strm, yyNO_MATCH)
788 :     | SOME(inp, strm') => yyAction17(strm, yyNO_MATCH)
789 :     (* end case *))
790 : jhr 3632 fun yyQ5 (strm, lastMatch : yymatch) = (case (yygetc(strm))
791 : jhr 3206 of NONE => yyAction16(strm, yyNO_MATCH)
792 :     | SOME(inp, strm') => yyAction16(strm, yyNO_MATCH)
793 :     (* end case *))
794 :     fun yyQ4 (strm, lastMatch : yymatch) = (case (yygetc(strm))
795 :     of NONE => yystuck(lastMatch)
796 :     | SOME(inp, strm') =>
797 : jhr 3632 if inp = 0wx66
798 :     then yyQ9(strm', lastMatch)
799 :     else if inp < 0wx66
800 : jhr 3206 then if inp = 0wx30
801 :     then yystuck(lastMatch)
802 :     else if inp < 0wx30
803 :     then if inp = 0wx23
804 :     then yystuck(lastMatch)
805 :     else if inp < 0wx23
806 :     then if inp = 0wx22
807 :     then yyQ5(strm', lastMatch)
808 :     else yystuck(lastMatch)
809 :     else if inp = 0wx2F
810 :     then yyQ6(strm', lastMatch)
811 :     else yystuck(lastMatch)
812 : jhr 3632 else if inp = 0wx5D
813 : jhr 3206 then yystuck(lastMatch)
814 : jhr 3632 else if inp < 0wx5D
815 :     then if inp = 0wx5C
816 : jhr 3206 then yyQ7(strm', lastMatch)
817 :     else yystuck(lastMatch)
818 : jhr 3632 else if inp = 0wx62
819 : jhr 3206 then yyQ8(strm', lastMatch)
820 :     else yystuck(lastMatch)
821 :     else if inp = 0wx73
822 :     then yystuck(lastMatch)
823 :     else if inp < 0wx73
824 :     then if inp = 0wx6F
825 :     then yystuck(lastMatch)
826 :     else if inp < 0wx6F
827 :     then if inp = 0wx6E
828 : jhr 3632 then yyQ10(strm', lastMatch)
829 : jhr 3206 else yystuck(lastMatch)
830 :     else if inp = 0wx72
831 : jhr 3632 then yyQ11(strm', lastMatch)
832 : jhr 3206 else yystuck(lastMatch)
833 :     else if inp = 0wx75
834 : jhr 3632 then yyQ13(strm', lastMatch)
835 :     else if inp = 0wx74
836 : jhr 3206 then yyQ12(strm', lastMatch)
837 :     else yystuck(lastMatch)
838 :     (* end case *))
839 :     fun yyQ3 (strm, lastMatch : yymatch) = (case (yygetc(strm))
840 : jhr 3632 of NONE => yyAction25(strm, yyNO_MATCH)
841 :     | SOME(inp, strm') => yyAction25(strm, yyNO_MATCH)
842 : jhr 3206 (* end case *))
843 :     fun yyQ2 (strm, lastMatch : yymatch) = (case (yygetc(strm))
844 : jhr 3632 of NONE => yyAction24(strm, yyNO_MATCH)
845 : jhr 3206 | SOME(inp, strm') =>
846 :     if inp = 0wx23
847 : jhr 3632 then yyQ2(strm', yyMATCH(strm, yyAction24, yyNO_MATCH))
848 : jhr 3206 else if inp < 0wx23
849 :     then if inp = 0wx22
850 : jhr 3632 then yyAction24(strm, yyNO_MATCH)
851 :     else yyQ2(strm', yyMATCH(strm, yyAction24, yyNO_MATCH))
852 : jhr 3206 else if inp = 0wx5C
853 : jhr 3632 then yyAction24(strm, yyNO_MATCH)
854 :     else yyQ2(strm', yyMATCH(strm, yyAction24, yyNO_MATCH))
855 : jhr 3206 (* end case *))
856 :     fun yyQ0 (strm, lastMatch : yymatch) = (case (yygetc(strm))
857 :     of NONE =>
858 :     if ULexBuffer.eof(!(yystrm))
859 :     then let
860 :     val yycolno = ref(yygetcolNo(!(yystrm)))
861 :     val yylineno = ref(yygetlineNo(!(yystrm)))
862 :     in
863 :     (case (!(yyss))
864 :     of _ => (UserDeclarations.eof())
865 :     (* end case *))
866 :     end
867 :     else yystuck(lastMatch)
868 :     | SOME(inp, strm') =>
869 :     if inp = 0wx23
870 :     then yyQ2(strm', lastMatch)
871 :     else if inp < 0wx23
872 :     then if inp = 0wx22
873 :     then yyQ3(strm', lastMatch)
874 :     else yyQ2(strm', lastMatch)
875 :     else if inp = 0wx5C
876 :     then yyQ4(strm', lastMatch)
877 :     else yyQ2(strm', lastMatch)
878 :     (* end case *))
879 :     in
880 :     (case (!(yyss))
881 :     of S => yyQ0(!(yystrm), yyNO_MATCH)
882 :     | INITIAL => yyQ1(!(yystrm), yyNO_MATCH)
883 :     (* end case *))
884 :     end
885 :     end
886 :     and skip() = (yystartPos := yygetPos();
887 :     yylastwasnref := ULexBuffer.lastWasNL (!yystrm);
888 :     continue())
889 :     in (continue(), (!yystartPos, yygetPos()), !yystrm, !yyss) end
890 :     in
891 :     lex()
892 :     end
893 :     in
894 :     type pos = AntlrStreamPos.pos
895 :     type span = AntlrStreamPos.span
896 :     type tok = UserDeclarations.lex_result
897 :    
898 :     datatype prestrm = STRM of ULexBuffer.stream *
899 :     (yystart_state * tok * span * prestrm * yystart_state) option ref
900 :     type strm = (prestrm * yystart_state)
901 :    
902 :     fun lex sm
903 :     (STRM (yystrm, memo), ss) = (case !memo
904 :     of NONE => let
905 :     val (tok, span, yystrm', ss') = innerLex
906 :     (yystrm, ss, sm)
907 :     val strm' = STRM (yystrm', ref NONE);
908 :     in
909 :     memo := SOME (ss, tok, span, strm', ss');
910 :     (tok, span, (strm', ss'))
911 :     end
912 :     | SOME (ss', tok, span, strm', ss'') =>
913 :     if ss = ss' then
914 :     (tok, span, (strm', ss''))
915 :     else (
916 :     memo := NONE;
917 :     lex sm
918 :     (STRM (yystrm, memo), ss))
919 :     (* end case *))
920 :    
921 :     fun streamify input = (STRM (yystreamify' 0 input, ref NONE), INITIAL)
922 :     fun streamifyReader readFn strm = (STRM (yystreamifyReader' 0 readFn strm, ref NONE),
923 :     INITIAL)
924 :     fun streamifyInstream strm = (STRM (yystreamifyInstream' 0 strm, ref NONE),
925 :     INITIAL)
926 :    
927 :     fun getPos (STRM (strm, _), _) = ULexBuffer.getpos strm
928 :    
929 :     end
930 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0