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

Annotation of /sml/trunk/src/ml-yacc/src/yacc.lex.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 250 - (view) (download)

1 : monnier 249
2 :     functor LexMLYACC(structure Tokens : Mlyacc_TOKENS
3 :     structure Hdr : HEADER (* = Header *)
4 :     where type prec = Header.prec
5 :     and type inputSource = Header.inputSource) : ARG_LEXER
6 :     =
7 :     struct
8 :     structure UserDeclarations =
9 :     struct
10 :     (* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi
11 :    
12 :     yacc.lex: Lexer specification
13 :     *)
14 :    
15 :     structure Tokens = Tokens
16 :     type svalue = Tokens.svalue
17 :     type pos = int
18 :     type ('a,'b) token = ('a,'b) Tokens.token
19 :     type lexresult = (svalue,pos) token
20 :    
21 :     type lexarg = Hdr.inputSource
22 :     type arg = lexarg
23 :    
24 :     open Tokens
25 :     val error = Hdr.error
26 :     val lineno = Hdr.lineno
27 :     val text = Hdr.text
28 :    
29 :     val pcount = ref 0
30 :     val commentLevel = ref 0
31 :     val actionstart = ref 0
32 :    
33 :     val eof = fn i => (if (!pcount)>0 then
34 :     error i (!actionstart)
35 :     " eof encountered in action beginning here !"
36 :     else (); EOF(!lineno,!lineno))
37 :    
38 :     val Add = fn s => (text := s::(!text))
39 :    
40 :    
41 :     local val dict = [("%prec",PREC_TAG),("%term",TERM),
42 :     ("%nonterm",NONTERM), ("%eop",PERCENT_EOP),("%start",START),
43 :     ("%prefer",PREFER),("%subst",SUBST),("%change",CHANGE),
44 :     ("%keyword",KEYWORD),("%name",NAME),
45 :     ("%verbose",VERBOSE), ("%nodefault",NODEFAULT),
46 :     ("%value",VALUE), ("%noshift",NOSHIFT),
47 :     ("%header",PERCENT_HEADER),("%pure",PERCENT_PURE),
48 :     ("%arg",PERCENT_ARG),
49 :     ("%pos",PERCENT_POS)]
50 :     in val lookup =
51 :     fn (s,left,right) =>
52 :     let fun f ((a,d)::b) = if a=s then d(left,right) else f b
53 :     | f nil = UNKNOWN(s,left,right)
54 :     in f dict
55 :     end
56 :     end
57 :    
58 :     fun inc (ri as ref i) = (ri := i+1)
59 :     fun dec (ri as ref i) = (ri := i-1)
60 :    
61 :     end (* end of user routines *)
62 :     exception LexError (* raised if illegal leaf action tried *)
63 :     structure Internal =
64 :     struct
65 :    
66 :     datatype yyfinstate = N of int
67 :     type statedata = {fin : yyfinstate list, trans: string}
68 :     (* transition & final state table *)
69 :     val tab = let
70 :     val s = [
71 :     (0,
72 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
73 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
74 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
75 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
76 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
77 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
78 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
79 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
80 :     \\000"
81 :     ),
82 :     (1,
83 :     "\015\015\015\015\015\015\015\015\015\015\021\015\015\015\015\015\
84 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
85 :     \\015\015\015\015\015\019\015\015\017\015\015\015\015\015\015\015\
86 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
87 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
88 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
89 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
90 :     \\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
91 :     \\015"
92 :     ),
93 :     (3,
94 :     "\022\022\022\022\022\022\022\022\022\065\067\022\022\022\022\022\
95 :     \\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\022\
96 :     \\065\022\022\022\022\045\022\043\041\022\040\022\039\037\022\022\
97 :     \\035\035\035\035\035\035\035\035\035\035\034\022\022\022\022\022\
98 :     \\022\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\
99 :     \\026\026\026\026\026\026\026\026\026\026\026\022\022\022\022\022\
100 :     \\022\026\026\026\026\026\031\026\026\026\026\026\026\026\026\029\
101 :     \\026\026\026\026\026\026\026\026\026\026\026\025\024\023\022\022\
102 :     \\022"
103 :     ),
104 :     (5,
105 :     "\068\068\068\068\068\068\068\068\068\068\021\068\068\068\068\068\
106 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
107 :     \\068\068\072\068\068\068\068\068\070\069\068\068\068\068\068\068\
108 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
109 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
110 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
111 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
112 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
113 :     \\068"
114 :     ),
115 :     (7,
116 :     "\073\073\073\073\073\073\073\073\073\075\021\073\073\073\073\073\
117 :     \\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
118 :     \\075\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
119 :     \\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
120 :     \\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
121 :     \\073\073\073\073\073\073\073\073\073\073\073\073\074\073\073\073\
122 :     \\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
123 :     \\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\073\
124 :     \\073"
125 :     ),
126 :     (9,
127 :     "\077\077\077\077\077\077\077\077\077\077\021\077\077\077\077\077\
128 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
129 :     \\077\077\077\077\077\077\077\077\081\080\078\077\077\077\077\077\
130 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
131 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
132 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
133 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
134 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
135 :     \\077"
136 :     ),
137 :     (11,
138 :     "\083\083\083\083\083\083\083\083\083\083\088\083\083\083\083\083\
139 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
140 :     \\083\083\087\083\083\083\083\083\083\083\083\083\083\083\083\083\
141 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
142 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
143 :     \\083\083\083\083\083\083\083\083\083\083\083\083\084\083\083\083\
144 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
145 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
146 :     \\083"
147 :     ),
148 :     (13,
149 :     "\089\089\089\089\089\089\089\089\089\089\021\089\089\089\089\089\
150 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
151 :     \\089\089\089\089\089\089\089\089\093\092\090\089\089\089\089\089\
152 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
153 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
154 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
155 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
156 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
157 :     \\089"
158 :     ),
159 :     (15,
160 :     "\016\016\016\016\016\016\016\016\016\016\000\016\016\016\016\016\
161 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
162 :     \\016\016\016\016\016\000\016\016\016\016\016\016\016\016\016\016\
163 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
164 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
165 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
166 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
167 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
168 :     \\016"
169 :     ),
170 :     (17,
171 :     "\016\016\016\016\016\016\016\016\016\016\000\016\016\016\016\016\
172 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
173 :     \\016\016\016\016\016\000\016\016\016\016\018\016\016\016\016\016\
174 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
175 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
176 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
177 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
178 :     \\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
179 :     \\016"
180 :     ),
181 :     (19,
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\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\
185 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
186 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
187 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
188 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
189 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
190 :     \\000"
191 :     ),
192 :     (26,
193 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
194 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
195 :     \\000\000\000\000\000\000\000\027\000\000\000\000\000\000\028\000\
196 :     \\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\000\
197 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
198 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\027\
199 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
200 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\
201 :     \\000"
202 :     ),
203 :     (29,
204 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
205 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
206 :     \\000\000\000\000\000\000\000\027\000\000\000\000\000\000\028\000\
207 :     \\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\000\
208 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
209 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\027\
210 :     \\000\027\027\027\027\027\030\027\027\027\027\027\027\027\027\027\
211 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\
212 :     \\000"
213 :     ),
214 :     (31,
215 :     "\000\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\000\000\000\000\
217 :     \\000\000\000\000\000\000\000\027\000\000\000\000\000\000\028\000\
218 :     \\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\000\
219 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
220 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\027\
221 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\032\
222 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\
223 :     \\000"
224 :     ),
225 :     (32,
226 :     "\000\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\000\000\000\000\
228 :     \\000\000\000\000\000\000\000\027\000\000\000\000\000\000\028\000\
229 :     \\027\027\027\027\027\027\027\027\027\027\000\000\000\000\000\000\
230 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
231 :     \\027\027\027\027\027\027\027\027\027\027\027\000\000\000\000\027\
232 :     \\000\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
233 :     \\027\027\033\027\027\027\027\027\027\027\027\000\000\000\000\000\
234 :     \\000"
235 :     ),
236 :     (35,
237 :     "\000\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\000\000\000\000\
239 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
240 :     \\036\036\036\036\036\036\036\036\036\036\000\000\000\000\000\000\
241 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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\000\000\
245 :     \\000"
246 :     ),
247 :     (37,
248 :     "\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
251 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\038\000\
252 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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 :     \\000"
257 :     ),
258 :     (41,
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\000\000\
261 :     \\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\
262 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
263 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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 :     \\000"
268 :     ),
269 :     (43,
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\000\000\000\000\000\000\044\000\000\000\000\000\000\000\000\
273 :     \\044\044\044\044\044\044\044\044\044\044\000\000\000\000\000\000\
274 :     \\000\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044\
275 :     \\044\044\044\044\044\044\044\044\044\044\044\000\000\000\000\044\
276 :     \\000\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044\
277 :     \\044\044\044\044\044\044\044\044\044\044\044\000\000\000\000\000\
278 :     \\000"
279 :     ),
280 :     (45,
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\000\000\000\000\064\000\000\000\000\000\000\000\000\000\000\
284 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
285 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
286 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
287 :     \\000\046\046\046\046\046\046\046\046\046\046\046\060\046\052\046\
288 :     \\046\046\047\046\046\046\046\046\046\046\046\000\000\000\000\000\
289 :     \\000"
290 :     ),
291 :     (46,
292 :     "\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
295 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
296 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
297 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
298 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
299 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
300 :     \\000"
301 :     ),
302 :     (47,
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\000\000\
305 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
306 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
307 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
308 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
309 :     \\000\046\046\046\046\046\046\046\046\048\046\046\046\046\046\046\
310 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
311 :     \\000"
312 :     ),
313 :     (48,
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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
317 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
318 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
319 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
320 :     \\000\046\046\046\046\046\046\049\046\046\046\046\046\046\046\046\
321 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
322 :     \\000"
323 :     ),
324 :     (49,
325 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
326 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
327 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
328 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
329 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
330 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
331 :     \\000\046\046\046\046\046\046\046\050\046\046\046\046\046\046\046\
332 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
333 :     \\000"
334 :     ),
335 :     (50,
336 :     "\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
339 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
340 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
341 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
342 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
343 :     \\046\046\046\046\051\046\046\046\046\046\046\000\000\000\000\000\
344 :     \\000"
345 :     ),
346 :     (52,
347 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
348 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
349 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
350 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
351 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
352 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
353 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\053\
354 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
355 :     \\000"
356 :     ),
357 :     (53,
358 :     "\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
361 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
362 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
363 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
364 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\054\046\
365 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
366 :     \\000"
367 :     ),
368 :     (54,
369 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
370 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
371 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
372 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
373 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
374 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
375 :     \\000\055\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
376 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
377 :     \\000"
378 :     ),
379 :     (55,
380 :     "\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
383 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
384 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
385 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
386 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
387 :     \\046\046\046\056\046\046\046\046\046\046\046\000\000\000\000\000\
388 :     \\000"
389 :     ),
390 :     (56,
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\000\000\000\000\000\000\000\000\
393 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
394 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
395 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
396 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
397 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
398 :     \\046\046\046\057\046\046\046\046\046\046\046\000\000\000\000\000\
399 :     \\000"
400 :     ),
401 :     (57,
402 :     "\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
405 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
406 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
407 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
408 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\058\
409 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
410 :     \\000"
411 :     ),
412 :     (58,
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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
416 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
417 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
418 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
419 :     \\000\046\046\059\046\046\046\046\046\046\046\046\046\046\046\046\
420 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
421 :     \\000"
422 :     ),
423 :     (60,
424 :     "\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
427 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
428 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
429 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
430 :     \\000\046\046\046\046\061\046\046\046\046\046\046\046\046\046\046\
431 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
432 :     \\000"
433 :     ),
434 :     (61,
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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
438 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
439 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
440 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
441 :     \\000\046\046\046\046\046\062\046\046\046\046\046\046\046\046\046\
442 :     \\046\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\
443 :     \\000"
444 :     ),
445 :     (62,
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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
449 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
450 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
451 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\046\
452 :     \\000\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
453 :     \\046\046\046\046\063\046\046\046\046\046\046\000\000\000\000\000\
454 :     \\000"
455 :     ),
456 :     (65,
457 :     "\000\000\000\000\000\000\000\000\000\066\000\000\000\000\000\000\
458 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
459 :     \\066\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
460 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
461 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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\000\000\000\000\000\000\
465 :     \\000"
466 :     ),
467 :     (68,
468 :     "\068\068\068\068\068\068\068\068\068\068\000\068\068\068\068\068\
469 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
470 :     \\068\068\000\068\068\068\068\068\000\000\068\068\068\068\068\068\
471 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
472 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
473 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
474 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
475 :     \\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\068\
476 :     \\068"
477 :     ),
478 :     (70,
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\000\000\000\000\000\000\000\000\000\071\000\000\000\000\000\
482 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
483 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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"
488 :     ),
489 :     (75,
490 :     "\000\000\000\000\000\000\000\000\000\076\000\000\000\000\000\000\
491 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
492 :     \\076\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
493 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
494 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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"
499 :     ),
500 :     (77,
501 :     "\077\077\077\077\077\077\077\077\077\077\000\077\077\077\077\077\
502 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
503 :     \\077\077\077\077\077\077\077\077\000\000\000\077\077\077\077\077\
504 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
505 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
506 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
507 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
508 :     \\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
509 :     \\077"
510 :     ),
511 :     (78,
512 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
513 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
514 :     \\000\000\000\000\000\000\000\000\000\079\000\000\000\000\000\000\
515 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
516 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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"
521 :     ),
522 :     (81,
523 :     "\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\082\000\000\000\000\000\
526 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
527 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
528 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
529 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
530 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
531 :     \\000"
532 :     ),
533 :     (83,
534 :     "\083\083\083\083\083\083\083\083\083\083\000\083\083\083\083\083\
535 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
536 :     \\083\083\000\083\083\083\083\083\083\083\083\083\083\083\083\083\
537 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
538 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
539 :     \\083\083\083\083\083\083\083\083\083\083\083\083\000\083\083\083\
540 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
541 :     \\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\083\
542 :     \\083"
543 :     ),
544 :     (84,
545 :     "\000\000\000\000\000\000\000\000\000\086\086\000\000\000\000\000\
546 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
547 :     \\086\000\085\000\000\000\000\000\000\000\000\000\000\000\000\000\
548 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
549 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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\000\000\000\000\000\000\000\000\000\
553 :     \\000"
554 :     ),
555 :     (89,
556 :     "\089\089\089\089\089\089\089\089\089\089\000\089\089\089\089\089\
557 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
558 :     \\089\089\089\089\089\089\089\089\000\000\000\089\089\089\089\089\
559 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
560 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
561 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
562 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
563 :     \\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\089\
564 :     \\089"
565 :     ),
566 :     (90,
567 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
568 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
569 :     \\000\000\000\000\000\000\000\000\000\091\000\000\000\000\000\000\
570 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
571 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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 :     \\000"
576 :     ),
577 :     (93,
578 :     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
579 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
580 :     \\000\000\000\000\000\000\000\000\000\000\094\000\000\000\000\000\
581 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
582 :     \\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
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 :     \\000"
587 :     ),
588 :     (0, "")]
589 :     fun f x = x
590 :     val s = map f (rev (tl (rev s)))
591 :     exception LexHackingError
592 :     fun look ((j,x)::r, i) = if i = j then x else look(r, i)
593 :     | look ([], i) = raise LexHackingError
594 :     fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)}
595 :     in Vector.fromList(map g
596 :     [{fin = [], trans = 0},
597 :     {fin = [], trans = 1},
598 :     {fin = [], trans = 1},
599 :     {fin = [], trans = 3},
600 :     {fin = [], trans = 3},
601 :     {fin = [], trans = 5},
602 :     {fin = [], trans = 5},
603 :     {fin = [], trans = 7},
604 :     {fin = [], trans = 7},
605 :     {fin = [], trans = 9},
606 :     {fin = [], trans = 9},
607 :     {fin = [], trans = 11},
608 :     {fin = [], trans = 11},
609 :     {fin = [], trans = 13},
610 :     {fin = [], trans = 13},
611 :     {fin = [(N 11),(N 18)], trans = 15},
612 :     {fin = [(N 11)], trans = 15},
613 :     {fin = [(N 11),(N 18)], trans = 17},
614 :     {fin = [(N 2),(N 11)], trans = 15},
615 :     {fin = [(N 18)], trans = 19},
616 :     {fin = [(N 14)], trans = 0},
617 :     {fin = [(N 16)], trans = 0},
618 :     {fin = [(N 94)], trans = 0},
619 :     {fin = [(N 36),(N 94)], trans = 0},
620 :     {fin = [(N 87),(N 94)], trans = 0},
621 :     {fin = [(N 34),(N 94)], trans = 0},
622 :     {fin = [(N 90),(N 94)], trans = 26},
623 :     {fin = [(N 90)], trans = 26},
624 :     {fin = [(N 77)], trans = 0},
625 :     {fin = [(N 90),(N 94)], trans = 29},
626 :     {fin = [(N 28),(N 90)], trans = 26},
627 :     {fin = [(N 90),(N 94)], trans = 31},
628 :     {fin = [(N 90)], trans = 32},
629 :     {fin = [(N 32),(N 90)], trans = 26},
630 :     {fin = [(N 85),(N 94)], trans = 0},
631 :     {fin = [(N 80),(N 94)], trans = 35},
632 :     {fin = [(N 80)], trans = 35},
633 :     {fin = [(N 94)], trans = 37},
634 :     {fin = [(N 43)], trans = 0},
635 :     {fin = [(N 38),(N 94)], trans = 0},
636 :     {fin = [(N 40),(N 94)], trans = 0},
637 :     {fin = [(N 92),(N 94)], trans = 41},
638 :     {fin = [(N 5)], trans = 0},
639 :     {fin = [(N 73),(N 94)], trans = 43},
640 :     {fin = [(N 73)], trans = 43},
641 :     {fin = [(N 94)], trans = 45},
642 :     {fin = [(N 70)], trans = 46},
643 :     {fin = [(N 70)], trans = 47},
644 :     {fin = [(N 70)], trans = 48},
645 :     {fin = [(N 70)], trans = 49},
646 :     {fin = [(N 70)], trans = 50},
647 :     {fin = [(N 56),(N 70)], trans = 46},
648 :     {fin = [(N 70)], trans = 52},
649 :     {fin = [(N 70)], trans = 53},
650 :     {fin = [(N 70)], trans = 54},
651 :     {fin = [(N 70)], trans = 55},
652 :     {fin = [(N 70)], trans = 56},
653 :     {fin = [(N 70)], trans = 57},
654 :     {fin = [(N 70)], trans = 58},
655 :     {fin = [(N 66),(N 70)], trans = 46},
656 :     {fin = [(N 70)], trans = 60},
657 :     {fin = [(N 70)], trans = 61},
658 :     {fin = [(N 70)], trans = 62},
659 :     {fin = [(N 49),(N 70)], trans = 46},
660 :     {fin = [(N 83)], trans = 0},
661 :     {fin = [(N 25),(N 94)], trans = 65},
662 :     {fin = [(N 25)], trans = 65},
663 :     {fin = [(N 20)], trans = 0},
664 :     {fin = [(N 103)], trans = 68},
665 :     {fin = [(N 98)], trans = 0},
666 :     {fin = [(N 96)], trans = 70},
667 :     {fin = [(N 8)], trans = 0},
668 :     {fin = [(N 100)], trans = 0},
669 :     {fin = [(N 147)], trans = 0},
670 :     {fin = [(N 145),(N 147)], trans = 0},
671 :     {fin = [(N 143),(N 147)], trans = 75},
672 :     {fin = [(N 143)], trans = 75},
673 :     {fin = [(N 114)], trans = 77},
674 :     {fin = [(N 105)], trans = 78},
675 :     {fin = [(N 108)], trans = 0},
676 :     {fin = [(N 105)], trans = 0},
677 :     {fin = [(N 105)], trans = 81},
678 :     {fin = [(N 111)], trans = 0},
679 :     {fin = [(N 134)], trans = 83},
680 :     {fin = [(N 129)], trans = 84},
681 :     {fin = [(N 137)], trans = 0},
682 :     {fin = [(N 140)], trans = 0},
683 :     {fin = [(N 127)], trans = 0},
684 :     {fin = [(N 131)], trans = 0},
685 :     {fin = [(N 125)], trans = 89},
686 :     {fin = [(N 116)], trans = 90},
687 :     {fin = [(N 119)], trans = 0},
688 :     {fin = [(N 116)], trans = 0},
689 :     {fin = [(N 116)], trans = 93},
690 :     {fin = [(N 122)], trans = 0}])
691 :     end
692 :     structure StartStates =
693 :     struct
694 :     datatype yystartstate = STARTSTATE of int
695 :    
696 :     (* start state definitions *)
697 :    
698 :     val A = STARTSTATE 3;
699 :     val CODE = STARTSTATE 5;
700 :     val COMMENT = STARTSTATE 9;
701 :     val EMPTYCOMMENT = STARTSTATE 13;
702 :     val F = STARTSTATE 7;
703 :     val INITIAL = STARTSTATE 1;
704 :     val STRING = STARTSTATE 11;
705 :    
706 :     end
707 :     type result = UserDeclarations.lexresult
708 :     exception LexerError (* raised if illegal leaf action tried *)
709 :     end
710 :    
711 :     fun makeLexer yyinput =
712 :     let
713 :     val yyb = ref "\n" (* buffer *)
714 :     val yybl = ref 1 (*buffer length *)
715 :     val yybufpos = ref 1 (* location of next character to use *)
716 :     val yygone = ref 1 (* position in file of beginning of buffer *)
717 :     val yydone = ref false (* eof found yet? *)
718 :     val yybegin = ref 1 (*Current 'start state' for lexer *)
719 :    
720 :     val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
721 :     yybegin := x
722 :    
723 :     fun lex (yyarg as (inputSource)) =
724 :     let fun continue() : Internal.result =
725 :     let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0) =
726 :     let fun action (i,nil) = raise LexError
727 :     | action (i,nil::l) = action (i-1,l)
728 :     | action (i,(node::acts)::l) =
729 :     case node of
730 :     Internal.N yyk =>
731 :     (let val yytext = substring(!yyb,i0,i-i0)
732 :     val yypos = i0+ !yygone
733 :     open UserDeclarations Internal.StartStates
734 :     in (yybufpos := i; case yyk of
735 :    
736 :     (* Application actions *)
737 :    
738 :     100 => (Add yytext; YYBEGIN STRING; continue())
739 :     | 103 => (Add yytext; continue())
740 :     | 105 => (Add yytext; continue())
741 :     | 108 => (Add yytext; dec commentLevel;
742 :     if !commentLevel=0
743 :     then BOGUS_VALUE(!lineno,!lineno)
744 :     else continue()
745 :     )
746 :     | 11 => (Add yytext; continue())
747 :     | 111 => (Add yytext; inc commentLevel; continue())
748 :     | 114 => (Add yytext; continue())
749 :     | 116 => (continue())
750 :     | 119 => (dec commentLevel;
751 :     if !commentLevel=0 then YYBEGIN A else ();
752 :     continue ())
753 :     | 122 => (inc commentLevel; continue())
754 :     | 125 => (continue())
755 :     | 127 => (Add yytext; YYBEGIN CODE; continue())
756 :     | 129 => (Add yytext; continue())
757 :     | 131 => (Add yytext; error inputSource (!lineno) "unclosed string";
758 :     inc lineno; YYBEGIN CODE; continue())
759 :     | 134 => (Add yytext; continue())
760 :     | 137 => (Add yytext; continue())
761 :     | 14 => (YYBEGIN A; HEADER (concat (rev (!text)),!lineno,!lineno))
762 :     | 140 => (Add yytext;
763 :     if substring(yytext,1,1)="\n" then inc lineno else ();
764 :     YYBEGIN F; continue())
765 :     | 143 => (Add yytext; continue())
766 :     | 145 => (Add yytext; YYBEGIN STRING; continue())
767 :     | 147 => (Add yytext; error inputSource (!lineno) "unclosed string";
768 :     YYBEGIN CODE; continue())
769 :     | 16 => (Add yytext; inc lineno; continue())
770 :     | 18 => (Add yytext; continue())
771 :     | 2 => (Add yytext; YYBEGIN COMMENT; commentLevel := 1;
772 :     continue() before YYBEGIN INITIAL)
773 :     | 20 => (inc lineno; continue ())
774 :     | 25 => (continue())
775 :     | 28 => (OF(!lineno,!lineno))
776 :     | 32 => (FOR(!lineno,!lineno))
777 :     | 34 => (LBRACE(!lineno,!lineno))
778 :     | 36 => (RBRACE(!lineno,!lineno))
779 :     | 38 => (COMMA(!lineno,!lineno))
780 :     | 40 => (ASTERISK(!lineno,!lineno))
781 :     | 43 => (ARROW(!lineno,!lineno))
782 :     | 49 => (PREC(Hdr.LEFT,!lineno,!lineno))
783 :     | 5 => (YYBEGIN EMPTYCOMMENT; commentLevel := 1; continue())
784 :     | 56 => (PREC(Hdr.RIGHT,!lineno,!lineno))
785 :     | 66 => (PREC(Hdr.NONASSOC,!lineno,!lineno))
786 :     | 70 => (lookup(yytext,!lineno,!lineno))
787 :     | 73 => (TYVAR(yytext,!lineno,!lineno))
788 :     | 77 => (IDDOT(yytext,!lineno,!lineno))
789 :     | 8 => (Add yytext; YYBEGIN COMMENT; commentLevel := 1;
790 :     continue() before YYBEGIN CODE)
791 :     | 80 => (INT (yytext,!lineno,!lineno))
792 :     | 83 => (DELIMITER(!lineno,!lineno))
793 :     | 85 => (COLON(!lineno,!lineno))
794 :     | 87 => (BAR(!lineno,!lineno))
795 :     | 90 => (ID ((yytext,!lineno),!lineno,!lineno))
796 :     | 92 => (pcount := 1; actionstart := (!lineno);
797 :     text := nil; YYBEGIN CODE; continue() before YYBEGIN A)
798 :     | 94 => (UNKNOWN(yytext,!lineno,!lineno))
799 :     | 96 => (inc pcount; Add yytext; continue())
800 :     | 98 => (dec pcount;
801 :     if !pcount = 0 then
802 :     PROG (concat (rev (!text)),!lineno,!lineno)
803 :     else (Add yytext; continue()))
804 :     | _ => raise Internal.LexerError
805 :    
806 :     ) end )
807 :    
808 :     val {fin,trans} = Vector.sub(Internal.tab, s)
809 :     val NewAcceptingLeaves = fin::AcceptingLeaves
810 :     in if l = !yybl then
811 :     if trans = #trans(Vector.sub(Internal.tab,0))
812 :     then action(l,NewAcceptingLeaves
813 :     ) else let val newchars= if !yydone then "" else yyinput 1024
814 :     in if (size newchars)=0
815 :     then (yydone := true;
816 :     if (l=i0) then UserDeclarations.eof yyarg
817 :     else action(l,NewAcceptingLeaves))
818 :     else (if i0=l then yyb := newchars
819 :     else yyb := substring(!yyb,i0,l-i0)^newchars;
820 :     yygone := !yygone+i0;
821 :     yybl := size (!yyb);
822 :     scan (s,AcceptingLeaves,l-i0,0))
823 :     end
824 :     else let val NewChar = Char.ord(String.sub(!yyb,l))
825 :     val NewState = if NewChar<128 then Char.ord(String.sub(trans,NewChar)) else Char.ord(String.sub(trans,128))
826 :     in if NewState=0 then action(l,NewAcceptingLeaves)
827 :     else scan(NewState,NewAcceptingLeaves,l+1,i0)
828 :     end
829 :     end
830 :     (*
831 :     val start= if substring(!yyb,!yybufpos-1,1)="\n"
832 :     then !yybegin+1 else !yybegin
833 :     *)
834 :     in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
835 :     end
836 :     in continue end
837 :     in lex
838 :     end
839 :     end

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