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 /sml/trunk/src/compiler/Parse/lex/ml.lex.sml
ViewVC logotype

Annotation of /sml/trunk/src/compiler/Parse/lex/ml.lex.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 205 - (view) (download)

1 : monnier 205 functor MLLexFun(structure Tokens : ML_TOKENS)=
2 :     struct
3 :     structure UserDeclarations =
4 :     struct
5 :     (* ml.lex
6 :     *
7 :     * Copyright 1989 by AT&T Bell Laboratories
8 :     *)
9 :    
10 :    
11 :     (*
12 :     * $Log$
13 :     *)
14 :    
15 :     open ErrorMsg;
16 :    
17 :     structure TokTable = TokenTable(Tokens);
18 :     type svalue = Tokens.svalue
19 :     type pos = int
20 :     type lexresult = (svalue,pos) Tokens.token
21 :     type lexarg = {
22 :     comLevel : int ref,
23 :     sourceMap : SourceMap.sourcemap,
24 :     charlist : string list ref,
25 :     stringtype : bool ref,
26 :     stringstart : int ref, (* start of current string or comment*)
27 :     brack_stack : int ref list ref, (* for frags *)
28 :     err : pos*pos -> ErrorMsg.complainer
29 :     }
30 :     type arg = lexarg
31 :     type ('a,'b) token = ('a,'b) Tokens.token
32 :     fun eof ({comLevel,err,charlist,stringstart,sourceMap, ...} : lexarg) = let
33 :     val pos = Int.max(!stringstart+2, SourceMap.lastChange sourceMap)
34 :     in
35 :     if !comLevel>0
36 :     then err (!stringstart,pos) COMPLAIN "unclosed comment" nullErrorBody
37 :     else if !charlist <> []
38 :     then err (!stringstart,pos) COMPLAIN
39 :     "unclosed string, character, or quotation" nullErrorBody
40 :    
41 :     else ();
42 :     Tokens.EOF(pos,pos)
43 :     end
44 :     fun addString (charlist,s:string) = charlist := s :: (!charlist)
45 :     fun addChar (charlist, c:char) = addString(charlist, String.str c)
46 :     fun makeString charlist = (concat(rev(!charlist)) before charlist := nil)
47 :    
48 :     local
49 :     fun cvt radix (s, i) =
50 :     #1(valOf(IntInf.scan radix Substring.getc (Substring.triml i (Substring.all s))))
51 :     in
52 :     val atoi = cvt StringCvt.DEC
53 :     val xtoi = cvt StringCvt.HEX
54 :     end (* local *)
55 :    
56 :     fun mysynch (src, pos, parts) =
57 :     let fun digit d = Char.ord d - Char.ord #"0"
58 :     fun cvt digits = foldl (fn(d, n) => 10*n + digit d) 0 (explode digits)
59 :     val r = SourceMap.resynch src
60 :     in case parts
61 :     of [col, line] =>
62 :     r (pos, {fileName=NONE, line=cvt line, column=SOME(cvt col)})
63 :     | [file, col, line] =>
64 :     r (pos, {fileName=SOME file, line=cvt line, column=SOME(cvt col)})
65 :     | _ => impossible "text in (*#line...*)"
66 :     end
67 :    
68 :     fun has_quote s = let
69 :     fun loop i = ((String.sub(s,i) = #"`") orelse loop (i+1))
70 :     handle _ => false
71 :     in
72 :     loop 0
73 :     end
74 :    
75 :     fun inc (ri as ref i) = (ri := i+1)
76 :     fun dec (ri as ref i) = (ri := i-1)
77 :     end (* end of user routines *)
78 :     exception LexError (* raised if illegal leaf action tried *)
79 :     structure Internal =
80 :     struct
81 :    
82 :     datatype yyfinstate = N of int
83 :     type statedata = {fin : yyfinstate list, trans: string}
84 :     (* transition & final state table *)
85 :     val tab = let
86 :     val s = [
87 :     (0,
88 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
89 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
90 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
91 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
92 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
93 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
94 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
95 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
96 :     \\000"
97 :     ),
98 :     (1,
99 :     "\022\022\022\022\022\022\022\022\022\082\085\022\082\084\022\022\
100 :     \\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\
101 :     \\082\039\081\078\039\039\039\073\065\064\062\039\061\039\058\039\
102 :     \\050\048\048\048\048\048\048\048\048\048\039\047\039\039\039\039\
103 :     \\039\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
104 :     \\041\041\041\041\041\041\041\041\041\041\041\046\039\045\039\044\
105 :     \\043\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
106 :     \\041\041\041\041\041\041\041\041\041\041\041\040\039\038\023\022\
107 :     \\021"
108 :     ),
109 :     (3,
110 :     "\086\086\086\086\086\086\086\086\086\086\092\086\086\091\086\086\
111 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
112 :     \\086\086\086\086\086\086\086\086\089\086\087\086\086\086\086\086\
113 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
114 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
115 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
116 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
117 :     \\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\086\
118 :     \\086"
119 :     ),
120 :     (5,
121 :     "\115\115\115\115\115\115\115\115\115\115\118\115\115\116\115\115\
122 :     \\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\
123 :     \\093\094\114\094\094\094\094\094\094\094\094\094\094\094\094\094\
124 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
125 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
126 :     \\094\094\094\094\094\094\094\094\094\094\094\094\095\094\094\094\
127 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
128 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\093\
129 :     \\093"
130 :     ),
131 :     (7,
132 :     "\119\119\119\119\119\119\119\119\119\121\124\119\121\123\119\119\
133 :     \\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
134 :     \\121\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
135 :     \\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
136 :     \\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
137 :     \\119\119\119\119\119\119\119\119\119\119\119\119\120\119\119\119\
138 :     \\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
139 :     \\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\119\
140 :     \\119"
141 :     ),
142 :     (9,
143 :     "\125\125\125\125\125\125\125\125\125\125\131\125\125\130\125\125\
144 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
145 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
146 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
147 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
148 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\127\125\
149 :     \\126\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
150 :     \\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\
151 :     \\125"
152 :     ),
153 :     (11,
154 :     "\132\132\132\132\132\132\132\132\132\138\141\132\138\140\132\132\
155 :     \\132\132\132\132\132\132\132\132\132\132\132\132\132\132\132\132\
156 :     \\138\133\132\133\133\133\133\132\137\132\133\133\132\133\132\133\
157 :     \\132\132\132\132\132\132\132\132\132\132\133\132\133\133\133\133\
158 :     \\133\135\135\135\135\135\135\135\135\135\135\135\135\135\135\135\
159 :     \\135\135\135\135\135\135\135\135\135\135\135\132\133\132\133\132\
160 :     \\132\135\135\135\135\135\135\135\135\135\135\135\135\135\135\135\
161 :     \\135\135\135\135\135\135\135\135\135\135\135\132\133\132\133\132\
162 :     \\132"
163 :     ),
164 :     (13,
165 :     "\142\142\142\142\142\142\142\142\142\142\000\142\142\142\142\142\
166 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
167 :     \\142\142\142\142\142\142\142\142\142\142\145\142\142\142\142\142\
168 :     \\143\143\143\143\143\143\143\143\143\143\142\142\142\142\142\142\
169 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
170 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
171 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
172 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
173 :     \\142"
174 :     ),
175 :     (15,
176 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
177 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
178 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\
179 :     \\148\147\147\147\147\147\147\147\147\147\000\000\000\000\000\000\
180 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
181 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
182 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
183 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
184 :     \\000"
185 :     ),
186 :     (17,
187 :     "\142\142\142\142\142\142\142\142\142\153\000\142\153\142\142\142\
188 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
189 :     \\153\142\152\142\142\142\142\142\142\142\150\142\142\142\142\142\
190 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
191 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
192 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
193 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
194 :     \\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\142\
195 :     \\142"
196 :     ),
197 :     (19,
198 :     "\156\156\156\156\156\156\156\156\156\156\157\156\156\156\156\156\
199 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
200 :     \\156\156\160\156\156\156\156\156\156\156\158\156\156\156\156\156\
201 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
202 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
203 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
204 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
205 :     \\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\156\
206 :     \\156"
207 :     ),
208 :     (23,
209 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
210 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
211 :     \\000\024\000\024\024\024\024\000\000\000\024\024\000\024\000\024\
212 :     \\035\026\026\026\026\026\026\026\026\026\024\000\024\024\024\024\
213 :     \\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
214 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
215 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
216 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
217 :     \\000"
218 :     ),
219 :     (24,
220 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
221 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
222 :     \\000\024\000\024\024\024\024\000\000\000\024\024\000\024\000\024\
223 :     \\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
224 :     \\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
225 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
226 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
227 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
228 :     \\000"
229 :     ),
230 :     (25,
231 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
232 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
233 :     \\000\025\000\025\025\025\025\000\000\000\025\025\000\025\000\025\
234 :     \\000\000\000\000\000\000\000\000\000\000\025\000\025\025\025\025\
235 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
236 :     \\000\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\
237 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
238 :     \\000\000\000\000\000\000\000\000\000\000\000\000\025\000\025\000\
239 :     \\000"
240 :     ),
241 :     (26,
242 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
243 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
244 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
245 :     \\026\026\026\026\026\026\026\026\026\026\000\000\000\000\000\000\
246 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
247 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
248 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
249 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
250 :     \\000"
251 :     ),
252 :     (27,
253 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
254 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
255 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
256 :     \\029\029\029\029\029\029\029\029\029\029\000\000\000\000\000\000\
257 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
258 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
259 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
260 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000\
261 :     \\000"
262 :     ),
263 :     (28,
264 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
265 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
266 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
267 :     \\029\029\029\029\029\029\029\029\029\029\000\000\000\000\000\000\
268 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
269 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
270 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
271 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
272 :     \\000"
273 :     ),
274 :     (30,
275 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
276 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
277 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
278 :     \\031\031\031\031\031\031\031\031\031\031\000\000\000\000\000\000\
279 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
280 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
281 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
282 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
283 :     \\000"
284 :     ),
285 :     (31,
286 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
287 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
288 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
289 :     \\031\031\031\031\031\031\031\031\031\031\000\000\000\000\000\000\
290 :     \\000\000\000\000\000\032\000\000\000\000\000\000\000\000\000\000\
291 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
292 :     \\000\000\000\000\000\032\000\000\000\000\000\000\000\000\000\000\
293 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
294 :     \\000"
295 :     ),
296 :     (32,
297 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
298 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
299 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
300 :     \\034\034\034\034\034\034\034\034\034\034\000\000\000\000\000\000\
301 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
302 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
303 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
304 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\033\000\
305 :     \\000"
306 :     ),
307 :     (33,
308 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
309 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
310 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
311 :     \\034\034\034\034\034\034\034\034\034\034\000\000\000\000\000\000\
312 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
313 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
314 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
315 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
316 :     \\000"
317 :     ),
318 :     (35,
319 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
320 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
321 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
322 :     \\026\026\026\026\026\026\026\026\026\026\000\000\000\000\000\000\
323 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
324 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
325 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
326 :     \\000\000\000\000\000\000\000\000\036\000\000\000\000\000\000\000\
327 :     \\000"
328 :     ),
329 :     (36,
330 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
331 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
332 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
333 :     \\037\037\037\037\037\037\037\037\037\037\000\000\000\000\000\000\
334 :     \\000\037\037\037\037\037\037\000\000\000\000\000\000\000\000\000\
335 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
336 :     \\000\037\037\037\037\037\037\000\000\000\000\000\000\000\000\000\
337 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
338 :     \\000"
339 :     ),
340 :     (41,
341 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
342 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
343 :     \\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000\
344 :     \\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\000\
345 :     \\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
346 :     \\042\042\042\042\042\042\042\042\042\042\042\000\000\000\000\042\
347 :     \\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
348 :     \\042\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\
349 :     \\000"
350 :     ),
351 :     (48,
352 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
353 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
354 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
355 :     \\049\049\049\049\049\049\049\049\049\049\000\000\000\000\000\000\
356 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
357 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
358 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
359 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
360 :     \\000"
361 :     ),
362 :     (50,
363 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
364 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
365 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
366 :     \\057\057\057\057\057\057\057\057\057\057\000\000\000\000\000\000\
367 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
368 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
369 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
370 :     \\000\000\000\000\000\000\000\053\051\000\000\000\000\000\000\000\
371 :     \\000"
372 :     ),
373 :     (51,
374 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
375 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
376 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
377 :     \\052\052\052\052\052\052\052\052\052\052\000\000\000\000\000\000\
378 :     \\000\052\052\052\052\052\052\000\000\000\000\000\000\000\000\000\
379 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
380 :     \\000\052\052\052\052\052\052\000\000\000\000\000\000\000\000\000\
381 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
382 :     \\000"
383 :     ),
384 :     (53,
385 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
386 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
387 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
388 :     \\056\056\056\056\056\056\056\056\056\056\000\000\000\000\000\000\
389 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
390 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
391 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
392 :     \\000\000\000\000\000\000\000\000\054\000\000\000\000\000\000\000\
393 :     \\000"
394 :     ),
395 :     (54,
396 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
397 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
398 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
399 :     \\055\055\055\055\055\055\055\055\055\055\000\000\000\000\000\000\
400 :     \\000\055\055\055\055\055\055\000\000\000\000\000\000\000\000\000\
401 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
402 :     \\000\055\055\055\055\055\055\000\000\000\000\000\000\000\000\000\
403 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
404 :     \\000"
405 :     ),
406 :     (56,
407 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
408 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
409 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
410 :     \\056\056\056\056\056\056\056\056\056\056\000\000\000\000\000\000\
411 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
412 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
413 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
414 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
415 :     \\000"
416 :     ),
417 :     (57,
418 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
419 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
420 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\
421 :     \\057\057\057\057\057\057\057\057\057\057\000\000\000\000\000\000\
422 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
423 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
424 :     \\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\
425 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
426 :     \\000"
427 :     ),
428 :     (58,
429 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
430 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
431 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\
432 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
433 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
434 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
435 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
436 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
437 :     \\000"
438 :     ),
439 :     (59,
440 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
441 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
442 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\060\000\
443 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
444 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
445 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
446 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
447 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
448 :     \\000"
449 :     ),
450 :     (62,
451 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
452 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
453 :     \\000\024\000\024\024\024\024\000\000\063\024\024\000\024\000\024\
454 :     \\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
455 :     \\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
456 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
457 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
458 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
459 :     \\000"
460 :     ),
461 :     (65,
462 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
463 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
464 :     \\000\000\000\000\000\000\000\000\000\000\066\000\000\000\000\000\
465 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
466 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
467 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
468 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
469 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
470 :     \\000"
471 :     ),
472 :     (66,
473 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
474 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
475 :     \\000\000\000\067\000\000\000\000\000\000\000\000\000\000\000\000\
476 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
477 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
478 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
479 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
480 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
481 :     \\000"
482 :     ),
483 :     (67,
484 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
485 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
486 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
487 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
488 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
489 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
490 :     \\000\000\000\000\000\000\000\000\000\000\000\000\068\000\000\000\
491 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
492 :     \\000"
493 :     ),
494 :     (68,
495 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
496 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
497 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
498 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
499 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
500 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
501 :     \\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\000\
502 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
503 :     \\000"
504 :     ),
505 :     (69,
506 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
507 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
508 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
509 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
510 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
511 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
512 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\070\000\
513 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
514 :     \\000"
515 :     ),
516 :     (70,
517 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
518 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
519 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
520 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
521 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
522 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
523 :     \\000\000\000\000\000\071\000\000\000\000\000\000\000\000\000\000\
524 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
525 :     \\000"
526 :     ),
527 :     (71,
528 :     "\000\000\000\000\000\000\000\000\000\072\000\000\072\000\000\000\
529 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
530 :     \\072\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
531 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
532 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
533 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
534 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
535 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
536 :     \\000"
537 :     ),
538 :     (73,
539 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
540 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
541 :     \\000\000\000\000\000\000\000\077\000\000\000\000\000\000\000\000\
542 :     \\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
543 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
544 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\075\
545 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
546 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
547 :     \\000"
548 :     ),
549 :     (74,
550 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
551 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
552 :     \\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\
553 :     \\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\000\
554 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
555 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\074\
556 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
557 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
558 :     \\000"
559 :     ),
560 :     (75,
561 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
562 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
563 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
564 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
565 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
566 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
567 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
568 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
569 :     \\000"
570 :     ),
571 :     (76,
572 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
573 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
574 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
575 :     \\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
576 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
577 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
578 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
579 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
580 :     \\000"
581 :     ),
582 :     (77,
583 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
584 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
585 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
586 :     \\076\076\076\076\076\076\076\076\076\076\000\000\000\000\000\000\
587 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
588 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\075\
589 :     \\000\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
590 :     \\074\074\074\074\074\074\074\074\074\074\074\000\000\000\000\000\
591 :     \\000"
592 :     ),
593 :     (78,
594 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
595 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
596 :     \\000\024\080\024\024\024\024\000\000\000\024\024\000\024\000\024\
597 :     \\000\000\000\000\000\000\000\000\000\000\024\000\024\024\024\024\
598 :     \\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
599 :     \\000\000\000\000\000\000\000\000\000\000\000\079\024\000\024\000\
600 :     \\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
601 :     \\000\000\000\000\000\000\000\000\000\000\000\000\024\000\024\000\
602 :     \\000"
603 :     ),
604 :     (82,
605 :     "\000\000\000\000\000\000\000\000\000\083\000\000\083\000\000\000\
606 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
607 :     \\083\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
608 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
609 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
610 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
611 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
612 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
613 :     \\000"
614 :     ),
615 :     (84,
616 :     "\000\000\000\000\000\000\000\000\000\000\085\000\000\000\000\000\
617 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
618 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
619 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
620 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
621 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
622 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
623 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
624 :     \\000"
625 :     ),
626 :     (87,
627 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
628 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
629 :     \\000\000\000\000\000\000\000\000\000\088\000\000\000\000\000\000\
630 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
631 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
632 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
633 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
634 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
635 :     \\000"
636 :     ),
637 :     (89,
638 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
639 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
640 :     \\000\000\000\000\000\000\000\000\000\000\090\000\000\000\000\000\
641 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
642 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
643 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
644 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
645 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
646 :     \\000"
647 :     ),
648 :     (91,
649 :     "\000\000\000\000\000\000\000\000\000\000\092\000\000\000\000\000\
650 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
651 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
652 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
653 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
654 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
655 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
656 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
657 :     \\000"
658 :     ),
659 :     (94,
660 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
661 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
662 :     \\000\094\000\094\094\094\094\094\094\094\094\094\094\094\094\094\
663 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
664 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
665 :     \\094\094\094\094\094\094\094\094\094\094\094\094\000\094\094\094\
666 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\
667 :     \\094\094\094\094\094\094\094\094\094\094\094\094\094\094\094\000\
668 :     \\000"
669 :     ),
670 :     (95,
671 :     "\000\000\000\000\000\000\000\000\000\111\113\000\111\112\000\000\
672 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
673 :     \\111\000\110\000\000\000\000\000\000\000\000\000\000\000\000\000\
674 :     \\107\107\107\107\107\107\107\107\107\107\000\000\000\000\000\000\
675 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
676 :     \\000\000\000\000\000\000\000\000\000\000\000\000\106\000\103\000\
677 :     \\000\102\101\000\000\000\100\000\000\000\000\000\000\000\099\000\
678 :     \\000\000\098\000\097\000\096\000\000\000\000\000\000\000\000\000\
679 :     \\000"
680 :     ),
681 :     (103,
682 :     "\104\104\104\104\104\104\104\104\104\104\000\104\104\104\104\104\
683 :     \\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
684 :     \\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
685 :     \\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
686 :     \\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
687 :     \\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
688 :     \\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
689 :     \\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\
690 :     \\104"
691 :     ),
692 :     (107,
693 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
694 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
695 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
696 :     \\108\108\108\108\108\108\108\108\108\108\000\000\000\000\000\000\
697 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
698 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
699 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
700 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
701 :     \\000"
702 :     ),
703 :     (108,
704 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
705 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
706 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
707 :     \\109\109\109\109\109\109\109\109\109\109\000\000\000\000\000\000\
708 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
709 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
710 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
711 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
712 :     \\000"
713 :     ),
714 :     (111,
715 :     "\000\000\000\000\000\000\000\000\000\111\000\000\111\000\000\000\
716 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
717 :     \\111\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
718 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
719 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
720 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
721 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
722 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
723 :     \\000"
724 :     ),
725 :     (112,
726 :     "\000\000\000\000\000\000\000\000\000\000\113\000\000\000\000\000\
727 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
728 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
729 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
730 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
731 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
732 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
733 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
734 :     \\000"
735 :     ),
736 :     (116,
737 :     "\000\000\000\000\000\000\000\000\000\000\117\000\000\000\000\000\
738 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
739 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
740 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
741 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
742 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
743 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
744 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
745 :     \\000"
746 :     ),
747 :     (121,
748 :     "\000\000\000\000\000\000\000\000\000\122\000\000\122\000\000\000\
749 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
750 :     \\122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
751 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
752 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
753 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
754 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
755 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
756 :     \\000"
757 :     ),
758 :     (123,
759 :     "\000\000\000\000\000\000\000\000\000\000\124\000\000\000\000\000\
760 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
761 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
762 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
763 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
764 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
765 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
766 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
767 :     \\000"
768 :     ),
769 :     (127,
770 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
771 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
772 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
773 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
774 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
775 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\
776 :     \\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
777 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
778 :     \\000"
779 :     ),
780 :     (130,
781 :     "\000\000\000\000\000\000\000\000\000\000\131\000\000\000\000\000\
782 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
783 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
784 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
785 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
786 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
787 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
788 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
789 :     \\000"
790 :     ),
791 :     (133,
792 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
793 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
794 :     \\000\134\000\134\134\134\134\000\000\000\134\134\000\134\000\134\
795 :     \\000\000\000\000\000\000\000\000\000\000\134\000\134\134\134\134\
796 :     \\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
797 :     \\000\000\000\000\000\000\000\000\000\000\000\000\134\000\134\000\
798 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
799 :     \\000\000\000\000\000\000\000\000\000\000\000\000\134\000\134\000\
800 :     \\000"
801 :     ),
802 :     (135,
803 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
804 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
805 :     \\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\
806 :     \\136\136\136\136\136\136\136\136\136\136\000\000\000\000\000\000\
807 :     \\000\136\136\136\136\136\136\136\136\136\136\136\136\136\136\136\
808 :     \\136\136\136\136\136\136\136\136\136\136\136\000\000\000\000\136\
809 :     \\000\136\136\136\136\136\136\136\136\136\136\136\136\136\136\136\
810 :     \\136\136\136\136\136\136\136\136\136\136\136\000\000\000\000\000\
811 :     \\000"
812 :     ),
813 :     (138,
814 :     "\000\000\000\000\000\000\000\000\000\139\000\000\139\000\000\000\
815 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
816 :     \\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
817 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
818 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
819 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
820 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
821 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
822 :     \\000"
823 :     ),
824 :     (140,
825 :     "\000\000\000\000\000\000\000\000\000\000\141\000\000\000\000\000\
826 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
827 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
828 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
829 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
830 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
831 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
832 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
833 :     \\000"
834 :     ),
835 :     (143,
836 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
837 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
838 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
839 :     \\144\144\144\144\144\144\144\144\144\144\000\000\000\000\000\000\
840 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
841 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
842 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
843 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
844 :     \\000"
845 :     ),
846 :     (145,
847 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
848 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
849 :     \\000\000\000\000\000\000\000\000\000\146\000\000\000\000\000\000\
850 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
851 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
852 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
853 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
854 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
855 :     \\000"
856 :     ),
857 :     (147,
858 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
859 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
860 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
861 :     \\147\147\147\147\147\147\147\147\147\147\000\000\000\000\000\000\
862 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
863 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
864 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
865 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
866 :     \\000"
867 :     ),
868 :     (148,
869 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
870 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
871 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
872 :     \\148\147\147\147\147\147\147\147\147\147\000\000\000\000\000\000\
873 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
874 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
875 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
876 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
877 :     \\000"
878 :     ),
879 :     (150,
880 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
881 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
882 :     \\000\000\000\000\000\000\000\000\000\151\000\000\000\000\000\000\
883 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
884 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
885 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
886 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
887 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
888 :     \\000"
889 :     ),
890 :     (153,
891 :     "\000\000\000\000\000\000\000\000\000\155\000\000\155\000\000\000\
892 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
893 :     \\155\000\154\000\000\000\000\000\000\000\000\000\000\000\000\000\
894 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
895 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
896 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
897 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
898 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
899 :     \\000"
900 :     ),
901 :     (156,
902 :     "\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
903 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
904 :     \\157\157\000\157\157\157\157\157\157\157\157\157\157\157\157\157\
905 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
906 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
907 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
908 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
909 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
910 :     \\157"
911 :     ),
912 :     (158,
913 :     "\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
914 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
915 :     \\157\157\000\157\157\157\157\157\157\159\157\157\157\157\157\157\
916 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
917 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
918 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
919 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
920 :     \\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\157\
921 :     \\157"
922 :     ),
923 :     (160,
924 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
925 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
926 :     \\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\
927 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
928 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
929 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
930 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
931 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
932 :     \\000"
933 :     ),
934 :     (161,
935 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
936 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
937 :     \\000\000\000\000\000\000\000\000\000\162\000\000\000\000\000\000\
938 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
939 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
940 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
941 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
942 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
943 :     \\000"
944 :     ),
945 :     (0, "")]
946 :     fun f x = x
947 :     val s = map f (rev (tl (rev s)))
948 :     exception LexHackingError
949 :     fun look ((j,x)::r, i) = if i = j then x else look(r, i)
950 :     | look ([], i) = raise LexHackingError
951 :     fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)}
952 :     in Vector.fromList(map g
953 :     [{fin = [], trans = 0},
954 :     {fin = [(N 2)], trans = 1},
955 :     {fin = [(N 2)], trans = 1},
956 :     {fin = [], trans = 3},
957 :     {fin = [], trans = 3},
958 :     {fin = [], trans = 5},
959 :     {fin = [], trans = 5},
960 :     {fin = [(N 278)], trans = 7},
961 :     {fin = [(N 278)], trans = 7},
962 :     {fin = [], trans = 9},
963 :     {fin = [], trans = 9},
964 :     {fin = [(N 307)], trans = 11},
965 :     {fin = [(N 307)], trans = 11},
966 :     {fin = [], trans = 13},
967 :     {fin = [], trans = 13},
968 :     {fin = [(N 156)], trans = 15},
969 :     {fin = [(N 156)], trans = 15},
970 :     {fin = [], trans = 17},
971 :     {fin = [], trans = 17},
972 :     {fin = [(N 165)], trans = 19},
973 :     {fin = [(N 165)], trans = 19},
974 :     {fin = [(N 144),(N 146)], trans = 0},
975 :     {fin = [(N 146)], trans = 0},
976 :     {fin = [(N 56),(N 65),(N 146)], trans = 23},
977 :     {fin = [(N 56),(N 65)], trans = 24},
978 :     {fin = [(N 56)], trans = 25},
979 :     {fin = [(N 97)], trans = 26},
980 :     {fin = [], trans = 27},
981 :     {fin = [], trans = 28},
982 :     {fin = [(N 87)], trans = 28},
983 :     {fin = [], trans = 30},
984 :     {fin = [(N 87)], trans = 31},
985 :     {fin = [], trans = 32},
986 :     {fin = [], trans = 33},
987 :     {fin = [(N 87)], trans = 33},
988 :     {fin = [(N 97)], trans = 35},
989 :     {fin = [], trans = 36},
990 :     {fin = [(N 108)], trans = 36},
991 :     {fin = [(N 15),(N 146)], trans = 0},
992 :     {fin = [(N 56),(N 65),(N 146)], trans = 24},
993 :     {fin = [(N 13),(N 146)], trans = 0},
994 :     {fin = [(N 45),(N 146)], trans = 41},
995 :     {fin = [(N 45)], trans = 41},
996 :     {fin = [(N 56),(N 67),(N 146)], trans = 25},
997 :     {fin = [(N 9),(N 146)], trans = 0},
998 :     {fin = [(N 22),(N 146)], trans = 0},
999 :     {fin = [(N 17),(N 146)], trans = 0},
1000 :     {fin = [(N 24),(N 146)], trans = 0},
1001 :     {fin = [(N 90),(N 93),(N 146)], trans = 48},
1002 :     {fin = [(N 90),(N 93)], trans = 48},
1003 :     {fin = [(N 93),(N 146)], trans = 50},
1004 :     {fin = [], trans = 51},
1005 :     {fin = [(N 102)], trans = 51},
1006 :     {fin = [], trans = 53},
1007 :     {fin = [], trans = 54},
1008 :     {fin = [(N 119)], trans = 54},
1009 :     {fin = [(N 113)], trans = 56},
1010 :     {fin = [(N 93)], trans = 57},
1011 :     {fin = [(N 30),(N 146)], trans = 58},
1012 :     {fin = [], trans = 59},
1013 :     {fin = [(N 34)], trans = 0},
1014 :     {fin = [(N 11),(N 146)], trans = 0},
1015 :     {fin = [(N 56),(N 65),(N 146)], trans = 62},
1016 :     {fin = [(N 142)], trans = 0},
1017 :     {fin = [(N 28),(N 146)], trans = 0},
1018 :     {fin = [(N 26),(N 146)], trans = 65},
1019 :     {fin = [(N 139)], trans = 66},
1020 :     {fin = [], trans = 67},
1021 :     {fin = [], trans = 68},
1022 :     {fin = [], trans = 69},
1023 :     {fin = [], trans = 70},
1024 :     {fin = [], trans = 71},
1025 :     {fin = [(N 136)], trans = 71},
1026 :     {fin = [(N 146)], trans = 73},
1027 :     {fin = [(N 42)], trans = 74},
1028 :     {fin = [], trans = 75},
1029 :     {fin = [], trans = 76},
1030 :     {fin = [], trans = 77},
1031 :     {fin = [(N 56),(N 65),(N 146)], trans = 78},
1032 :     {fin = [(N 20)], trans = 0},
1033 :     {fin = [(N 124)], trans = 0},
1034 :     {fin = [(N 121),(N 146)], trans = 0},
1035 :     {fin = [(N 2),(N 146)], trans = 82},
1036 :     {fin = [(N 2)], trans = 82},
1037 :     {fin = [(N 7),(N 146)], trans = 84},
1038 :     {fin = [(N 7)], trans = 0},
1039 :     {fin = [(N 187)], trans = 0},
1040 :     {fin = [(N 187)], trans = 87},
1041 :     {fin = [(N 185)], trans = 0},
1042 :     {fin = [(N 187)], trans = 89},
1043 :     {fin = [(N 177)], trans = 0},
1044 :     {fin = [(N 182),(N 187)], trans = 91},
1045 :     {fin = [(N 182)], trans = 0},
1046 :     {fin = [(N 270)], trans = 0},
1047 :     {fin = [(N 270)], trans = 94},
1048 :     {fin = [(N 204),(N 246),(N 270)], trans = 95},
1049 :     {fin = [(N 225)], trans = 0},
1050 :     {fin = [(N 222)], trans = 0},
1051 :     {fin = [(N 219)], trans = 0},
1052 :     {fin = [(N 216)], trans = 0},
1053 :     {fin = [(N 213)], trans = 0},
1054 :     {fin = [(N 210)], trans = 0},
1055 :     {fin = [(N 207)], trans = 0},
1056 :     {fin = [], trans = 103},
1057 :     {fin = [(N 239)], trans = 0},
1058 :     {fin = [(N 235),(N 239)], trans = 0},
1059 :     {fin = [(N 228)], trans = 0},
1060 :     {fin = [], trans = 107},
1061 :     {fin = [], trans = 108},
1062 :     {fin = [(N 244)], trans = 0},
1063 :     {fin = [(N 231)], trans = 0},
1064 :     {fin = [(N 204)], trans = 111},
1065 :     {fin = [(N 200)], trans = 112},
1066 :     {fin = [(N 200)], trans = 0},
1067 :     {fin = [(N 189),(N 270)], trans = 0},
1068 :     {fin = [(N 248),(N 270)], trans = 0},
1069 :     {fin = [(N 194),(N 248),(N 270)], trans = 116},
1070 :     {fin = [(N 194)], trans = 0},
1071 :     {fin = [(N 194),(N 248)], trans = 0},
1072 :     {fin = [(N 282)], trans = 0},
1073 :     {fin = [(N 280),(N 282)], trans = 0},
1074 :     {fin = [(N 278),(N 282)], trans = 121},
1075 :     {fin = [(N 278)], trans = 121},
1076 :     {fin = [(N 275),(N 282)], trans = 123},
1077 :     {fin = [(N 275)], trans = 0},
1078 :     {fin = [(N 299)], trans = 0},
1079 :     {fin = [(N 292),(N 299)], trans = 0},
1080 :     {fin = [(N 290),(N 299)], trans = 127},
1081 :     {fin = [(N 285)], trans = 0},
1082 :     {fin = [(N 288)], trans = 0},
1083 :     {fin = [(N 297),(N 299)], trans = 130},
1084 :     {fin = [(N 297)], trans = 0},
1085 :     {fin = [(N 323)], trans = 0},
1086 :     {fin = [(N 319),(N 323)], trans = 133},
1087 :     {fin = [(N 319)], trans = 133},
1088 :     {fin = [(N 310),(N 323)], trans = 135},
1089 :     {fin = [(N 310)], trans = 135},
1090 :     {fin = [(N 321),(N 323)], trans = 0},
1091 :     {fin = [(N 307),(N 323)], trans = 138},
1092 :     {fin = [(N 307)], trans = 138},
1093 :     {fin = [(N 304),(N 323)], trans = 140},
1094 :     {fin = [(N 304)], trans = 0},
1095 :     {fin = [(N 174)], trans = 0},
1096 :     {fin = [(N 149),(N 174)], trans = 143},
1097 :     {fin = [(N 149)], trans = 143},
1098 :     {fin = [(N 174)], trans = 145},
1099 :     {fin = [(N 172)], trans = 0},
1100 :     {fin = [(N 154)], trans = 147},
1101 :     {fin = [(N 154),(N 156)], trans = 148},
1102 :     {fin = [(N 151)], trans = 0},
1103 :     {fin = [(N 174)], trans = 150},
1104 :     {fin = [(N 159),(N 172)], trans = 0},
1105 :     {fin = [(N 163),(N 174)], trans = 0},
1106 :     {fin = [(N 174)], trans = 153},
1107 :     {fin = [(N 163)], trans = 0},
1108 :     {fin = [], trans = 153},
1109 :     {fin = [(N 165),(N 174)], trans = 156},
1110 :     {fin = [(N 165)], trans = 156},
1111 :     {fin = [(N 165),(N 174)], trans = 158},
1112 :     {fin = [(N 165),(N 172)], trans = 156},
1113 :     {fin = [(N 174)], trans = 160},
1114 :     {fin = [], trans = 161},
1115 :     {fin = [(N 169)], trans = 0}])
1116 :     end
1117 :     structure StartStates =
1118 :     struct
1119 :     datatype yystartstate = STARTSTATE of int
1120 :    
1121 :     (* start state definitions *)
1122 :    
1123 :     val A = STARTSTATE 3;
1124 :     val AQ = STARTSTATE 11;
1125 :     val F = STARTSTATE 7;
1126 :     val INITIAL = STARTSTATE 1;
1127 :     val L = STARTSTATE 13;
1128 :     val LL = STARTSTATE 15;
1129 :     val LLC = STARTSTATE 17;
1130 :     val LLCQ = STARTSTATE 19;
1131 :     val Q = STARTSTATE 9;
1132 :     val S = STARTSTATE 5;
1133 :    
1134 :     end
1135 :     type result = UserDeclarations.lexresult
1136 :     exception LexerError (* raised if illegal leaf action tried *)
1137 :     end
1138 :    
1139 :     fun makeLexer yyinput =
1140 :     let val yygone0=1
1141 :     val yyb = ref "\n" (* buffer *)
1142 :     val yybl = ref 1 (*buffer length *)
1143 :     val yybufpos = ref 1 (* location of next character to use *)
1144 :     val yygone = ref yygone0 (* position in file of beginning of buffer *)
1145 :     val yydone = ref false (* eof found yet? *)
1146 :     val yybegin = ref 1 (*Current 'start state' for lexer *)
1147 :    
1148 :     val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
1149 :     yybegin := x
1150 :    
1151 :     fun lex (yyarg as ({
1152 :     comLevel,
1153 :     sourceMap,
1154 :     err,
1155 :     charlist,
1156 :     stringstart,
1157 :     stringtype,
1158 :     brack_stack})) =
1159 :     let fun continue() : Internal.result =
1160 :     let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0) =
1161 :     let fun action (i,nil) = raise LexError
1162 :     | action (i,nil::l) = action (i-1,l)
1163 :     | action (i,(node::acts)::l) =
1164 :     case node of
1165 :     Internal.N yyk =>
1166 :     (let fun yymktext() = substring(!yyb,i0,i-i0)
1167 :     val yypos = i0+ !yygone
1168 :     fun REJECT() = action(i,acts::l)
1169 :     open UserDeclarations Internal.StartStates
1170 :     in (yybufpos := i; case yyk of
1171 :    
1172 :     (* Application actions *)
1173 :    
1174 :     102 => let val yytext=yymktext() in Tokens.INT0(xtoi(yytext, 2),yypos,yypos+size yytext) end
1175 :     | 108 => let val yytext=yymktext() in Tokens.INT0(IntInf.~(xtoi(yytext, 3)),yypos,yypos+size yytext) end
1176 :     | 11 => (Tokens.COMMA(yypos,yypos+1))
1177 :     | 113 => let val yytext=yymktext() in Tokens.WORD(atoi(yytext, 2),yypos,yypos+size yytext) end
1178 :     | 119 => let val yytext=yymktext() in Tokens.WORD(xtoi(yytext, 3),yypos,yypos+size yytext) end
1179 :     | 121 => (charlist := [""]; stringstart := yypos;
1180 :     stringtype := true; YYBEGIN S; continue())
1181 :     | 124 => (charlist := [""]; stringstart := yypos;
1182 :     stringtype := false; YYBEGIN S; continue())
1183 :     | 13 => (Tokens.LBRACE(yypos,yypos+1))
1184 :     | 136 => (YYBEGIN L; stringstart := yypos; comLevel := 1; continue())
1185 :     | 139 => (YYBEGIN A; stringstart := yypos; comLevel := 1; continue())
1186 :     | 142 => (err (yypos,yypos+1) COMPLAIN "unmatched close comment"
1187 :     nullErrorBody;
1188 :     continue())
1189 :     | 144 => (err (yypos,yypos) COMPLAIN "non-Ascii character"
1190 :     nullErrorBody;
1191 :     continue())
1192 :     | 146 => (err (yypos,yypos) COMPLAIN "illegal token" nullErrorBody;
1193 :     continue())
1194 :     | 149 => let val yytext=yymktext() in YYBEGIN LL; charlist := [yytext]; continue() end
1195 :     | 15 => (Tokens.RBRACE(yypos,yypos+1))
1196 :     | 151 => ((* cheat: take n > 0 dots *) continue())
1197 :     | 154 => let val yytext=yymktext() in YYBEGIN LLC; addString(charlist, yytext); continue() end
1198 :     | 156 => (YYBEGIN LLC; addString(charlist, "1"); continue()
1199 :     (* note hack, since ml-lex chokes on the empty string for 0* *))
1200 :     | 159 => (YYBEGIN INITIAL; mysynch(sourceMap, yypos+2, !charlist);
1201 :     comLevel := 0; charlist := []; continue())
1202 :     | 163 => (YYBEGIN LLCQ; continue())
1203 :     | 165 => let val yytext=yymktext() in addString(charlist, yytext); continue() end
1204 :     | 169 => (YYBEGIN INITIAL; mysynch(sourceMap, yypos+3, !charlist);
1205 :     comLevel := 0; charlist := []; continue())
1206 :     | 17 => (Tokens.LBRACKET(yypos,yypos+1))
1207 :     | 172 => (err (!stringstart, yypos+1) WARN
1208 :     "ill-formed (*#line...*) taken as comment" nullErrorBody;
1209 :     YYBEGIN INITIAL; comLevel := 0; charlist := []; continue())
1210 :     | 174 => (err (!stringstart, yypos+1) WARN
1211 :     "ill-formed (*#line...*) taken as comment" nullErrorBody;
1212 :     YYBEGIN A; continue())
1213 :     | 177 => (inc comLevel; continue())
1214 :     | 182 => (SourceMap.newline sourceMap yypos; continue())
1215 :     | 185 => (dec comLevel; if !comLevel=0 then YYBEGIN INITIAL else (); continue())
1216 :     | 187 => (continue())
1217 :     | 189 => (let val s = makeString charlist
1218 :     val s = if size s <> 1 andalso not(!stringtype)
1219 :     then (err(!stringstart,yypos) COMPLAIN
1220 :     "character constant not length 1"
1221 :     nullErrorBody;
1222 :     substring(s^"x",0,1))
1223 :     else s
1224 :     val t = (s,!stringstart,yypos+1)
1225 :     in YYBEGIN INITIAL;
1226 :     if !stringtype then Tokens.STRING t else Tokens.CHAR t
1227 :     end)
1228 :     | 194 => (err (!stringstart,yypos) COMPLAIN "unclosed string"
1229 :     nullErrorBody;
1230 :     SourceMap.newline sourceMap yypos;
1231 :     YYBEGIN INITIAL; Tokens.STRING(makeString charlist,!stringstart,yypos))
1232 :     | 2 => (continue())
1233 :     | 20 => (Tokens.VECTORSTART(yypos,yypos+1))
1234 :     | 200 => (SourceMap.newline sourceMap (yypos+1);
1235 :     YYBEGIN F; continue())
1236 :     | 204 => (YYBEGIN F; continue())
1237 :     | 207 => (addString(charlist, "\007"); continue())
1238 :     | 210 => (addString(charlist, "\008"); continue())
1239 :     | 213 => (addString(charlist, "\012"); continue())
1240 :     | 216 => (addString(charlist, "\010"); continue())
1241 :     | 219 => (addString(charlist, "\013"); continue())
1242 :     | 22 => (Tokens.RBRACKET(yypos,yypos+1))
1243 :     | 222 => (addString(charlist, "\009"); continue())
1244 :     | 225 => (addString(charlist, "\011"); continue())
1245 :     | 228 => (addString(charlist, "\\"); continue())
1246 :     | 231 => (addString(charlist, "\""); continue())
1247 :     | 235 => let val yytext=yymktext() in addChar(charlist,
1248 :     Char.chr(Char.ord(String.sub(yytext,2))-Char.ord #"@"));
1249 :     continue() end
1250 :     | 239 => (err(yypos,yypos+2) COMPLAIN "illegal control escape; must be one of \
1251 :     \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" nullErrorBody;
1252 :     continue())
1253 :     | 24 => (Tokens.SEMICOLON(yypos,yypos+1))
1254 :     | 244 => let val yytext=yymktext() in let val x = Char.ord(String.sub(yytext,1))*100
1255 :     +Char.ord(String.sub(yytext,2))*10
1256 :     +Char.ord(String.sub(yytext,3))
1257 :     -((Char.ord #"0")*111)
1258 :     in (if x>255
1259 :     then err (yypos,yypos+4) COMPLAIN "illegal ascii escape" nullErrorBody
1260 :     else addChar(charlist, Char.chr x);
1261 :     continue())
1262 :     end end
1263 :     | 246 => (err (yypos,yypos+1) COMPLAIN "illegal string escape"
1264 :     nullErrorBody;
1265 :     continue())
1266 :     | 248 => (err (yypos,yypos+1) COMPLAIN "illegal non-printing character in string" nullErrorBody;
1267 :     continue())
1268 :     | 26 => (if (null(!brack_stack))
1269 :     then ()
1270 :     else inc (hd (!brack_stack));
1271 :     Tokens.LPAREN(yypos,yypos+1))
1272 :     | 270 => let val yytext=yymktext() in addString(charlist,yytext); continue() end
1273 :     | 275 => (SourceMap.newline sourceMap yypos; continue())
1274 :     | 278 => (continue())
1275 :     | 28 => (if (null(!brack_stack))
1276 :     then ()
1277 :     else if (!(hd (!brack_stack)) = 1)
1278 :     then ( brack_stack := tl (!brack_stack);
1279 :     charlist := [];
1280 :     YYBEGIN Q)
1281 :     else dec (hd (!brack_stack));
1282 :     Tokens.RPAREN(yypos,yypos+1))
1283 :     | 280 => (YYBEGIN S; stringstart := yypos; continue())
1284 :     | 282 => (err (!stringstart,yypos) COMPLAIN "unclosed string"
1285 :     nullErrorBody;
1286 :     YYBEGIN INITIAL; Tokens.STRING(makeString charlist,!stringstart,yypos+1))
1287 :     | 285 => (addString(charlist, "`"); continue())
1288 :     | 288 => (addString(charlist, "^"); continue())
1289 :     | 290 => (YYBEGIN AQ;
1290 :     let val x = makeString charlist
1291 :     in
1292 :     Tokens.OBJL(x,yypos,yypos+(size x))
1293 :     end)
1294 :     | 292 => ((* a closing quote *)
1295 :     YYBEGIN INITIAL;
1296 :     let val x = makeString charlist
1297 :     in
1298 :     Tokens.ENDQ(x,yypos,yypos+(size x))
1299 :     end)
1300 :     | 297 => (SourceMap.newline sourceMap yypos; addString(charlist,"\n"); continue())
1301 :     | 299 => let val yytext=yymktext() in addString(charlist,yytext); continue() end
1302 :     | 30 => (Tokens.DOT(yypos,yypos+1))
1303 :     | 304 => (SourceMap.newline sourceMap yypos; continue())
1304 :     | 307 => (continue())
1305 :     | 310 => let val yytext=yymktext() in YYBEGIN Q;
1306 :     let val hash = StrgHash.hashString yytext
1307 :     in
1308 :     Tokens.AQID(FastSymbol.rawSymbol(hash,yytext),
1309 :     yypos,yypos+(size yytext))
1310 :     end end
1311 :     | 319 => let val yytext=yymktext() in YYBEGIN Q;
1312 :     let val hash = StrgHash.hashString yytext
1313 :     in
1314 :     Tokens.AQID(FastSymbol.rawSymbol(hash,yytext),
1315 :     yypos,yypos+(size yytext))
1316 :     end end
1317 :     | 321 => (YYBEGIN INITIAL;
1318 :     brack_stack := ((ref 1)::(!brack_stack));
1319 :     Tokens.LPAREN(yypos,yypos+1))
1320 :     | 323 => let val yytext=yymktext() in err (yypos,yypos+1) COMPLAIN
1321 :     ("ml lexer: bad character after antiquote "^yytext)
1322 :     nullErrorBody;
1323 :     Tokens.AQID(FastSymbol.rawSymbol(0,""),yypos,yypos) end
1324 :     | 34 => (Tokens.DOTDOTDOT(yypos,yypos+3))
1325 :     | 42 => let val yytext=yymktext() in TokTable.checkTyvar(yytext,yypos) end
1326 :     | 45 => let val yytext=yymktext() in TokTable.checkId(yytext, yypos) end
1327 :     | 56 => let val yytext=yymktext() in if !Control.quotation
1328 :     then if (has_quote yytext)
1329 :     then REJECT()
1330 :     else TokTable.checkSymId(yytext,yypos)
1331 :     else TokTable.checkSymId(yytext,yypos) end
1332 :     | 65 => let val yytext=yymktext() in TokTable.checkSymId(yytext,yypos) end
1333 :     | 67 => (if !Control.quotation
1334 :     then (YYBEGIN Q;
1335 :     charlist := [];
1336 :     Tokens.BEGINQ(yypos,yypos+1))
1337 :     else (err(yypos, yypos+1)
1338 :     COMPLAIN "quotation implementation error"
1339 :     nullErrorBody;
1340 :     Tokens.BEGINQ(yypos,yypos+1)))
1341 :     | 7 => (SourceMap.newline sourceMap yypos; continue())
1342 :     | 87 => let val yytext=yymktext() in Tokens.REAL(yytext,yypos,yypos+size yytext) end
1343 :     | 9 => (Tokens.WILD(yypos,yypos+1))
1344 :     | 90 => let val yytext=yymktext() in Tokens.INT(atoi(yytext, 0),yypos,yypos+size yytext) end
1345 :     | 93 => let val yytext=yymktext() in Tokens.INT0(atoi(yytext, 0),yypos,yypos+size yytext) end
1346 :     | 97 => let val yytext=yymktext() in Tokens.INT0(atoi(yytext, 0),yypos,yypos+size yytext) end
1347 :     | _ => raise Internal.LexerError
1348 :    
1349 :     ) end )
1350 :    
1351 :     val {fin,trans} = Unsafe.Vector.sub(Internal.tab, s)
1352 :     val NewAcceptingLeaves = fin::AcceptingLeaves
1353 :     in if l = !yybl then
1354 :     if trans = #trans(Vector.sub(Internal.tab,0))
1355 :     then action(l,NewAcceptingLeaves
1356 :     ) else let val newchars= if !yydone then "" else yyinput 1024
1357 :     in if (size newchars)=0
1358 :     then (yydone := true;
1359 :     if (l=i0) then UserDeclarations.eof yyarg
1360 :     else action(l,NewAcceptingLeaves))
1361 :     else (if i0=l then yyb := newchars
1362 :     else yyb := substring(!yyb,i0,l-i0)^newchars;
1363 :     yygone := !yygone+i0;
1364 :     yybl := size (!yyb);
1365 :     scan (s,AcceptingLeaves,l-i0,0))
1366 :     end
1367 :     else let val NewChar = Char.ord(Unsafe.CharVector.sub(!yyb,l))
1368 :     val NewChar = if NewChar<128 then NewChar else 128
1369 :     val NewState = Char.ord(Unsafe.CharVector.sub(trans,NewChar))
1370 :     in if NewState=0 then action(l,NewAcceptingLeaves)
1371 :     else scan(NewState,NewAcceptingLeaves,l+1,i0)
1372 :     end
1373 :     end
1374 :     (*
1375 :     val start= if substring(!yyb,!yybufpos-1,1)="\n"
1376 :     then !yybegin+1 else !yybegin
1377 :     *)
1378 :     in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
1379 :     end
1380 :     in continue end
1381 :     in lex
1382 :     end
1383 :     end

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