/[ascend]/trunk/base/generic/compiler/scanner_no_flex.c
ViewVC logotype

Contents of /trunk/base/generic/compiler/scanner_no_flex.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 490 - (show annotations) (download) (as text)
Tue Apr 18 06:55:20 2006 UTC (13 years, 7 months ago) by johnpye
File MIME type: text/x-csrc
File size: 111992 byte(s)
Moved 'extern "C"' into the ASC_DLLSPEC macro.
Renamed .no.yacc and .no.flex files to have .c extension, so that SCons can tell what they are.
Working on getting things building on VC++, still some problems (maybe just issues with $PATH tho)./
1 #define yy_create_buffer zz__create_buffer
2 #define yy_delete_buffer zz__delete_buffer
3 #define yy_scan_buffer zz__scan_buffer
4 #define yy_scan_string zz__scan_string
5 #define yy_scan_bytes zz__scan_bytes
6 #define yy_flex_debug zz__flex_debug
7 #define yy_init_buffer zz__init_buffer
8 #define yy_flush_buffer zz__flush_buffer
9 #define yy_load_buffer_state zz__load_buffer_state
10 #define yy_switch_to_buffer zz__switch_to_buffer
11 #define yyin zz_in
12 #define yyleng zz_leng
13 #define yylex zz_lex
14 #define yyout zz_out
15 #define yyrestart zz_restart
16 #define yytext zz_text
17 #define yywrap zz_wrap
18
19 /* A lexical scanner generated by flex*/
20
21 /* Scanner skeleton version:
22 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
23 */
24
25 #define FLEX_SCANNER
26 #define YY_FLEX_MAJOR_VERSION 2
27 #define YY_FLEX_MINOR_VERSION 5
28
29 #include <stdio.h>
30 #ifndef __WIN32__
31 # include <unistd.h>
32 #endif
33
34
35 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
36 #ifdef c_plusplus
37 #ifndef __cplusplus
38 #define __cplusplus
39 #endif
40 #endif
41
42
43 #ifdef __cplusplus
44
45 #include <stdlib.h>
46
47 /* Use prototypes in function declarations. */
48 #define YY_USE_PROTOS
49
50 /* The "const" storage-class-modifier is valid. */
51 #define YY_USE_CONST
52
53 #else /* ! __cplusplus */
54
55 #if __STDC__
56
57 #define YY_USE_PROTOS
58 #define YY_USE_CONST
59
60 #endif /* __STDC__ */
61 #endif /* ! __cplusplus */
62
63 #ifdef __TURBOC__
64 #pragma warn -rch
65 #pragma warn -use
66 #include <io.h>
67 #include <stdlib.h>
68 #define YY_USE_CONST
69 #define YY_USE_PROTOS
70 #endif
71
72 #ifdef YY_USE_CONST
73 #define yyconst const
74 #else
75 #define yyconst
76 #endif
77
78
79 #ifdef YY_USE_PROTOS
80 #define YY_PROTO(proto) proto
81 #else
82 #define YY_PROTO(proto) ()
83 #endif
84
85 /* Returned upon end-of-file. */
86 #define YY_NULL 0
87
88 /* Promotes a possibly negative, possibly signed char to an unsigned
89 * integer for use as an array index. If the signed char is negative,
90 * we want to instead treat it as an 8-bit unsigned char, hence the
91 * double cast.
92 */
93 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
94
95 /* Enter a start condition. This macro really ought to take a parameter,
96 * but we do it the disgusting crufty way forced on us by the ()-less
97 * definition of BEGIN.
98 */
99 #define BEGIN yy_start = 1 + 2 *
100
101 /* Translate the current start state into a value that can be later handed
102 * to BEGIN to return to the state. The YYSTATE alias is for lex
103 * compatibility.
104 */
105 #define YY_START ((yy_start - 1) / 2)
106 #define YYSTATE YY_START
107
108 /* Action number for EOF rule of a given start state. */
109 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
110
111 /* Special action meaning "start processing a new file". */
112 #define YY_NEW_FILE yyrestart( yyin )
113
114 #define YY_END_OF_BUFFER_CHAR 0
115
116 /* Size of default input buffer. */
117 #define YY_BUF_SIZE 16384
118
119 typedef struct yy_buffer_state *YY_BUFFER_STATE;
120
121 extern int yyleng;
122 extern FILE *yyin, *yyout;
123
124 #define EOB_ACT_CONTINUE_SCAN 0
125 #define EOB_ACT_END_OF_FILE 1
126 #define EOB_ACT_LAST_MATCH 2
127
128 /* The funky do-while in the following #define is used to turn the definition
129 * int a single C statement (which needs a semi-colon terminator). This
130 * avoids problems with code like:
131 *
132 * if ( condition_holds )
133 * yyless( 5 );
134 * else
135 * do_something_else();
136 *
137 * Prior to using the do-while the compiler would get upset at the
138 * "else" because it interpreted the "if" statement as being all
139 * done when it reached the ';' after the yyless() call.
140 */
141
142 /* Return all but the first 'n' matched characters back to the input stream. */
143
144 #define yyless(n) \
145 do \
146 { \
147 /* Undo effects of setting up yytext. */ \
148 *yy_cp = yy_hold_char; \
149 YY_RESTORE_YY_MORE_OFFSET \
150 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
151 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
152 } \
153 while ( 0 )
154
155 #define unput(c) yyunput( c, yytext_ptr )
156
157 /* Some routines like yy_flex_realloc() are emitted as static but are
158 not called by all lexers. This generates warnings in some compilers,
159 notably GCC. Arrange to suppress these. */
160 #ifdef __GNUC__
161 #define YY_MAY_BE_UNUSED __attribute__((unused))
162 #else
163 #define YY_MAY_BE_UNUSED
164 #endif
165
166 /* The following is because we cannot portably get our hands on size_t
167 * (without autoconf's help, which isn't available because we want
168 * flex-generated scanners to compile on their own).
169 */
170 typedef unsigned int yy_size_t;
171
172
173 struct yy_buffer_state
174 {
175 FILE *yy_input_file;
176
177 char *yy_ch_buf; /* input buffer */
178 char *yy_buf_pos; /* current position in input buffer */
179
180 /* Size of input buffer in bytes, not including room for EOB
181 * characters.
182 */
183 yy_size_t yy_buf_size;
184
185 /* Number of characters read into yy_ch_buf, not including EOB
186 * characters.
187 */
188 int yy_n_chars;
189
190 /* Whether we "own" the buffer - i.e., we know we created it,
191 * and can realloc() it to grow it, and should free() it to
192 * delete it.
193 */
194 int yy_is_our_buffer;
195
196 /* Whether this is an "interactive" input source; if so, and
197 * if we're using stdio for input, then we want to use getc()
198 * instead of fread(), to make sure we stop fetching input after
199 * each newline.
200 */
201 int yy_is_interactive;
202
203 /* Whether we're considered to be at the beginning of a line.
204 * If so, '^' rules will be active on the next match, otherwise
205 * not.
206 */
207 int yy_at_bol;
208
209 /* Whether to try to fill the input buffer when we reach the
210 * end of it.
211 */
212 int yy_fill_buffer;
213
214 int yy_buffer_status;
215 #define YY_BUFFER_NEW 0
216 #define YY_BUFFER_NORMAL 1
217 /* When an EOF's been seen but there's still some text to process
218 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
219 * shouldn't try reading from the input source any more. We might
220 * still have a bunch of tokens to match, though, because of
221 * possible backing-up.
222 *
223 * When we actually see the EOF, we change the status to "new"
224 * (via yyrestart()), so that the user can continue scanning by
225 * just pointing yyin at a new input file.
226 */
227 #define YY_BUFFER_EOF_PENDING 2
228 };
229
230 static YY_BUFFER_STATE yy_current_buffer = 0;
231
232 /* We provide macros for accessing buffer states in case in the
233 * future we want to put the buffer states in a more general
234 * "scanner state".
235 */
236 #define YY_CURRENT_BUFFER yy_current_buffer
237
238
239 /* yy_hold_char holds the character lost when yytext is formed. */
240 static char yy_hold_char;
241
242 static int yy_n_chars; /* number of characters read into yy_ch_buf */
243
244
245 int yyleng;
246
247 /* Points to current character in buffer. */
248 static char *yy_c_buf_p = (char *) 0;
249 static int yy_init = 1; /* whether we need to initialize */
250 static int yy_start = 0; /* start state number */
251
252 /* Flag which is used to allow yywrap()'s to do buffer switches
253 * instead of setting up a fresh yyin. A bit of a hack ...
254 */
255 static int yy_did_buffer_switch_on_eof;
256
257 void yyrestart YY_PROTO(( FILE *input_file ));
258
259 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
260 void yy_load_buffer_state YY_PROTO(( void ));
261 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
262 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
263 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
264 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
265 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
266
267 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
268 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
269 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
270
271 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
272 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
273 static void yy_flex_free YY_PROTO(( void * ));
274
275 #define yy_new_buffer yy_create_buffer
276
277 #define yy_set_interactive(is_interactive) \
278 { \
279 if ( ! yy_current_buffer ) \
280 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
281 yy_current_buffer->yy_is_interactive = is_interactive; \
282 }
283
284 #define yy_set_bol(at_bol) \
285 { \
286 if ( ! yy_current_buffer ) \
287 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
288 yy_current_buffer->yy_at_bol = at_bol; \
289 }
290
291 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
292
293 typedef unsigned char YY_CHAR;
294 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
295 typedef int yy_state_type;
296 extern char *yytext;
297 #define yytext_ptr yytext
298
299 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
300 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
301 static int yy_get_next_buffer YY_PROTO(( void ));
302 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
303
304 /* Done after the current pattern has been matched and before the
305 * corresponding action - sets up yytext.
306 */
307 #define YY_DO_BEFORE_ACTION \
308 yytext_ptr = yy_bp; \
309 yytext_ptr -= yy_more_len; \
310 yyleng = (int) (yy_cp - yytext_ptr); \
311 yy_hold_char = *yy_cp; \
312 *yy_cp = '\0'; \
313 yy_c_buf_p = yy_cp;
314
315 #define YY_NUM_RULES 149
316 #define YY_END_OF_BUFFER 150
317 static yyconst short int yy_accept[521] =
318 { 0,
319 146, 146, 118, 118, 0, 0, 140, 140, 131, 131,
320 150, 148, 146, 147, 148, 127, 124, 19, 20, 23,
321 21, 13, 22, 14, 24, 142, 16, 15, 12, 10,
322 11, 145, 145, 145, 145, 145, 145, 145, 145, 145,
323 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
324 17, 18, 25, 134, 26, 118, 119, 120, 122, 149,
325 126, 125, 140, 141, 149, 137, 139, 131, 132, 130,
326 149, 146, 147, 9, 114, 4, 144, 144, 142, 0,
327 5, 6, 1, 3, 8, 2, 145, 145, 145, 145,
328 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
329
330 145, 145, 145, 51, 145, 145, 145, 145, 145, 145,
331 145, 145, 64, 145, 66, 145, 145, 145, 145, 145,
332 145, 81, 82, 145, 145, 145, 145, 145, 145, 145,
333 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
334 145, 0, 133, 118, 119, 0, 120, 121, 120, 115,
335 122, 123, 117, 122, 0, 126, 125, 140, 141, 0,
336 139, 135, 136, 137, 138, 131, 132, 130, 0, 128,
337 129, 0, 143, 144, 0, 144, 7, 27, 145, 29,
338 30, 145, 145, 145, 145, 145, 145, 145, 145, 145,
339 145, 145, 145, 145, 145, 145, 145, 145, 53, 145,
340
341 145, 145, 58, 60, 145, 145, 145, 145, 145, 145,
342 145, 145, 145, 145, 145, 145, 79, 145, 145, 145,
343 145, 145, 145, 145, 91, 145, 145, 145, 145, 145,
344 95, 145, 145, 145, 145, 104, 145, 145, 145, 145,
345 145, 115, 116, 0, 144, 145, 145, 145, 145, 34,
346 145, 36, 37, 38, 145, 145, 145, 145, 145, 145,
347 45, 145, 145, 145, 145, 52, 145, 145, 145, 145,
348 59, 61, 145, 145, 145, 145, 145, 70, 145, 145,
349 145, 145, 145, 145, 145, 145, 145, 85, 145, 145,
350 145, 145, 145, 145, 145, 96, 98, 145, 145, 99,
351
352 100, 145, 145, 145, 145, 106, 145, 145, 145, 112,
353 145, 145, 145, 33, 145, 35, 39, 145, 145, 145,
354 145, 145, 145, 145, 145, 145, 145, 145, 145, 56,
355 145, 145, 145, 68, 145, 145, 145, 145, 145, 145,
356 145, 78, 80, 145, 145, 145, 145, 145, 145, 145,
357 145, 145, 145, 145, 101, 102, 145, 105, 107, 108,
358 145, 145, 145, 145, 145, 63, 40, 145, 145, 145,
359 44, 145, 145, 145, 145, 54, 145, 145, 62, 65,
360 145, 145, 145, 145, 145, 145, 75, 145, 145, 84,
361 145, 145, 145, 145, 90, 145, 93, 145, 97, 145,
362
363 145, 145, 145, 28, 145, 145, 145, 145, 145, 145,
364 47, 145, 145, 145, 145, 145, 145, 145, 145, 145,
365 145, 76, 145, 145, 86, 87, 88, 89, 145, 145,
366 145, 109, 145, 145, 145, 145, 145, 42, 43, 145,
367 145, 145, 55, 145, 145, 145, 145, 72, 145, 74,
368 77, 145, 145, 145, 145, 145, 145, 145, 31, 145,
369 145, 145, 145, 49, 145, 145, 145, 145, 145, 83,
370 92, 94, 103, 145, 145, 145, 145, 145, 46, 48,
371 145, 145, 67, 145, 145, 145, 145, 145, 113, 145,
372 41, 145, 145, 145, 145, 73, 145, 145, 32, 145,
373
374 57, 69, 145, 145, 145, 50, 71, 145, 145, 145,
375 145, 145, 145, 110, 145, 145, 145, 145, 111, 0
376 } ;
377
378 static yyconst int yy_ec[256] =
379 { 0,
380 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
381 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 2, 4, 5, 1, 1, 1, 1, 6, 7,
384 8, 9, 10, 11, 12, 13, 14, 15, 15, 15,
385 15, 15, 15, 15, 15, 15, 15, 16, 17, 18,
386 19, 20, 1, 1, 21, 22, 23, 24, 25, 26,
387 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
388 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
389 47, 48, 49, 50, 51, 1, 30, 30, 30, 30,
390
391 52, 30, 30, 30, 30, 30, 30, 30, 30, 30,
392 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
393 30, 30, 53, 54, 55, 1, 1, 1, 1, 1,
394 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
395 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
396 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
397 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
398 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
399 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
400 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
401
402 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
403 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
404 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
405 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
406 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
407 1, 1, 1, 1, 1
408 } ;
409
410 static yyconst int yy_meta[56] =
411 { 0,
412 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
413 1, 1, 1, 1, 4, 1, 1, 1, 1, 1,
414 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
415 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
416 4, 4, 4, 4, 4, 4, 1, 5, 1, 1,
417 4, 4, 6, 1, 5
418 } ;
419
420 static yyconst short int yy_base[536] =
421 { 0,
422 0, 0, 53, 54, 61, 62, 55, 56, 66, 67,
423 578, 1485, 71, 1485, 493, 1485, 1485, 417, 1485, 1485,
424 1485, 1485, 1485, 62, 1485, 65, 60, 1485, 62, 390,
425 387, 92, 51, 84, 112, 106, 62, 69, 77, 119,
426 130, 78, 134, 110, 139, 148, 156, 147, 161, 164,
427 1485, 1485, 1485, 83, 1485, 85, 1485, 192, 194, 92,
428 1485, 1485, 163, 1485, 365, 357, 1485, 139, 1485, 1485,
429 327, 165, 1485, 1485, 1485, 1485, 181, 195, 201, 207,
430 1485, 273, 1485, 1485, 1485, 1485, 185, 189, 206, 194,
431 210, 212, 190, 209, 198, 213, 220, 231, 217, 247,
432
433 227, 250, 254, 224, 255, 259, 264, 265, 233, 270,
434 274, 276, 239, 266, 297, 271, 280, 278, 292, 299,
435 288, 281, 298, 319, 304, 321, 325, 320, 323, 326,
436 327, 331, 352, 330, 354, 342, 365, 371, 369, 373,
437 372, 350, 1485, 386, 1485, 382, 404, 1485, 412, 285,
438 422, 1485, 1485, 424, 133, 1485, 1485, 389, 1485, 240,
439 1485, 1485, 1485, 228, 1485, 394, 1485, 1485, 175, 1485,
440 1485, 424, 1485, 393, 141, 131, 1485, 349, 414, 395,
441 399, 402, 426, 413, 425, 428, 436, 433, 437, 440,
442 441, 454, 439, 446, 444, 451, 456, 458, 459, 460,
443
444 471, 474, 483, 484, 489, 485, 486, 488, 500, 501,
445 502, 505, 504, 513, 515, 506, 533, 534, 509, 539,
446 517, 535, 532, 546, 514, 547, 554, 555, 556, 560,
447 557, 559, 562, 576, 574, 567, 578, 588, 580, 585,
448 587, 120, 1485, 103, 91, 589, 609, 605, 606, 608,
449 617, 618, 619, 620, 622, 628, 626, 627, 632, 647,
450 630, 639, 631, 650, 651, 637, 671, 659, 648, 678,
451 660, 661, 674, 676, 681, 665, 677, 685, 692, 693,
452 704, 689, 698, 703, 706, 708, 715, 719, 722, 724,
453 726, 723, 733, 746, 745, 735, 738, 747, 749, 748,
454
455 750, 754, 752, 765, 767, 761, 768, 779, 763, 764,
456 792, 791, 780, 787, 794, 795, 796, 807, 809, 805,
457 806, 810, 812, 821, 822, 813, 814, 833, 826, 824,
458 844, 829, 847, 835, 840, 855, 856, 859, 863, 868,
459 867, 872, 874, 879, 875, 884, 886, 882, 889, 887,
460 894, 888, 901, 885, 897, 902, 909, 914, 916, 917,
461 927, 928, 935, 929, 931, 936, 939, 940, 942, 944,
462 947, 949, 956, 957, 948, 951, 960, 977, 958, 968,
463 974, 969, 986, 988, 989, 991, 999, 995, 1001, 1002,
464 1006, 1008, 1007, 1011, 1003, 1020, 1009, 1028, 1012, 1029,
465
466 1030, 1049, 1046, 1018, 1051, 1036, 1050, 1055, 1058, 1057,
467 1059, 1060, 1061, 1062, 1076, 1075, 1084, 1083, 1078, 1090,
468 1101, 1073, 1103, 1104, 1105, 1106, 1107, 1108, 1115, 1110,
469 1117, 1121, 1122, 1131, 1124, 1130, 1133, 1127, 1129, 1136,
470 1150, 1145, 1132, 1156, 1159, 1149, 1161, 1162, 1175, 1173,
471 1177, 1179, 1182, 1180, 1183, 1196, 1184, 1188, 1190, 1193,
472 1201, 1194, 1203, 1208, 1202, 1223, 1217, 1227, 1233, 1204,
473 1210, 1212, 1234, 1241, 1242, 1245, 1247, 1250, 1251, 1252,
474 1256, 1260, 1257, 1262, 1258, 1261, 1264, 1275, 1268, 1279,
475 1271, 1290, 1295, 1280, 1276, 1273, 1291, 1302, 1303, 1305,
476
477 1306, 1310, 1313, 1319, 1320, 1317, 1318, 1322, 1321, 1330,
478 1325, 1337, 1323, 1324, 1340, 1344, 1351, 1352, 1332, 1485,
479 1403, 1409, 1415, 1421, 92, 1427, 1433, 1439, 1445, 1451,
480 1456, 1462, 1466, 1472, 1478
481 } ;
482
483 static yyconst short int yy_def[536] =
484 { 0,
485 520, 1, 521, 521, 522, 522, 523, 523, 524, 524,
486 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
487 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
488 520, 525, 525, 525, 525, 525, 35, 525, 525, 525,
489 35, 525, 525, 525, 525, 35, 525, 525, 525, 525,
490 520, 520, 520, 520, 520, 526, 520, 527, 528, 529,
491 520, 520, 530, 520, 531, 532, 520, 533, 520, 520,
492 534, 520, 520, 520, 520, 520, 520, 520, 520, 520,
493 520, 520, 520, 520, 520, 520, 525, 525, 525, 525,
494 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
495
496 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
497 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
498 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
499 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
500 525, 520, 520, 526, 520, 520, 527, 520, 527, 535,
501 528, 520, 520, 528, 529, 520, 520, 530, 520, 531,
502 520, 520, 520, 532, 520, 533, 520, 520, 534, 520,
503 520, 520, 520, 520, 520, 520, 520, 525, 525, 525,
504 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
505 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
506
507 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
508 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
509 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
510 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
511 525, 535, 520, 520, 520, 525, 525, 525, 525, 525,
512 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
513 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
514 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
515 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
516 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
517
518 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
519 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
520 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
521 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
522 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
523 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
524 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
525 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
526 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
527 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
528
529 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
530 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
531 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
532 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
533 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
534 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
535 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
536 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
537 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
538 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
539
540 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
541 525, 525, 525, 525, 525, 525, 525, 525, 525, 0,
542 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
543 520, 520, 520, 520, 520
544 } ;
545
546 static yyconst short int yy_nxt[1541] =
547 { 0,
548 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
549 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
550 32, 33, 34, 35, 36, 37, 38, 39, 40, 39,
551 39, 39, 41, 42, 43, 44, 39, 45, 46, 47,
552 48, 49, 50, 39, 39, 39, 51, 12, 52, 53,
553 12, 39, 54, 55, 12, 57, 57, 64, 64, 58,
554 58, 59, 59, 61, 61, 87, 62, 62, 69, 69,
555 70, 70, 72, 73, 76, 81, 77, 78, 82, 79,
556 83, 84, 108, 87, 142, 143, 88, 145, 96, 80,
557 109, 87, 87, 146, 156, 88, 110, 157, 87, 111,
558
559 112, 95, 65, 65, 97, 245, 87, 66, 66, 67,
560 67, 98, 121, 71, 71, 89, 80, 245, 99, 95,
561 87, 100, 243, 90, 87, 91, 87, 95, 95, 92,
562 93, 94, 101, 87, 95, 156, 102, 105, 157, 106,
563 103, 167, 95, 168, 113, 176, 104, 126, 87, 107,
564 117, 114, 115, 87, 118, 176, 95, 116, 119, 122,
565 95, 87, 95, 127, 120, 159, 72, 73, 129, 95,
566 87, 123, 130, 124, 125, 87, 131, 171, 87, 128,
567 137, 139, 88, 135, 95, 138, 169, 132, 133, 95,
568 134, 140, 141, 136, 148, 77, 152, 95, 149, 87,
569
570 150, 153, 154, 87, 87, 172, 95, 173, 87, 174,
571 160, 95, 87, 78, 95, 79, 175, 161, 175, 172,
572 87, 176, 179, 87, 87, 80, 87, 87, 184, 178,
573 165, 87, 172, 180, 87, 95, 182, 186, 87, 95,
574 95, 87, 163, 185, 95, 87, 172, 87, 95, 183,
575 192, 187, 80, 87, 181, 190, 95, 188, 189, 95,
576 95, 87, 95, 95, 87, 191, 194, 95, 87, 87,
577 95, 193, 195, 87, 95, 196, 203, 95, 87, 87,
578 87, 95, 199, 95, 87, 87, 197, 243, 87, 95,
579 87, 177, 87, 198, 87, 87, 202, 95, 205, 200,
580
581 95, 208, 87, 201, 95, 95, 87, 204, 206, 95,
582 207, 87, 87, 87, 95, 95, 95, 214, 87, 209,
583 95, 212, 216, 213, 95, 215, 95, 217, 95, 171,
584 95, 95, 210, 87, 87, 87, 211, 87, 95, 87,
585 87, 87, 95, 219, 87, 87, 218, 95, 95, 95,
586 221, 142, 143, 225, 95, 220, 87, 227, 232, 165,
587 222, 223, 226, 87, 224, 229, 87, 163, 87, 95,
588 95, 95, 228, 95, 230, 95, 95, 95, 233, 87,
589 95, 95, 234, 87, 231, 87, 87, 87, 145, 153,
590 146, 159, 95, 235, 146, 236, 167, 238, 168, 95,
591
592 237, 239, 95, 240, 95, 86, 148, 174, 85, 87,
593 520, 241, 520, 87, 148, 95, 87, 172, 149, 95,
594 520, 95, 95, 95, 152, 75, 152, 87, 87, 520,
595 520, 153, 154, 244, 246, 244, 160, 249, 245, 87,
596 87, 169, 87, 161, 172, 95, 248, 87, 251, 95,
597 87, 87, 247, 87, 87, 87, 253, 250, 87, 260,
598 87, 254, 255, 95, 95, 87, 261, 252, 87, 256,
599 87, 263, 87, 87, 87, 95, 95, 257, 95, 264,
600 265, 262, 266, 95, 267, 87, 95, 95, 87, 95,
601 95, 95, 258, 259, 95, 268, 95, 87, 87, 87,
602
603 87, 95, 87, 87, 95, 269, 95, 273, 95, 95,
604 95, 74, 270, 271, 87, 87, 87, 272, 87, 87,
605 87, 95, 274, 87, 95, 278, 277, 87, 87, 87,
606 284, 87, 280, 95, 95, 95, 95, 275, 95, 95,
607 282, 276, 279, 283, 287, 290, 87, 87, 87, 87,
608 95, 95, 95, 87, 281, 95, 95, 285, 286, 95,
609 87, 87, 288, 95, 95, 95, 291, 95, 87, 87,
610 87, 87, 292, 87, 87, 294, 87, 520, 295, 296,
611 289, 87, 95, 95, 95, 95, 293, 298, 87, 95,
612 87, 297, 87, 520, 87, 300, 95, 95, 299, 87,
613
614 301, 87, 87, 87, 95, 95, 95, 95, 302, 95,
615 95, 308, 95, 303, 310, 304, 309, 95, 305, 87,
616 87, 306, 87, 87, 95, 307, 95, 311, 95, 312,
617 95, 87, 87, 87, 87, 95, 87, 95, 95, 95,
618 87, 87, 87, 315, 87, 87, 87, 316, 313, 314,
619 318, 87, 317, 87, 319, 95, 95, 520, 95, 95,
620 321, 87, 87, 323, 87, 87, 320, 95, 95, 95,
621 95, 324, 95, 87, 87, 87, 95, 95, 95, 87,
622 95, 95, 95, 325, 326, 87, 322, 95, 87, 95,
623 87, 87, 87, 327, 331, 87, 328, 95, 329, 87,
624
625 95, 95, 330, 87, 334, 333, 87, 87, 520, 95,
626 95, 95, 87, 332, 335, 95, 336, 87, 87, 520,
627 87, 95, 87, 340, 95, 337, 95, 95, 95, 87,
628 341, 95, 338, 87, 342, 95, 87, 87, 87, 95,
629 87, 339, 95, 95, 343, 344, 348, 87, 95, 87,
630 346, 349, 87, 95, 95, 345, 95, 347, 95, 87,
631 87, 87, 87, 87, 87, 95, 87, 352, 87, 95,
632 350, 354, 95, 95, 95, 87, 95, 87, 87, 87,
633 520, 87, 87, 95, 351, 95, 520, 355, 95, 357,
634 356, 358, 359, 87, 87, 95, 95, 353, 95, 95,
635
636 95, 87, 95, 360, 95, 87, 87, 365, 87, 87,
637 87, 95, 520, 361, 362, 95, 363, 95, 95, 87,
638 87, 87, 364, 87, 87, 369, 87, 87, 87, 95,
639 95, 367, 372, 366, 371, 87, 87, 95, 87, 370,
640 87, 95, 95, 87, 95, 95, 95, 87, 368, 87,
641 374, 375, 373, 376, 87, 95, 95, 95, 87, 95,
642 95, 87, 95, 95, 95, 378, 377, 381, 380, 87,
643 87, 95, 95, 87, 95, 379, 95, 87, 382, 95,
644 383, 87, 87, 95, 384, 95, 87, 386, 87, 87,
645 95, 387, 385, 87, 95, 388, 87, 95, 87, 87,
646
647 87, 87, 87, 87, 393, 95, 95, 391, 87, 95,
648 392, 87, 399, 95, 390, 87, 87, 95, 95, 396,
649 395, 389, 95, 87, 95, 95, 394, 397, 87, 95,
650 87, 87, 95, 520, 95, 95, 95, 95, 95, 95,
651 398, 87, 87, 87, 95, 87, 400, 95, 401, 87,
652 87, 95, 95, 87, 87, 406, 87, 405, 87, 95,
653 402, 87, 87, 87, 95, 87, 95, 95, 407, 403,
654 87, 87, 87, 404, 87, 408, 413, 95, 95, 95,
655 414, 95, 87, 87, 409, 95, 95, 410, 87, 95,
656 95, 87, 95, 417, 95, 411, 412, 95, 95, 95,
657
658 87, 95, 87, 87, 415, 87, 95, 95, 95, 87,
659 95, 421, 416, 87, 418, 87, 87, 87, 95, 95,
660 87, 87, 87, 87, 95, 87, 87, 95, 420, 424,
661 425, 427, 87, 419, 87, 428, 95, 422, 95, 95,
662 423, 95, 87, 87, 87, 95, 426, 520, 429, 95,
663 87, 95, 95, 95, 432, 430, 95, 95, 95, 95,
664 87, 95, 95, 87, 87, 87, 434, 431, 95, 87,
665 95, 87, 87, 87, 87, 87, 87, 520, 95, 95,
666 95, 435, 439, 433, 437, 440, 436, 87, 441, 87,
667 87, 520, 87, 443, 438, 442, 95, 87, 87, 95,
668
669 95, 95, 448, 445, 87, 95, 446, 95, 95, 95,
670 95, 95, 95, 444, 449, 87, 447, 87, 87, 87,
671 87, 87, 87, 95, 87, 95, 95, 451, 95, 87,
672 454, 87, 450, 95, 95, 87, 87, 455, 87, 453,
673 95, 87, 452, 87, 87, 87, 87, 87, 459, 520,
674 87, 95, 520, 95, 95, 95, 95, 95, 95, 87,
675 95, 457, 458, 87, 87, 95, 461, 95, 460, 462,
676 87, 456, 95, 87, 95, 87, 87, 95, 464, 95,
677 95, 95, 95, 95, 463, 468, 95, 87, 467, 87,
678 465, 87, 466, 87, 87, 95, 87, 87, 87, 95,
679
680 95, 469, 87, 470, 87, 471, 95, 87, 87, 95,
681 87, 95, 95, 477, 473, 87, 87, 87, 87, 472,
682 479, 478, 87, 95, 87, 95, 87, 95, 476, 95,
683 95, 87, 95, 95, 475, 474, 480, 87, 95, 481,
684 95, 87, 482, 95, 95, 484, 95, 87, 87, 483,
685 485, 95, 95, 95, 95, 87, 87, 486, 95, 87,
686 95, 87, 95, 488, 87, 87, 87, 95, 487, 489,
687 87, 87, 87, 95, 87, 87, 87, 95, 87, 490,
688 492, 491, 87, 95, 95, 87, 493, 87, 497, 87,
689 87, 95, 95, 87, 87, 95, 494, 95, 496, 498,
690
691 95, 95, 95, 499, 87, 87, 95, 95, 495, 87,
692 95, 95, 95, 502, 95, 503, 87, 87, 95, 87,
693 87, 95, 501, 95, 87, 95, 95, 87, 500, 95,
694 95, 87, 87, 87, 87, 87, 87, 87, 87, 87,
695 95, 504, 510, 506, 87, 95, 87, 507, 511, 513,
696 520, 87, 505, 95, 87, 95, 95, 508, 87, 509,
697 95, 514, 512, 95, 517, 87, 87, 95, 95, 95,
698 95, 95, 95, 515, 95, 95, 519, 520, 516, 520,
699 95, 520, 95, 518, 520, 520, 520, 95, 520, 520,
700 95, 520, 520, 520, 95, 520, 520, 520, 520, 520,
701
702 520, 95, 95, 56, 56, 56, 56, 56, 56, 60,
703 60, 60, 60, 60, 60, 63, 63, 63, 63, 63,
704 63, 68, 68, 68, 68, 68, 68, 144, 520, 144,
705 144, 144, 144, 147, 147, 147, 147, 147, 147, 151,
706 520, 151, 151, 151, 151, 155, 155, 155, 155, 155,
707 155, 158, 158, 158, 158, 158, 162, 162, 162, 162,
708 162, 162, 164, 164, 164, 164, 166, 166, 166, 166,
709 166, 166, 170, 170, 170, 170, 170, 170, 242, 520,
710 520, 242, 242, 242, 11, 520, 520, 520, 520, 520,
711 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
712
713 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
714 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
715 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
716 520, 520, 520, 520, 520, 520, 520, 520, 520, 520
717 } ;
718
719 static yyconst short int yy_chk[1541] =
720 { 0,
721 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
722 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
723 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
725 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
726 1, 1, 1, 1, 1, 3, 4, 7, 8, 3,
727 4, 3, 4, 5, 6, 33, 5, 6, 9, 10,
728 9, 10, 13, 13, 24, 27, 24, 26, 27, 26,
729 29, 29, 37, 38, 54, 54, 37, 56, 33, 26,
730 37, 39, 42, 56, 60, 525, 37, 60, 34, 37,
731
732 38, 33, 7, 8, 34, 245, 32, 7, 8, 7,
733 8, 34, 42, 9, 10, 32, 26, 244, 34, 38,
734 36, 34, 242, 32, 44, 32, 35, 39, 42, 32,
735 32, 32, 35, 40, 34, 155, 35, 36, 155, 36,
736 35, 68, 32, 68, 40, 176, 35, 44, 43, 36,
737 41, 40, 40, 45, 41, 175, 36, 40, 41, 43,
738 44, 48, 35, 45, 41, 63, 72, 72, 46, 40,
739 47, 43, 46, 43, 43, 49, 46, 169, 50, 45,
740 48, 49, 46, 47, 43, 48, 68, 46, 46, 45,
741 46, 50, 50, 47, 58, 77, 59, 48, 58, 87,
742
743 58, 59, 59, 88, 93, 77, 47, 78, 90, 78,
744 63, 49, 95, 79, 50, 79, 80, 63, 80, 78,
745 89, 80, 90, 94, 91, 79, 92, 96, 93, 89,
746 164, 99, 77, 91, 97, 87, 92, 96, 104, 88,
747 93, 101, 160, 94, 90, 98, 78, 109, 95, 92,
748 99, 97, 79, 113, 91, 98, 89, 97, 97, 94,
749 91, 100, 92, 96, 102, 98, 101, 99, 103, 105,
750 97, 100, 102, 106, 104, 102, 109, 101, 107, 108,
751 114, 98, 106, 109, 110, 116, 103, 150, 111, 113,
752 112, 82, 118, 105, 117, 122, 108, 100, 111, 107,
753
754 102, 114, 121, 107, 103, 105, 119, 110, 111, 106,
755 112, 115, 123, 120, 107, 108, 114, 118, 125, 115,
756 110, 116, 120, 117, 111, 119, 112, 121, 118, 71,
757 117, 122, 115, 124, 128, 126, 115, 129, 121, 127,
758 130, 131, 119, 125, 134, 132, 124, 115, 123, 120,
759 127, 142, 142, 128, 125, 126, 136, 130, 134, 66,
760 127, 127, 129, 178, 127, 132, 133, 65, 135, 124,
761 128, 126, 131, 129, 133, 127, 130, 131, 135, 137,
762 134, 132, 136, 139, 133, 138, 141, 140, 144, 146,
763 146, 158, 136, 137, 144, 138, 166, 140, 166, 178,
764
765 139, 140, 133, 141, 135, 31, 147, 174, 30, 180,
766 147, 141, 147, 181, 149, 137, 182, 174, 149, 139,
767 149, 138, 141, 140, 151, 18, 154, 184, 179, 151,
768 151, 154, 154, 172, 179, 172, 158, 184, 172, 185,
769 183, 166, 186, 158, 174, 180, 183, 188, 186, 181,
770 187, 189, 182, 193, 190, 191, 188, 185, 195, 193,
771 194, 189, 190, 184, 179, 196, 194, 187, 192, 191,
772 197, 196, 198, 199, 200, 185, 183, 192, 186, 196,
773 197, 195, 198, 188, 200, 201, 187, 189, 202, 193,
774 190, 191, 192, 192, 195, 201, 194, 203, 204, 206,
775
776 207, 196, 208, 205, 192, 202, 197, 207, 198, 199,
777 200, 15, 202, 205, 209, 210, 211, 206, 213, 212,
778 216, 201, 208, 219, 202, 212, 211, 214, 225, 215,
779 216, 221, 213, 203, 204, 206, 207, 209, 208, 205,
780 214, 210, 212, 215, 219, 221, 223, 217, 218, 222,
781 209, 210, 211, 220, 213, 212, 216, 217, 218, 219,
782 224, 226, 220, 214, 225, 215, 222, 221, 227, 228,
783 229, 231, 223, 232, 230, 226, 233, 11, 227, 228,
784 220, 236, 223, 217, 218, 222, 224, 230, 235, 220,
785 234, 229, 237, 0, 239, 233, 224, 226, 232, 240,
786
787 234, 241, 238, 246, 227, 228, 229, 231, 235, 232,
788 230, 239, 233, 235, 241, 235, 240, 236, 237, 248,
789 249, 238, 250, 247, 235, 238, 234, 246, 237, 247,
790 239, 251, 252, 253, 254, 240, 255, 241, 238, 246,
791 257, 258, 256, 249, 261, 263, 259, 251, 247, 248,
792 256, 266, 255, 262, 257, 248, 249, 0, 250, 247,
793 259, 260, 269, 262, 264, 265, 258, 251, 252, 253,
794 254, 263, 255, 268, 271, 272, 257, 258, 256, 276,
795 261, 263, 259, 264, 265, 267, 260, 266, 273, 262,
796 274, 277, 270, 267, 273, 275, 268, 260, 269, 278,
797
798 264, 265, 270, 282, 276, 275, 279, 280, 0, 268,
799 271, 272, 283, 274, 277, 276, 279, 284, 281, 0,
800 285, 267, 286, 282, 273, 280, 274, 277, 270, 287,
801 283, 275, 281, 288, 284, 278, 289, 292, 290, 282,
802 291, 281, 279, 280, 285, 286, 291, 293, 283, 296,
803 289, 292, 297, 284, 281, 287, 285, 290, 286, 295,
804 294, 298, 300, 299, 301, 287, 303, 295, 302, 288,
805 293, 299, 289, 292, 290, 306, 291, 309, 310, 304,
806 0, 305, 307, 293, 294, 296, 0, 302, 297, 304,
807 303, 305, 307, 308, 313, 295, 294, 298, 300, 299,
808
809 301, 314, 303, 308, 302, 312, 311, 313, 315, 316,
810 317, 306, 0, 309, 310, 304, 311, 305, 307, 320,
811 321, 318, 312, 319, 322, 320, 323, 326, 327, 308,
812 313, 318, 323, 315, 322, 324, 325, 314, 330, 321,
813 329, 312, 311, 332, 315, 316, 317, 328, 319, 334,
814 325, 326, 324, 327, 335, 320, 321, 318, 331, 319,
815 322, 333, 323, 326, 327, 329, 328, 333, 332, 336,
816 337, 324, 325, 338, 330, 331, 329, 339, 335, 332,
817 336, 341, 340, 328, 337, 334, 342, 339, 343, 345,
818 335, 340, 338, 344, 331, 341, 348, 333, 346, 354,
819
820 347, 350, 352, 349, 348, 336, 337, 346, 351, 338,
821 347, 355, 354, 339, 345, 353, 356, 341, 340, 351,
822 350, 344, 342, 357, 343, 345, 349, 352, 358, 344,
823 359, 360, 348, 0, 346, 354, 347, 350, 352, 349,
824 353, 361, 362, 364, 351, 365, 357, 355, 361, 363,
825 366, 353, 356, 367, 368, 365, 369, 364, 370, 357,
826 361, 371, 375, 372, 358, 376, 359, 360, 368, 362,
827 373, 374, 379, 363, 377, 369, 375, 361, 362, 364,
828 377, 365, 380, 382, 370, 363, 366, 372, 381, 367,
829 368, 378, 369, 382, 370, 373, 374, 371, 375, 372,
830
831 383, 376, 384, 385, 378, 386, 373, 374, 379, 388,
832 377, 386, 381, 387, 383, 389, 390, 395, 380, 382,
833 391, 393, 392, 397, 381, 394, 399, 378, 385, 389,
834 391, 393, 404, 384, 396, 394, 383, 387, 384, 385,
835 388, 386, 398, 400, 401, 388, 392, 0, 396, 387,
836 406, 389, 390, 395, 401, 398, 391, 393, 392, 397,
837 403, 394, 399, 402, 407, 405, 403, 400, 404, 408,
838 396, 410, 409, 411, 412, 413, 414, 0, 398, 400,
839 401, 405, 409, 402, 407, 410, 406, 422, 412, 416,
840 415, 0, 419, 414, 408, 413, 403, 418, 417, 402,
841
842 407, 405, 419, 416, 420, 408, 417, 410, 409, 411,
843 412, 413, 414, 415, 420, 421, 418, 423, 424, 425,
844 426, 427, 428, 422, 430, 416, 415, 423, 419, 429,
845 430, 431, 421, 418, 417, 432, 433, 431, 435, 429,
846 420, 438, 424, 439, 436, 434, 443, 437, 435, 0,
847 440, 421, 0, 423, 424, 425, 426, 427, 428, 442,
848 430, 433, 434, 446, 441, 429, 437, 431, 436, 440,
849 444, 432, 433, 445, 435, 447, 448, 438, 442, 439,
850 436, 434, 443, 437, 441, 447, 440, 450, 446, 449,
851 444, 451, 445, 452, 454, 442, 453, 455, 457, 446,
852
853 441, 449, 458, 452, 459, 453, 444, 460, 462, 445,
854 456, 447, 448, 460, 455, 461, 465, 463, 470, 454,
855 462, 461, 464, 450, 471, 449, 472, 451, 458, 452,
856 454, 467, 453, 455, 457, 456, 463, 466, 458, 464,
857 459, 468, 465, 460, 462, 467, 456, 469, 473, 466,
858 468, 461, 465, 463, 470, 474, 475, 469, 464, 476,
859 471, 477, 472, 475, 478, 479, 480, 467, 474, 476,
860 481, 483, 485, 466, 482, 486, 484, 468, 487, 477,
861 481, 478, 489, 469, 473, 491, 482, 496, 487, 488,
862 495, 474, 475, 490, 494, 476, 484, 477, 486, 488,
863
864 478, 479, 480, 490, 492, 497, 481, 483, 485, 493,
865 482, 486, 484, 494, 487, 495, 498, 499, 489, 500,
866 501, 491, 493, 496, 502, 488, 495, 503, 492, 490,
867 494, 506, 507, 504, 505, 509, 508, 513, 514, 511,
868 492, 497, 508, 500, 510, 493, 519, 503, 509, 511,
869 0, 512, 498, 499, 515, 500, 501, 504, 516, 505,
870 502, 512, 510, 503, 516, 517, 518, 506, 507, 504,
871 505, 509, 508, 513, 514, 511, 518, 0, 515, 0,
872 510, 0, 519, 517, 0, 0, 0, 512, 0, 0,
873 515, 0, 0, 0, 516, 0, 0, 0, 0, 0,
874
875 0, 517, 518, 521, 521, 521, 521, 521, 521, 522,
876 522, 522, 522, 522, 522, 523, 523, 523, 523, 523,
877 523, 524, 524, 524, 524, 524, 524, 526, 0, 526,
878 526, 526, 526, 527, 527, 527, 527, 527, 527, 528,
879 0, 528, 528, 528, 528, 529, 529, 529, 529, 529,
880 529, 530, 530, 530, 530, 530, 531, 531, 531, 531,
881 531, 531, 532, 532, 532, 532, 533, 533, 533, 533,
882 533, 533, 534, 534, 534, 534, 534, 534, 535, 0,
883 0, 535, 535, 535, 520, 520, 520, 520, 520, 520,
884 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
885
886 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
887 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
888 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
889 520, 520, 520, 520, 520, 520, 520, 520, 520, 520
890 } ;
891
892 static yy_state_type yy_last_accepting_state;
893 static char *yy_last_accepting_cpos;
894
895 /* The intent behind this definition is that it'll catch
896 * any uses of REJECT which flex missed.
897 */
898 #define REJECT reject_used_but_not_detected
899 static int yy_more_flag = 0;
900 static int yy_more_len = 0;
901 #define yymore() (yy_more_flag = 1)
902 #define YY_MORE_ADJ yy_more_len
903 #define YY_RESTORE_YY_MORE_OFFSET
904 char *yytext;
905 #line 1 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
906 #define INITIAL 0
907 #line 2 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
908 /*
909 * ASCEND Lexing Program
910 *
911 * This file is part of the Ascend Language Interpreter.
912 *
913 * The Ascend Language Interpreter is free software; you can redistribute
914 * it and/or modify it under the terms of the GNU General Public License
915 * as published by the Free Software Foundation; either version 2 of the
916 * License, or (at your option) any later version.
917 *
918 * The Ascend Language Interpreter is distributed in hope that it will be
919 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
920 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
921 * General Public License for more details.
922 *
923 * You should have received a copy of the GNU General Public License
924 * along with the program; if not, write to the Free Software Foundation,
925 * Inc., 675 Mass Ave, Cambridge, MA 02139 USA. Check the file named
926 * COPYING.
927 *
928 * This module is the input file for Flex (Lexical Analyzer
929 * Generator). Its goal is to convert a stream of characters into a
930 * stream of tokens. It has been defined to be consistent with the
931 * routines required by the common compiler-compiler yacc.
932 */
933
934 #include <stdio.h>
935 #include <stdlib.h>
936 #include <string.h>
937 #include <math.h>
938 #include "utilities/ascConfig.h"
939 #include "utilities/ascMalloc.h"
940 #include "compiler/compiler.h"
941 /* everything between here and the next comment is only here */
942 #include "compiler/fractions.h"
943 #include "compiler/dimen.h"
944 #include "compiler/functype.h"
945 #include "compiler/func.h"
946 #include "compiler/types.h"
947 #include "compiler/stattypes.h"
948 #include "compiler/fractions.h"
949 #include "compiler/proc.h"
950 /* because ascParse.h has a nasty union we can't digest without them. */
951 #include "compiler/ascParse.h"
952 /* these below we actually need */
953 #include "general/list.h"
954 #include "compiler/module.h"
955 #include "compiler/scanner.h"
956 #include "compiler/symtab.h"
957 #include "compiler/parser.h"
958
959 #define YY_BREAK
960 /* Defining yybreak as above means that all of our matches must end
961 * in break or return because the normal flex supplied yybreak will
962 * be preempted by our empty one.
963 * In cases where matches contain a conditional return, make sure a
964 * break follows in the failure case.
965 */
966
967 #define ENDTOK 0
968 /* Return value when we reach the end of the input.
969 * This to must be 0 or negative according to yacc
970 */
971
972 #define MAX_REQUIRE_DEPTH 10
973 /* The maximum number of REQUIREd file nesting we will accept.
974 * See RequireStack below.
975 */
976
977 #define WORKBUF_INIT_SIZE 4095
978 /* We need a temporary buffer to copy yytext into before returning
979 * to the scanner (see g_workbuf below).
980 * WORKBUF_INIT_SIZE is the initial size of g_workbuf
981 */
982
983 static unsigned long yy_line = 1;
984 /* The current line number;
985 * every match of newline (\n) needs to ++ this variable.
986 */
987
988 static unsigned long start_line = 0;
989 /* The ine number where an open-comment, open-brace, or
990 * open-double-quote occurs. We use this to help in error reporting.
991 */
992
993 static int CommentNestLevel = 0;
994 /* Nesting level of (* comments *)
995 */
996
997 static int BracesNestLevel = 0;
998 /* Nesting level of {braced} expressions
999 */
1000
1001 static int MatchedBackslash = 0;
1002 /* If this variable is positive, we matched a backslash \ in a DoubleQuote
1003 * or BracedText state, and we should call ProcessBackslashes() to
1004 * process them.
1005 */
1006
1007 static int RequireIndex = 0;
1008 /* The current nesting level of REQUIREd files
1009 */
1010
1011 static YY_BUFFER_STATE RequireStack[MAX_REQUIRE_DEPTH];
1012 /* The Flex buffers used for the REQUIREd files
1013 */
1014
1015 static char *g_workbuf = NULL;
1016 /* We need a place to keep doubly-quoted-text and braced-text for passing
1017 * it back to the parser. yytext will not work since the parser may ask
1018 * the scanner to read another token, at which point the value in yytext
1019 * gets lost.
1020 *
1021 * The initial size of g_workbuf is WORKBUF_INIT_SIZE, and g_workbuf
1022 * doubles when it needs more space.
1023 *
1024 * A call to CopyIntoWorkBuffer(yytext,yyleng) will copy yyleng characters
1025 * of yytext into the working buffer.
1026 *
1027 * Note that having a single work buffer will not work if we ever create
1028 * yacc productions that scan multiple chunks of doubly-quoted-text and/or
1029 * braced-text before acting on them.
1030 */
1031
1032
1033 /* Forward declaration of functions
1034 * provided at the end of this file.
1035 */
1036 static int Asc_ScannerPopBuffer(void);
1037 static char *CopyIntoWorkBuffer(CONST char *, unsigned long);
1038 static int Process_Backslashes(void);
1039 static void ErrMsg_BracesEOF(void);
1040 static void ErrMsg_CommentEOF(void);
1041 static void ErrMsg_DoubleQuoteEOF(void);
1042 static void ErrMsg_LongID(void);
1043 static void ErrMsg_LongSymbol(void);
1044 static void ErrMsg_SymbolEOF(void);
1045 static void ErrMsg_SymbolEOL(void);
1046 static void ErrMsg_UnexpectedChar(void);
1047
1048 #define Comment 1
1049
1050 #define Symbol 2
1051
1052 #define BracedText 3
1053
1054 #define DoubleQuote 4
1055
1056
1057 /* Macros after this point can all be overridden by user definitions in
1058 * section 1.
1059 */
1060
1061 #ifndef YY_SKIP_YYWRAP
1062 #ifdef __cplusplus
1063 extern "C" int yywrap YY_PROTO(( void ));
1064 #else
1065 extern int yywrap YY_PROTO(( void ));
1066 #endif
1067 #endif
1068
1069 #ifndef YY_NO_UNPUT
1070 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1071 #endif
1072
1073 #ifndef yytext_ptr
1074 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1075 #endif
1076
1077 #ifdef YY_NEED_STRLEN
1078 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1079 #endif
1080
1081 #ifndef YY_NO_INPUT
1082 #ifdef __cplusplus
1083 static int yyinput YY_PROTO(( void ));
1084 #else
1085 static int input YY_PROTO(( void ));
1086 #endif
1087 #endif
1088
1089 #if YY_STACK_USED
1090 static int yy_start_stack_ptr = 0;
1091 static int yy_start_stack_depth = 0;
1092 static int *yy_start_stack = 0;
1093 #ifndef YY_NO_PUSH_STATE
1094 static void yy_push_state YY_PROTO(( int new_state ));
1095 #endif
1096 #ifndef YY_NO_POP_STATE
1097 static void yy_pop_state YY_PROTO(( void ));
1098 #endif
1099 #ifndef YY_NO_TOP_STATE
1100 static int yy_top_state YY_PROTO(( void ));
1101 #endif
1102
1103 #else
1104 #define YY_NO_PUSH_STATE 1
1105 #define YY_NO_POP_STATE 1
1106 #define YY_NO_TOP_STATE 1
1107 #endif
1108
1109 #ifdef YY_MALLOC_DECL
1110 YY_MALLOC_DECL
1111 #else
1112 #if __STDC__
1113 #ifndef __cplusplus
1114 #include <stdlib.h>
1115 #endif
1116 #else
1117 /* Just try to get by without declaring the routines. This will fail
1118 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1119 * or sizeof(void*) != sizeof(int).
1120 */
1121 #endif
1122 #endif
1123
1124 /* Amount of stuff to slurp up with each read. */
1125 #ifndef YY_READ_BUF_SIZE
1126 #define YY_READ_BUF_SIZE 8192
1127 #endif
1128
1129 /* Copy whatever the last rule matched to the standard output. */
1130
1131 #ifndef ECHO
1132 /* This used to be an fputs(), but since the string might contain NUL's,
1133 * we now use fwrite().
1134 */
1135 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1136 #endif
1137
1138 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1139 * is returned in "result".
1140 */
1141 #ifndef YY_INPUT
1142 #define YY_INPUT(buf,result,max_size) \
1143 if ( yy_current_buffer->yy_is_interactive ) \
1144 { \
1145 int c = '*', n; \
1146 for ( n = 0; n < max_size && \
1147 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1148 buf[n] = (char) c; \
1149 if ( c == '\n' ) \
1150 buf[n++] = (char) c; \
1151 if ( c == EOF && ferror( yyin ) ) \
1152 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1153 result = n; \
1154 } \
1155 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1156 && ferror( yyin ) ) \
1157 YY_FATAL_ERROR( "input in flex scanner failed" );
1158 #endif
1159
1160 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1161 * we don't want an extra ';' after the "return" because that will cause
1162 * some compilers to complain about unreachable statements.
1163 */
1164 #ifndef yyterminate
1165 #define yyterminate() return YY_NULL
1166 #endif
1167
1168 /* Number of entries by which start-condition stack grows. */
1169 #ifndef YY_START_STACK_INCR
1170 #define YY_START_STACK_INCR 25
1171 #endif
1172
1173 /* Report a fatal error. */
1174 #ifndef YY_FATAL_ERROR
1175 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1176 #endif
1177
1178 /* Default declaration of generated scanner - a define so the user can
1179 * easily add parameters.
1180 */
1181 #ifndef YY_DECL
1182 #define YY_DECL int yylex YY_PROTO(( void ))
1183 #endif
1184
1185 /* Code executed at the beginning of each rule, after yytext and yyleng
1186 * have been set up.
1187 */
1188 #ifndef YY_USER_ACTION
1189 #define YY_USER_ACTION
1190 #endif
1191
1192 /* Code executed at the end of each rule. */
1193 #ifndef YY_BREAK
1194 #define YY_BREAK break;
1195 #endif
1196
1197 #define YY_RULE_SETUP \
1198 YY_USER_ACTION
1199
1200 YY_DECL
1201 {
1202 register yy_state_type yy_current_state;
1203 register char *yy_cp = NULL, *yy_bp = NULL;
1204 register int yy_act;
1205
1206 #line 158 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1207
1208
1209
1210 if ( yy_init )
1211 {
1212 yy_init = 0;
1213
1214 #ifdef YY_USER_INIT
1215 YY_USER_INIT;
1216 #endif
1217
1218 if ( ! yy_start )
1219 yy_start = 1; /* first start state */
1220
1221 if ( ! yyin )
1222 yyin = stdin;
1223
1224 if ( ! yyout )
1225 yyout = stdout;
1226
1227 if ( ! yy_current_buffer )
1228 yy_current_buffer =
1229 yy_create_buffer( yyin, YY_BUF_SIZE );
1230
1231 yy_load_buffer_state();
1232 }
1233
1234 while ( 1 ) /* loops until end-of-file is reached */
1235 {
1236 yy_more_len = 0;
1237 if ( yy_more_flag )
1238 {
1239 yy_more_len = yy_c_buf_p - yytext_ptr;
1240 yy_more_flag = 0;
1241 }
1242 yy_cp = yy_c_buf_p;
1243
1244 /* Support of yytext. */
1245 *yy_cp = yy_hold_char;
1246
1247 /* yy_bp points to the position in yy_ch_buf of the start of
1248 * the current run.
1249 */
1250 yy_bp = yy_cp;
1251
1252 yy_current_state = yy_start;
1253 yy_match:
1254 do
1255 {
1256 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1257 if ( yy_accept[yy_current_state] )
1258 {
1259 yy_last_accepting_state = yy_current_state;
1260 yy_last_accepting_cpos = yy_cp;
1261 }
1262 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1263 {
1264 yy_current_state = (int) yy_def[yy_current_state];
1265 if ( yy_current_state >= 521 )
1266 yy_c = yy_meta[(unsigned int) yy_c];
1267 }
1268 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1269 ++yy_cp;
1270 }
1271 while ( yy_base[yy_current_state] != 1485 );
1272
1273 yy_find_action:
1274 yy_act = yy_accept[yy_current_state];
1275 if ( yy_act == 0 )
1276 { /* have to back up */
1277 yy_cp = yy_last_accepting_cpos;
1278 yy_current_state = yy_last_accepting_state;
1279 yy_act = yy_accept[yy_current_state];
1280 }
1281
1282 YY_DO_BEFORE_ACTION;
1283
1284
1285 do_action: /* This label is used only to access EOF actions. */
1286
1287
1288 switch ( yy_act )
1289 { /* beginning of action switch */
1290 case 0: /* must back up */
1291 /* undo the effects of YY_DO_BEFORE_ACTION */
1292 *yy_cp = yy_hold_char;
1293 yy_cp = yy_last_accepting_cpos;
1294 yy_current_state = yy_last_accepting_state;
1295 goto yy_find_action;
1296
1297 case 1:
1298 YY_RULE_SETUP
1299 #line 160 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1300 { return LEQ_T; }
1301 YY_BREAK
1302 case 2:
1303 YY_RULE_SETUP
1304 #line 161 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1305 { return GEQ_T; }
1306 YY_BREAK
1307 case 3:
1308 YY_RULE_SETUP
1309 #line 162 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1310 { return NEQ_T; }
1311 YY_BREAK
1312 case 4:
1313 YY_RULE_SETUP
1314 #line 163 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1315 { return DOTDOT_T; }
1316 YY_BREAK
1317 case 5:
1318 YY_RULE_SETUP
1319 #line 164 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1320 { return DBLCOLON_T;}
1321 YY_BREAK
1322 case 6:
1323 YY_RULE_SETUP
1324 #line 165 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1325 { return ASSIGN_T; }
1326 YY_BREAK
1327 case 7:
1328 YY_RULE_SETUP
1329 #line 166 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1330 { return CASSIGN_T; }
1331 YY_BREAK
1332 case 8:
1333 YY_RULE_SETUP
1334 #line 167 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1335 { return BEQ_T ; }
1336 YY_BREAK
1337 case 9:
1338 YY_RULE_SETUP
1339 #line 168 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1340 { return BNE_T ; }
1341 YY_BREAK
1342 case 10:
1343 YY_RULE_SETUP
1344 #line 170 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1345 { return '=' ;}
1346 YY_BREAK
1347 case 11:
1348 YY_RULE_SETUP
1349 #line 171 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1350 { return '>' ;}
1351 YY_BREAK
1352 case 12:
1353 YY_RULE_SETUP
1354 #line 172 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1355 { return '<' ;}
1356 YY_BREAK
1357 case 13:
1358 YY_RULE_SETUP
1359 #line 173 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1360 { return ',' ;}
1361 YY_BREAK
1362 case 14:
1363 YY_RULE_SETUP
1364 #line 174 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1365 { return '.' ;}
1366 YY_BREAK
1367 case 15:
1368 YY_RULE_SETUP
1369 #line 175 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1370 { return ';' ;}
1371 YY_BREAK
1372 case 16:
1373 YY_RULE_SETUP
1374 #line 176 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1375 { return ':' ;}
1376 YY_BREAK
1377 case 17:
1378 YY_RULE_SETUP
1379 #line 177 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1380 { return '[' ;}
1381 YY_BREAK
1382 case 18:
1383 YY_RULE_SETUP
1384 #line 178 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1385 { return ']' ;}
1386 YY_BREAK
1387 case 19:
1388 YY_RULE_SETUP
1389 #line 179 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1390 { return '(' ;}
1391 YY_BREAK
1392 case 20:
1393 YY_RULE_SETUP
1394 #line 180 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1395 { return ')' ;}
1396 YY_BREAK
1397 case 21:
1398 YY_RULE_SETUP
1399 #line 181 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1400 { return '+' ;}
1401 YY_BREAK
1402 case 22:
1403 YY_RULE_SETUP
1404 #line 182 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1405 { return '-' ;}
1406 YY_BREAK
1407 case 23:
1408 YY_RULE_SETUP
1409 #line 183 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1410 { return '*' ;}
1411 YY_BREAK
1412 case 24:
1413 YY_RULE_SETUP
1414 #line 184 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1415 { return '/' ;}
1416 YY_BREAK
1417 case 25:
1418 YY_RULE_SETUP
1419 #line 185 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1420 { return '^' ;}
1421 YY_BREAK
1422 case 26:
1423 YY_RULE_SETUP
1424 #line 186 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1425 { return '|' ;}
1426 YY_BREAK
1427 /**** Reserved Keywords ****/
1428 case 27:
1429 YY_RULE_SETUP
1430 #line 190 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1431 { return ADD_T ; }
1432 YY_BREAK
1433 case 28:
1434 YY_RULE_SETUP
1435 #line 191 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1436 { return ALIASES_T ; }
1437 YY_BREAK
1438 case 29:
1439 YY_RULE_SETUP
1440 #line 192 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1441 { return AND_T ; }
1442 YY_BREAK
1443 case 30:
1444 YY_RULE_SETUP
1445 #line 193 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1446 { return ANY_T ; }
1447 YY_BREAK
1448 case 31:
1449 YY_RULE_SETUP
1450 #line 194 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1451 { return AREALIKE_T ; }
1452 YY_BREAK
1453 case 32:
1454 YY_RULE_SETUP
1455 #line 195 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1456 { return ARETHESAME_T ; }
1457 YY_BREAK
1458 case 33:
1459 YY_RULE_SETUP
1460 #line 196 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1461 { return ARRAY_T ; }
1462 YY_BREAK
1463 case 34:
1464 YY_RULE_SETUP
1465 #line 197 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1466 { return ATOM_T ; }
1467 YY_BREAK
1468 case 35:
1469 YY_RULE_SETUP
1470 #line 198 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1471 { return BREAK_T ; }
1472 YY_BREAK
1473 case 36:
1474 YY_RULE_SETUP
1475 #line 199 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1476 { return CALL_T ; }
1477 YY_BREAK
1478 case 37:
1479 YY_RULE_SETUP
1480 #line 200 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1481 { return CARD_T ; }
1482 YY_BREAK
1483 case 38:
1484 YY_RULE_SETUP
1485 #line 201 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1486 { return CASE_T ; }
1487 YY_BREAK
1488 case 39:
1489 YY_RULE_SETUP
1490 #line 202 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1491 { return CHECK_T ; }
1492 YY_BREAK
1493 case 40:
1494 YY_RULE_SETUP
1495 #line 203 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1496 { return CHOICE_T ; }
1497 YY_BREAK
1498 case 41:
1499 YY_RULE_SETUP
1500 #line 204 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1501 { return CONDITIONAL_T ; }
1502 YY_BREAK
1503 case 42:
1504 YY_RULE_SETUP
1505 #line 205 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1506 { return CONSTANT_T ; }
1507 YY_BREAK
1508 case 43:
1509 YY_RULE_SETUP
1510 #line 206 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1511 { return CONTINUE_T ; }
1512 YY_BREAK
1513 case 44:
1514 YY_RULE_SETUP
1515 #line 207 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1516 { return CREATE_T ; }
1517 YY_BREAK
1518 case 45:
1519 YY_RULE_SETUP
1520 #line 208 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1521 { return DATA_T ; }
1522 YY_BREAK
1523 case 46:
1524 YY_RULE_SETUP
1525 #line 209 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1526 { return DECREASING_T ; }
1527 YY_BREAK
1528 case 47:
1529 YY_RULE_SETUP
1530 #line 210 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1531 { return DEFAULT_T ; }
1532 YY_BREAK
1533 case 48:
1534 YY_RULE_SETUP
1535 #line 211 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1536 { return DEFINITION_T ; }
1537 YY_BREAK
1538 case 49:
1539 YY_RULE_SETUP
1540 #line 212 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1541 { return DIMENSION_T ; }
1542 YY_BREAK
1543 case 50:
1544 YY_RULE_SETUP
1545 #line 213 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1546 { return DIMENSIONLESS_T ; }
1547 YY_BREAK
1548 case 51:
1549 YY_RULE_SETUP
1550 #line 214 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1551 { return DO_T ; }
1552 YY_BREAK
1553 case 52:
1554 YY_RULE_SETUP
1555 #line 215 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1556 { return ELSE_T ; }
1557 YY_BREAK
1558 case 53:
1559 YY_RULE_SETUP
1560 #line 216 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1561 { return END_T ; }
1562 YY_BREAK
1563 case 54:
1564 YY_RULE_SETUP
1565 #line 217 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1566 { return EXPECT_T ; }
1567 YY_BREAK
1568 case 55:
1569 YY_RULE_SETUP
1570 #line 218 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1571 { return EXTERNAL_T ; }
1572 YY_BREAK
1573 case 56:
1574 YY_RULE_SETUP
1575 #line 219 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1576 { return FALSE_T ; }
1577 YY_BREAK
1578 case 57:
1579 YY_RULE_SETUP
1580 #line 220 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1581 { return FALLTHRU_T ; }
1582 YY_BREAK
1583 case 58:
1584 YY_RULE_SETUP
1585 #line 221 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1586 { return FIX_T ; }
1587 YY_BREAK
1588 case 59:
1589 YY_RULE_SETUP
1590 #line 222 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1591 { return FREE_T ; }
1592 YY_BREAK
1593 case 60:
1594 YY_RULE_SETUP
1595 #line 223 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1596 { return FOR_T ; }
1597 YY_BREAK
1598 case 61:
1599 YY_RULE_SETUP
1600 #line 224 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1601 { return FROM_T ; }
1602 YY_BREAK
1603 case 62:
1604 YY_RULE_SETUP
1605 #line 225 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1606 { return GLOBAL_T ; }
1607 YY_BREAK
1608 case 63:
1609 YY_RULE_SETUP
1610 #line 226 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1611 { return ASSERT_T ; }
1612 YY_BREAK
1613 case 64:
1614 YY_RULE_SETUP
1615 #line 227 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1616 { return IF_T ; }
1617 YY_BREAK
1618 case 65:
1619 YY_RULE_SETUP
1620 #line 228 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1621 { return IMPORT_T ; }
1622 YY_BREAK
1623 case 66:
1624 YY_RULE_SETUP
1625 #line 229 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1626 { return IN_T ; }
1627 YY_BREAK
1628 case 67:
1629 YY_RULE_SETUP
1630 #line 230 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1631 { return INCREASING_T ; }
1632 YY_BREAK
1633 case 68:
1634 YY_RULE_SETUP
1635 #line 231 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1636 { return INPUT_T ; }
1637 YY_BREAK
1638 case 69:
1639 YY_RULE_SETUP
1640 #line 232 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1641 { return INTERSECTION_T ; }
1642 YY_BREAK
1643 case 70:
1644 YY_RULE_SETUP
1645 #line 233 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1646 { return ISA_T ; }
1647 YY_BREAK
1648 case 71:
1649 YY_RULE_SETUP
1650 #line 234 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1651 { return ISREFINEDTO_T ; }
1652 YY_BREAK
1653 case 72:
1654 YY_RULE_SETUP
1655 #line 235 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1656 { return MAXIMIZE_T ; }
1657 YY_BREAK
1658 case 73:
1659 YY_RULE_SETUP
1660 #line 236 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1661 { return MAXINTEGER_T ; }
1662 YY_BREAK
1663 case 74:
1664 YY_RULE_SETUP
1665 #line 237 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1666 { return MAXREAL_T ; }
1667 YY_BREAK
1668 case 75:
1669 YY_RULE_SETUP
1670 #line 238 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1671 { return METHOD_T ; }
1672 YY_BREAK
1673 case 76:
1674 YY_RULE_SETUP
1675 #line 239 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1676 { return METHODS_T ; }
1677 YY_BREAK
1678 case 77:
1679 YY_RULE_SETUP
1680 #line 240 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1681 { return MINIMIZE_T ; }
1682 YY_BREAK
1683 case 78:
1684 YY_RULE_SETUP
1685 #line 241 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1686 { return MODEL_T ; }
1687 YY_BREAK
1688 case 79:
1689 YY_RULE_SETUP
1690 #line 242 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1691 { return NOT_T ; }
1692 YY_BREAK
1693 case 80:
1694 YY_RULE_SETUP
1695 #line 243 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1696 { return NOTES_T ; }
1697 YY_BREAK
1698 case 81:
1699 YY_RULE_SETUP
1700 #line 244 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1701 { return OF_T ; }
1702 YY_BREAK
1703 case 82:
1704 YY_RULE_SETUP
1705 #line 245 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1706 { return OR_T ; }
1707 YY_BREAK
1708 case 83:
1709 YY_RULE_SETUP
1710 #line 246 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1711 { return OTHERWISE_T ; }
1712 YY_BREAK
1713 case 84:
1714 YY_RULE_SETUP
1715 #line 247 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1716 { return OUTPUT_T ; }
1717 YY_BREAK
1718 case 85:
1719 YY_RULE_SETUP
1720 #line 248 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1721 { return PROD_T ; }
1722 YY_BREAK
1723 case 86:
1724 YY_RULE_SETUP
1725 #line 249 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1726 { return PROVIDE_T ; }
1727 YY_BREAK
1728 case 87:
1729 YY_RULE_SETUP
1730 #line 250 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1731 { return REFINES_T ; }
1732 YY_BREAK
1733 case 88:
1734 YY_RULE_SETUP
1735 #line 251 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1736 { return REPLACE_T ; }
1737 YY_BREAK
1738 case 89:
1739 YY_RULE_SETUP
1740 #line 252 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1741 { return REQUIRE_T ; }
1742 YY_BREAK
1743 case 90:
1744 YY_RULE_SETUP
1745 #line 253 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1746 { return RETURN_T ; }
1747 YY_BREAK
1748 case 91:
1749 YY_RULE_SETUP
1750 #line 254 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1751 { return RUN_T ; }
1752 YY_BREAK
1753 case 92:
1754 YY_RULE_SETUP
1755 #line 255 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1756 { return SATISFIED_T ; }
1757 YY_BREAK
1758 case 93:
1759 YY_RULE_SETUP
1760 #line 256 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1761 { return SELECT_T ; }
1762 YY_BREAK
1763 case 94:
1764 YY_RULE_SETUP
1765 #line 257 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1766 { return SUCHTHAT_T ; }
1767 YY_BREAK
1768 case 95:
1769 YY_RULE_SETUP
1770 #line 258 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1771 { return SUM_T ; }
1772 YY_BREAK
1773 case 96:
1774 YY_RULE_SETUP
1775 #line 259 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1776 { return SIZE_T ; }
1777 YY_BREAK
1778 case 97:
1779 YY_RULE_SETUP
1780 #line 260 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1781 { return SWITCH_T ; }
1782 YY_BREAK
1783 case 98:
1784 YY_RULE_SETUP
1785 #line 261 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1786 { return STOP_T ; }
1787 YY_BREAK
1788 case 99:
1789 YY_RULE_SETUP
1790 #line 262 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1791 { return THEN_T ; }
1792 YY_BREAK
1793 case 100:
1794 YY_RULE_SETUP
1795 #line 263 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1796 { return TRUE_T ; }
1797 YY_BREAK
1798 case 101:
1799 YY_RULE_SETUP
1800 #line 264 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1801 { return UNION_T ; }
1802 YY_BREAK
1803 case 102:
1804 YY_RULE_SETUP
1805 #line 265 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1806 { return UNITS_T ; }
1807 YY_BREAK
1808 case 103:
1809 YY_RULE_SETUP
1810 #line 266 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1811 { return UNIVERSAL_T ; }
1812 YY_BREAK
1813 case 104:
1814 YY_RULE_SETUP
1815 #line 267 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1816 { return USE_T ; }
1817 YY_BREAK
1818 case 105:
1819 YY_RULE_SETUP
1820 #line 268 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1821 { return VALUE_T ; }
1822 YY_BREAK
1823 case 106:
1824 YY_RULE_SETUP
1825 #line 269 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1826 { return WHEN_T ; }
1827 YY_BREAK
1828 case 107:
1829 YY_RULE_SETUP
1830 #line 270 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1831 { return WHERE_T ; }
1832 YY_BREAK
1833 case 108:
1834 YY_RULE_SETUP
1835 #line 271 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1836 { return WHILE_T ; }
1837 YY_BREAK
1838 case 109:
1839 YY_RULE_SETUP
1840 #line 272 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1841 { return WILLBE_T ; }
1842 YY_BREAK
1843 case 110:
1844 YY_RULE_SETUP
1845 #line 273 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1846 { return WILLBETHESAME_T ; }
1847 YY_BREAK
1848 case 111:
1849 YY_RULE_SETUP
1850 #line 274 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1851 { return WILLNOTBETHESAME_T ; }
1852 YY_BREAK
1853 case 112:
1854 YY_RULE_SETUP
1855 #line 275 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1856 { return WITH_T ; }
1857 YY_BREAK
1858 case 113:
1859 YY_RULE_SETUP
1860 #line 276 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1861 { return WITH_VALUE_T ; }
1862 YY_BREAK
1863 /*
1864 * Code to handle (* Comments *)
1865 *
1866 * "(*" puts us into the Comment state. Comments nest, so in the
1867 * Comment state we need to look for "(*" that increases the nesting
1868 * level and "*)" that will lower it.
1869 * Flex is faster if we match as much as possible, so we repeat
1870 * patterns with and without the "\n" (although it is more difficult
1871 * for the maintainer to understand) to avoid the overhead of a
1872 * separate "\n" rule.
1873 * Do NOT try to match \(\*+ since that causes "(****)" to parse
1874 * incorrectly.
1875 */
1876 case 114:
1877 YY_RULE_SETUP
1878 #line 292 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1879 {
1880 /* Match "(" followed by "*" puts us into
1881 * the COMMENT state. Don't use \*+ since
1882 * that will parse "(***)" incorrectly.
1883 * Initialize the nesting level.
1884 * Store the current line for ErrMsg use.
1885 */
1886 BEGIN (Comment);
1887 CommentNestLevel = 1;
1888 start_line = yy_line;
1889 break;
1890 }
1891 YY_BREAK
1892 case 115:
1893 YY_RULE_SETUP
1894 #line 304 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1895 {
1896 /* Match "(" followed "*" followed by
1897 * anything that's not "(" nor "*".
1898 * Increase the commment nesting level.
1899 */
1900 CommentNestLevel++;
1901 break;
1902 }
1903 YY_BREAK
1904 case 116:
1905 YY_RULE_SETUP
1906 #line 312 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1907 {
1908 /* Match "(" followed by "*" followed by
1909 * anything that's not "(" nor "*".
1910 * Increase the commment nesting level.
1911 */
1912 yy_line++;
1913 CommentNestLevel++;
1914 break;
1915 }
1916 YY_BREAK
1917 case 117:
1918 YY_RULE_SETUP
1919 #line 321 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1920 {
1921 /* Match anything not "*" or "(" followed
1922 * by one or more "*"s followed by ")".
1923 * This decreases the comment nesting level
1924 * and kicks us out if we're back to zero.
1925 */
1926 CommentNestLevel--;
1927 if (CommentNestLevel == 0) {
1928 BEGIN (INITIAL);
1929 }
1930 break;
1931 }
1932 YY_BREAK
1933 case 118:
1934 YY_RULE_SETUP
1935 #line 333 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1936 {
1937 /* Eat anything that's not a "*" nor a "("
1938 */
1939 break;
1940 }
1941 YY_BREAK
1942 case 119:
1943 YY_RULE_SETUP
1944 #line 338 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1945 {
1946 /* Eat anything that's not a "*" nor a "("
1947 * that is followed by a newline.
1948 * This rule also matches empty line.
1949 */
1950 yy_line++;
1951 break;
1952 }
1953 YY_BREAK
1954 case 120:
1955 YY_RULE_SETUP
1956 #line 346 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1957 {
1958 /* Eat "("s not followed by "*"
1959 */
1960 break;
1961 }
1962 YY_BREAK
1963 case 121:
1964 YY_RULE_SETUP
1965 #line 351 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1966 {
1967 /* Eat "("s not followed by "*" plus a "\n"
1968 */
1969 yy_line++;
1970 break;
1971 }
1972 YY_BREAK
1973 case 122:
1974 YY_RULE_SETUP
1975 #line 357 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1976 {
1977 /* Eat "*"s not followed by ")"
1978 */
1979 break;
1980 }
1981 YY_BREAK
1982 case 123:
1983 YY_RULE_SETUP
1984 #line 362 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1985 {
1986 /* Eat "*" not followed by ")" plus a "\n"
1987 */
1988 yy_line++;
1989 break;
1990 }
1991 YY_BREAK
1992 case YY_STATE_EOF(Comment):
1993 #line 368 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
1994 {
1995 /* An EOF in a Comment means bad nesting.
1996 * Print an error and pop back a level
1997 * or return ENDTOK if no more input.
1998 */
1999 ErrMsg_CommentEOF();
2000 CommentNestLevel = 0;
2001 if ( Asc_ScannerPopBuffer() == 1 ) {
2002 return ENDTOK;
2003 }
2004 break;
2005 }
2006 YY_BREAK
2007 /*
2008 * Code to handle 'Symbols'
2009 *
2010 * Symbols are simple: they are 'singely quoted strings' that
2011 * exist on a single line. Look for anything that is not
2012 * a quote or a newline to get the text of the symbol.
2013 */
2014 case 124:
2015 YY_RULE_SETUP
2016 #line 390 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2017 {
2018 /* A single quote (') in the INITIAL state
2019 * puts us into the Symbol state.
2020 */
2021 BEGIN (Symbol);
2022 break;
2023 }
2024 YY_BREAK
2025 case 125:
2026 YY_RULE_SETUP
2027 #line 397 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2028 {
2029 /* Anything that is not a (') nor a newline
2030 * followed by a (') is the symbol's text.
2031 * Return to the INITIAL state, store the
2032 * symbol in the symbol table and return
2033 * SYMBOL_T to the parser.
2034 */
2035 BEGIN (INITIAL);
2036 /* strip off the final (')
2037 */
2038 yytext[--yyleng] = '\0';
2039 if (yyleng > YY_MAXLEN) {
2040 ErrMsg_LongSymbol();
2041 break;
2042 }
2043 zz_lval.sym_ptr = AddSymbolL(yytext,yyleng);
2044 return SYMBOL_T;
2045 }
2046 YY_BREAK
2047 case 126:
2048 YY_RULE_SETUP
2049 #line 415 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2050 {
2051 /* If we find a newline before a ('), the
2052 * symbol is unterminated. Print an error
2053 * message and return to the INITIAL state.
2054 */
2055 ErrMsg_SymbolEOL();
2056 yy_line++;
2057 BEGIN(INITIAL);
2058 break;
2059 }
2060 YY_BREAK
2061 case YY_STATE_EOF(Symbol):
2062 #line 425 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2063 {
2064 /* If we find an EOF before a ('), the
2065 * symbol is unterminated. Print an error
2066 * message and pop to the previously
2067 * REQUIREd file or return ENDTOK if the
2068 * pop fails due to no more input.
2069 */
2070 ErrMsg_SymbolEOF();
2071 if ( Asc_ScannerPopBuffer() == 1 ) {
2072 return ENDTOK;
2073 }
2074 break;
2075 }
2076 YY_BREAK
2077 /*
2078 * Code to handle "Text in Double Quotes"
2079 *
2080 * The DoubleQuote state begins with a double quote and ends
2081 * with a double quote; double quotes can be included by
2082 * escaping them with a backslash (e.g. \"). There is no
2083 * nesting level to worry about.
2084 * Flex is faster if we match as much as possible, so we repeat
2085 * patterns with and without the "\n" (although it is more difficult
2086 * for the maintainer to understand) to avoid the overhead of a
2087 * separate "\n" rule.
2088 * We want to keep the text, so we need to call yymore().
2089 */
2090 case 127:
2091 YY_RULE_SETUP
2092 #line 454 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2093 {
2094 /* A double quote puts us into the
2095 * DoubleQuote state. Save the line
2096 * number for error reporting.
2097 */
2098 BEGIN (DoubleQuote);
2099 start_line = yy_line;
2100 break;
2101 }
2102 YY_BREAK
2103 case 128:
2104 YY_RULE_SETUP
2105 #line 463 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2106 {
2107 /* A backslash \ in the DoubleQuote
2108 * state protects any character.
2109 */
2110 MatchedBackslash++;
2111 yymore();
2112 break;
2113 }
2114 YY_BREAK
2115 case 129:
2116 YY_RULE_SETUP
2117 #line 471 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2118 {
2119 /* A backslash \ in the DoubleQuote
2120 * state protects a newline.
2121 */
2122 MatchedBackslash++;
2123 yy_line++;
2124 yymore();
2125 break;
2126 }
2127 YY_BREAK
2128 case 130:
2129 YY_RULE_SETUP
2130 #line 480 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2131 {
2132 /* A double quote in the DoubleQuote state
2133 * (that is not protected by backslash)
2134 * will put us back in the INITIAL state.
2135 * Process the string and return DQUOTE_T
2136 * to the parser.
2137 */
2138 BEGIN (INITIAL);
2139 /* Remove the final double quote
2140 */
2141 yytext[--yyleng] = '\0';
2142 /* Do backslash substitutions on the string
2143 * before returing it to the scanner.
2144 */
2145 if ( MatchedBackslash != 0 ) {
2146 Process_Backslashes();
2147 MatchedBackslash = 0;
2148 }
2149 zz_lval.dquote_ptr =
2150 CopyIntoWorkBuffer(yytext,yyleng);
2151 return DQUOTE_T;
2152 }
2153 YY_BREAK
2154 case 131:
2155 YY_RULE_SETUP
2156 #line 502 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2157 {
2158 /* Match anything that is not backslash nor
2159 * doublequote and add it to the text.
2160 */
2161 yymore();
2162 break;
2163 }
2164 YY_BREAK
2165 case 132:
2166 YY_RULE_SETUP
2167 #line 509 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2168 {
2169 /* Match anything that is not backslash nor
2170 * doublequote and add it to the text.
2171 * This also matches an empty line.
2172 */
2173 yy_line++;
2174 yymore();
2175 break;
2176 }
2177 YY_BREAK
2178 case YY_STATE_EOF(DoubleQuote):
2179 #line 518 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2180 {
2181 /* End of File in a DoubleQuote state
2182 * means no matching double quote.
2183 * Print an error and pop next buffer
2184 * off the RequireStack or return ENDTOK
2185 * if there is no more input.
2186 */
2187 ErrMsg_DoubleQuoteEOF();
2188 MatchedBackslash = 0;
2189 if ( Asc_ScannerPopBuffer() == 1 ) {
2190 return ENDTOK;
2191 }
2192 break;
2193 }
2194 YY_BREAK
2195 /*
2196 * Code to handle { Text in Braces }
2197 *
2198 * "{" puts us into the BracedText state. Braces nest, so
2199 * in the BracedText state we need to look for "{" that increases
2200 * the nesting level and "}" that will lower it.
2201 * Flex is faster if we match as much as possible, so we repeat
2202 * patterns with and without the "\n" (although it is more difficult
2203 * for the maintainer to understand) to avoid the overhead of a
2204 * separate "\n" rule.
2205 * We want to keep the text we scan, so we have to call yymore().
2206 */
2207 case 133:
2208 YY_RULE_SETUP
2209 #line 547 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2210 { /* A "{" puts us into the BracedText state.
2211 * If from the opening "{" to the first
2212 * newline is all whitespace, then ignore
2213 * it.
2214 * Initialize the nesting level.
2215 * Save the current line number for
2216 * error message reporting.
2217 */
2218 BEGIN (BracedText);
2219 BracesNestLevel = 1;
2220 start_line = yy_line;
2221 yy_line++;
2222 break;
2223 }
2224 YY_BREAK
2225 case 134:
2226 YY_RULE_SETUP
2227 #line 561 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2228 {
2229 /* A "{" puts us into the BracedText state.
2230 * Initialize the nesting level.
2231 * Save the current line number for
2232 * error message reporting.
2233 */
2234 BEGIN (BracedText);
2235 BracesNestLevel = 1;
2236 start_line = yy_line;
2237 break;
2238 }
2239 YY_BREAK
2240 case 135:
2241 YY_RULE_SETUP
2242 #line 572 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2243 {
2244 /* A backslash \ in the BracedText state
2245 * protects any character and does not
2246 * affect the Nesting Level.
2247 */
2248 MatchedBackslash++;
2249 yymore();
2250 break;
2251 }
2252 YY_BREAK
2253 case 136:
2254 YY_RULE_SETUP
2255 #line 581 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2256 {
2257 /* A backslash \ in the BracedText state
2258 * protects a newline.
2259 */
2260 MatchedBackslash++;
2261 yy_line++;
2262 yymore();
2263 break;
2264 }
2265 YY_BREAK
2266 case 137:
2267 YY_RULE_SETUP
2268 #line 590 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2269 {
2270 /* A "{" in the braces state gets added to
2271 * the text and increase the nesting level.
2272 */
2273 BracesNestLevel++;
2274 yymore();
2275 break;
2276 }
2277 YY_BREAK
2278 case 138:
2279 YY_RULE_SETUP
2280 #line 598 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2281 {
2282 /* A "{" in the braces state gets added to
2283 * the text and increase the nesting level.
2284 */
2285 yy_line++;
2286 BracesNestLevel++;
2287 yymore();
2288 break;
2289 }
2290 YY_BREAK
2291 case 139:
2292 YY_RULE_SETUP
2293 #line 607 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2294 {
2295 /* A "}" will reduce the nesting level.
2296 * If the nesting level is zero, go back to
2297 * the INITIAL level, save the text as a
2298 * Symbol, do the backslash substitution,
2299 * and return BRACEDTEXT_T to the
2300 * parse; otherwise, add the "}" to the
2301 * text and keep scanning.
2302 */
2303 BracesNestLevel--;
2304 if (BracesNestLevel == 0) {
2305 BEGIN (INITIAL);
2306 /* Remove the final "}"
2307 */
2308 yytext[--yyleng] = '\0';
2309 /* Do backslash substitutions on the text
2310 * before returing it to the scanner.
2311 */
2312 if ( MatchedBackslash != 0 ) {
2313 Process_Backslashes();
2314 MatchedBackslash = 0;
2315 }
2316 zz_lval.braced_ptr =
2317 CopyIntoWorkBuffer(yytext,yyleng);
2318 return BRACEDTEXT_T;
2319 }
2320 yymore();
2321 break;
2322 }
2323 YY_BREAK
2324 case 140:
2325 YY_RULE_SETUP
2326 #line 636 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2327 {
2328 /* Match anything that is not "{" nor "}"
2329 * nor "\\"(backslash) and add it to text.
2330 */
2331 yymore();
2332 break;
2333 }
2334 YY_BREAK
2335 case 141:
2336 YY_RULE_SETUP
2337 #line 643 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2338 {
2339 /* Match anything that is not "{" nor "}"
2340 * nor "\\"(backslash) followed by a "\n"
2341 * and add it to text.
2342 * This also matches an empty line.
2343 */
2344 yy_line++;
2345 yymore();
2346 break;
2347 }
2348 YY_BREAK
2349 case YY_STATE_EOF(BracedText):
2350 #line 653 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2351 {
2352 /* End of File in braces means bad nesting.
2353 * Print an error message and pop to the
2354 * previously REQUIREd file or return
2355 * ENDTOK if no more input.
2356 */
2357 ErrMsg_BracesEOF();
2358 BracesNestLevel = 0;
2359 MatchedBackslash = 0;
2360 if ( Asc_ScannerPopBuffer() == 1 ) {
2361 return ENDTOK;
2362 }
2363 break;
2364 }
2365 YY_BREAK
2366 /*
2367 * Code to handle Miscellaneous types.
2368 *
2369 */
2370 case 142:
2371 YY_RULE_SETUP
2372 #line 674 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2373 {
2374 /* An integer. Defn near top of file.
2375 */
2376 zz_lval.int_value = atol(yytext);
2377 return INTEGER_T;
2378 }
2379 YY_BREAK
2380 case 143:
2381 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2382 yy_c_buf_p = yy_cp -= 2;
2383 YY_DO_BEFORE_ACTION; /* set up yytext again */
2384 YY_RULE_SETUP
2385 #line 681 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2386 {
2387 /* An integer as the first number in a
2388 * range (need to avoid parsing "1..2"
2389 * as the real numbers 1.0 and 0.2).
2390 */
2391 zz_lval.int_value = atol(yytext);
2392 return INTEGER_T;
2393 }
2394 YY_BREAK
2395 case 144:
2396 YY_RULE_SETUP
2397 #line 690 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2398 {
2399 /* A real number. Defn near top of file.
2400 */
2401 zz_lval.real_value = atof(yytext);
2402 return REAL_T;
2403 }
2404 YY_BREAK
2405 case 145:
2406 YY_RULE_SETUP
2407 #line 697 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2408 {
2409 /* An identifier. Defn near top of file.
2410 */
2411 if (yyleng >YY_MAXLEN) {
2412 ErrMsg_LongID();
2413 break;
2414 }
2415 zz_lval.id_ptr = AddSymbolL(yytext,yyleng);
2416 return IDENTIFIER_T;
2417 }
2418 YY_BREAK
2419 case 146:
2420 YY_RULE_SETUP
2421 #line 708 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2422 {
2423 /* Ignore whitespace. */
2424 break;
2425 }
2426 YY_BREAK
2427 case 147:
2428 YY_RULE_SETUP
2429 #line 712 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2430 {
2431 /* Ignore whitespace. */
2432 yy_line++;
2433 break;
2434 }
2435 YY_BREAK
2436 case 148:
2437 YY_RULE_SETUP
2438 #line 719 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2439 {
2440 /* Unknown character. Print error
2441 * message and keep going.
2442 */
2443 ErrMsg_UnexpectedChar();
2444 break;
2445 }
2446 YY_BREAK
2447 case YY_STATE_EOF(INITIAL):
2448 #line 727 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2449 {
2450 /* Print an error message if we
2451 * reached EOF in the middle of a
2452 * type definition. Pop to the
2453 * previously REQUIREd file or return
2454 * ENDTOK if no more input.
2455 */
2456 Asc_ErrMsgTypeDefnEOF();
2457 if ( Asc_ScannerPopBuffer() == 1 ) {
2458 return ENDTOK;
2459 }
2460 break;
2461 }
2462 YY_BREAK
2463 case 149:
2464 YY_RULE_SETUP
2465 #line 741 "/tmp/trunk/base/autotools/../generic/compiler/scanner.l"
2466 ECHO;
2467 YY_BREAK
2468
2469 case YY_END_OF_BUFFER:
2470 {
2471 /* Amount of text matched not including the EOB char. */
2472 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2473
2474 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2475 *yy_cp = yy_hold_char;
2476 YY_RESTORE_YY_MORE_OFFSET
2477
2478 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2479 {
2480 /* We're scanning a new file or input source. It's
2481 * possible that this happened because the user
2482 * just pointed yyin at a new source and called
2483 * yylex(). If so, then we have to assure
2484 * consistency between yy_current_buffer and our
2485 * globals. Here is the right place to do so, because
2486 * this is the first action (other than possibly a
2487 * back-up) that will match for the new input source.
2488 */
2489 yy_n_chars = yy_current_buffer->yy_n_chars;
2490 yy_current_buffer->yy_input_file = yyin;
2491 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2492 }
2493
2494 /* Note that here we test for yy_c_buf_p "<=" to the position
2495 * of the first EOB in the buffer, since yy_c_buf_p will
2496 * already have been incremented past the NUL character
2497 * (since all states make transitions on EOB to the
2498 * end-of-buffer state). Contrast this with the test
2499 * in input().
2500 */
2501 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2502 { /* This was really a NUL. */
2503 yy_state_type yy_next_state;
2504
2505 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2506
2507 yy_current_state = yy_get_previous_state();
2508
2509 /* Okay, we're now positioned to make the NUL
2510 * transition. We couldn't have
2511 * yy_get_previous_state() go ahead and do it
2512 * for us because it doesn't know how to deal
2513 * with the possibility of jamming (and we don't
2514 * want to build jamming into it because then it
2515 * will run more slowly).
2516 */
2517
2518 yy_next_state = yy_try_NUL_trans( yy_current_state );
2519
2520 yy_bp = yytext_ptr + YY_MORE_ADJ;
2521
2522 if ( yy_next_state )
2523 {
2524 /* Consume the NUL. */
2525 yy_cp = ++yy_c_buf_p;
2526 yy_current_state = yy_next_state;
2527 goto yy_match;
2528 }
2529
2530 else
2531 {
2532 yy_cp = yy_c_buf_p;
2533 goto yy_find_action;
2534 }
2535 }
2536
2537 else switch ( yy_get_next_buffer() )
2538 {
2539 case EOB_ACT_END_OF_FILE:
2540 {
2541 yy_did_buffer_switch_on_eof = 0;
2542
2543 if ( yywrap() )
2544 {
2545 /* Note: because we've taken care in
2546 * yy_get_next_buffer() to have set up
2547 * yytext, we can now set up
2548 * yy_c_buf_p so that if some total
2549 * hoser (like flex itself) wants to
2550 * call the scanner after we return the
2551 * YY_NULL, it'll still work - another
2552 * YY_NULL will get returned.
2553 */
2554 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2555
2556 yy_act = YY_STATE_EOF(YY_START);
2557 goto do_action;
2558 }
2559
2560 else
2561 {
2562 if ( ! yy_did_buffer_switch_on_eof )
2563 YY_NEW_FILE;
2564 }
2565 break;
2566 }
2567
2568 case EOB_ACT_CONTINUE_SCAN:
2569 yy_c_buf_p =
2570 yytext_ptr + yy_amount_of_matched_text;
2571
2572 yy_current_state = yy_get_previous_state();
2573
2574 yy_cp = yy_c_buf_p;
2575 yy_bp = yytext_ptr + YY_MORE_ADJ;
2576 goto yy_match;
2577
2578 case EOB_ACT_LAST_MATCH:
2579 yy_c_buf_p =
2580 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2581
2582 yy_current_state = yy_get_previous_state();
2583
2584 yy_cp = yy_c_buf_p;
2585 yy_bp = yytext_ptr + YY_MORE_ADJ;
2586 goto yy_find_action;
2587 }
2588 break;
2589 }
2590
2591 default:
2592 YY_FATAL_ERROR(
2593 "fatal flex scanner internal error--no action found" );
2594 } /* end of action switch */
2595 } /* end of scanning one token */
2596 } /* end of yylex */
2597
2598
2599 /* yy_get_next_buffer - try to read in a new buffer
2600 *
2601 * Returns a code representing an action:
2602 * EOB_ACT_LAST_MATCH -
2603 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2604 * EOB_ACT_END_OF_FILE - end of file
2605 */
2606
2607 static int yy_get_next_buffer()
2608 {
2609 register char *dest = yy_current_buffer->yy_ch_buf;
2610 register char *source = yytext_ptr;
2611 register int number_to_move, i;
2612 int ret_val;
2613
2614 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2615 YY_FATAL_ERROR(
2616 "fatal flex scanner internal error--end of buffer missed" );
2617
2618 if ( yy_current_buffer->yy_fill_buffer == 0 )
2619 { /* Don't try to fill the buffer, so this is an EOF. */
2620 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2621 {
2622 /* We matched a single character, the EOB, so
2623 * treat this as a final EOF.
2624 */
2625 return EOB_ACT_END_OF_FILE;
2626 }
2627
2628 else
2629 {
2630 /* We matched some text prior to the EOB, first
2631 * process it.
2632 */
2633 return EOB_ACT_LAST_MATCH;
2634 }
2635 }
2636
2637 /* Try to read more data. */
2638
2639 /* First move last chars to start of buffer. */
2640 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2641
2642 for ( i = 0; i < number_to_move; ++i )
2643 *(dest++) = *(source++);
2644
2645 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2646 /* don't do the read, it's not guaranteed to return an EOF,
2647 * just force an EOF
2648 */
2649 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2650
2651 else
2652 {
2653 int num_to_read =
2654 yy_current_buffer->yy_buf_size - number_to_move - 1;
2655
2656 while ( num_to_read <= 0 )
2657 { /* Not enough room in the buffer - grow it. */
2658 #ifdef YY_USES_REJECT
2659 YY_FATAL_ERROR(
2660 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2661 #else
2662
2663 /* just a shorter name for the current buffer */
2664 YY_BUFFER_STATE b = yy_current_buffer;
2665
2666 int yy_c_buf_p_offset =
2667 (int) (yy_c_buf_p - b->yy_ch_buf);
2668
2669 if ( b->yy_is_our_buffer )
2670 {
2671 int new_size = b->yy_buf_size * 2;
2672
2673 if ( new_size <= 0 )
2674 b->yy_buf_size += b->yy_buf_size / 8;
2675 else
2676 b->yy_buf_size *= 2;
2677
2678 b->yy_ch_buf = (char *)
2679 /* Include room in for 2 EOB chars. */
2680 yy_flex_realloc( (void *) b->yy_ch_buf,
2681 b->yy_buf_size + 2 );
2682 }
2683 else
2684 /* Can't grow it, we don't own it. */
2685 b->yy_ch_buf = 0;
2686
2687 if ( ! b->yy_ch_buf )
2688 YY_FATAL_ERROR(
2689 "fatal error - scanner input buffer overflow" );
2690
2691 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2692
2693 num_to_read = yy_current_buffer->yy_buf_size -
2694 number_to_move - 1;
2695 #endif
2696 }
2697
2698 if ( num_to_read > YY_READ_BUF_SIZE )
2699 num_to_read = YY_READ_BUF_SIZE;
2700
2701 /* Read in more data. */
2702 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2703 yy_n_chars, num_to_read );
2704
2705 yy_current_buffer->yy_n_chars = yy_n_chars;
2706 }
2707
2708 if ( yy_n_chars == 0 )
2709 {
2710 if ( number_to_move == YY_MORE_ADJ )
2711 {
2712 ret_val = EOB_ACT_END_OF_FILE;
2713 yyrestart( yyin );
2714 }
2715
2716 else
2717 {
2718 ret_val = EOB_ACT_LAST_MATCH;
2719 yy_current_buffer->yy_buffer_status =
2720 YY_BUFFER_EOF_PENDING;
2721 }
2722 }
2723
2724 else
2725 ret_val = EOB_ACT_CONTINUE_SCAN;
2726
2727 yy_n_chars += number_to_move;
2728 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2729 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2730
2731 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2732
2733 return ret_val;
2734 }
2735
2736
2737 /* yy_get_previous_state - get the state just before the EOB char was reached */
2738
2739 static yy_state_type yy_get_previous_state()
2740 {
2741 register yy_state_type yy_current_state;
2742 register char *yy_cp;
2743
2744 yy_current_state = yy_start;
2745
2746 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2747 {
2748 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2749 if ( yy_accept[yy_current_state] )
2750 {
2751 yy_last_accepting_state = yy_current_state;
2752 yy_last_accepting_cpos = yy_cp;
2753 }
2754 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2755 {
2756 yy_current_state = (int) yy_def[yy_current_state];
2757 if ( yy_current_state >= 521 )
2758 yy_c = yy_meta[(unsigned int) yy_c];
2759 }
2760 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2761 }
2762
2763 return yy_current_state;
2764 }
2765
2766
2767 /* yy_try_NUL_trans - try to make a transition on the NUL character
2768 *
2769 * synopsis
2770 * next_state = yy_try_NUL_trans( current_state );
2771 */
2772
2773 #ifdef YY_USE_PROTOS
2774 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2775 #else
2776 static yy_state_type yy_try_NUL_trans( yy_current_state )
2777 yy_state_type yy_current_state;
2778 #endif
2779 {
2780 register int yy_is_jam;
2781 register char *yy_cp = yy_c_buf_p;
2782
2783 register YY_CHAR yy_c = 1;
2784 if ( yy_accept[yy_current_state] )
2785 {
2786 yy_last_accepting_state = yy_current_state;
2787 yy_last_accepting_cpos = yy_cp;
2788 }
2789 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2790 {
2791 yy_current_state = (int) yy_def[yy_current_state];
2792 if ( yy_current_state >= 521 )
2793 yy_c = yy_meta[(unsigned int) yy_c];
2794 }
2795 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2796 yy_is_jam = (yy_current_state == 520);
2797
2798 return yy_is_jam ? 0 : yy_current_state;
2799 }
2800
2801
2802 #ifndef YY_NO_UNPUT
2803 #ifdef YY_USE_PROTOS
2804 static void yyunput( int c, register char *yy_bp )
2805 #else
2806 static void yyunput( c, yy_bp )
2807 int c;
2808 register char *yy_bp;
2809 #endif
2810 {
2811 register char *yy_cp = yy_c_buf_p;
2812
2813 /* undo effects of setting up yytext */
2814 *yy_cp = yy_hold_char;
2815
2816 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2817 { /* need to shift things up to make room */
2818 /* +2 for EOB chars. */
2819 register int number_to_move = yy_n_chars + 2;
2820 register char *dest = &yy_current_buffer->yy_ch_buf[
2821 yy_current_buffer->yy_buf_size + 2];
2822 register char *source =
2823 &yy_current_buffer->yy_ch_buf[number_to_move];
2824
2825 while ( source > yy_current_buffer->yy_ch_buf )
2826 *--dest = *--source;
2827
2828 yy_cp += (int) (dest - source);
2829 yy_bp += (int) (dest - source);
2830 yy_current_buffer->yy_n_chars =
2831 yy_n_chars = yy_current_buffer->yy_buf_size;
2832
2833 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2834 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2835 }
2836
2837 *--yy_cp = (char) c;
2838
2839
2840 yytext_ptr = yy_bp;
2841 yy_hold_char = *yy_cp;
2842 yy_c_buf_p = yy_cp;
2843 }
2844 #endif /* ifndef YY_NO_UNPUT */
2845
2846
2847 #ifndef YY_NO_INPUT
2848 #ifdef __cplusplus
2849 static int yyinput()
2850 #else
2851 static int input()
2852 #endif
2853 {
2854 int c;
2855
2856 *yy_c_buf_p = yy_hold_char;
2857
2858 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2859 {
2860 /* yy_c_buf_p now points to the character we want to return.
2861 * If this occurs *before* the EOB characters, then it's a
2862 * valid NUL; if not, then we've hit the end of the buffer.
2863 */
2864 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2865 /* This was really a NUL. */
2866 *yy_c_buf_p = '\0';
2867
2868 else
2869 { /* need more input */
2870 int offset = yy_c_buf_p - yytext_ptr;
2871 ++yy_c_buf_p;
2872
2873 switch ( yy_get_next_buffer() )
2874 {
2875 case EOB_ACT_LAST_MATCH:
2876 /* This happens because yy_g_n_b()
2877 * sees that we've accumulated a
2878 * token and flags that we need to
2879 * try matching the token before
2880 * proceeding. But for input(),
2881 * there's no matching to consider.
2882 * So convert the EOB_ACT_LAST_MATCH
2883 * to EOB_ACT_END_OF_FILE.
2884 */
2885
2886 /* Reset buffer status. */
2887 yyrestart( yyin );
2888
2889 /* fall through */
2890
2891 case EOB_ACT_END_OF_FILE:
2892 {
2893 if ( yywrap() )
2894 return EOF;
2895
2896 if ( ! yy_did_buffer_switch_on_eof )
2897 YY_NEW_FILE;
2898 #ifdef __cplusplus
2899 return yyinput();
2900 #else
2901 return input();
2902 #endif
2903 }
2904
2905 case EOB_ACT_CONTINUE_SCAN:
2906 yy_c_buf_p = yytext_ptr + offset;
2907 break;
2908 }
2909 }
2910 }
2911
2912 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
2913 *yy_c_buf_p = '\0'; /* preserve yytext */
2914 yy_hold_char = *++yy_c_buf_p;
2915
2916
2917 return c;
2918 }
2919 #endif /* YY_NO_INPUT */
2920
2921 #ifdef YY_USE_PROTOS
2922 void yyrestart( FILE *input_file )
2923 #else
2924 void yyrestart( input_file )
2925 FILE *input_file;
2926 #endif
2927 {
2928 if ( ! yy_current_buffer )
2929 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2930
2931 yy_init_buffer( yy_current_buffer, input_file );
2932 yy_load_buffer_state();
2933 }
2934
2935
2936 #ifdef YY_USE_PROTOS
2937 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2938 #else
2939 void yy_switch_to_buffer( new_buffer )
2940 YY_BUFFER_STATE new_buffer;
2941 #endif
2942 {
2943 if ( yy_current_buffer == new_buffer )
2944 return;
2945
2946 if ( yy_current_buffer )
2947 {
2948 /* Flush out information for old buffer. */
2949 *yy_c_buf_p = yy_hold_char;
2950 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2951 yy_current_buffer->yy_n_chars = yy_n_chars;
2952 }
2953
2954 yy_current_buffer = new_buffer;
2955 yy_load_buffer_state();
2956
2957 /* We don't actually know whether we did this switch during
2958 * EOF (yywrap()) processing, but the only time this flag
2959 * is looked at is after yywrap() is called, so it's safe
2960 * to go ahead and always set it.
2961 */
2962 yy_did_buffer_switch_on_eof = 1;
2963 }
2964
2965
2966 #ifdef YY_USE_PROTOS
2967 void yy_load_buffer_state( void )
2968 #else
2969 void yy_load_buffer_state()
2970 #endif
2971 {
2972 yy_n_chars = yy_current_buffer->yy_n_chars;
2973 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2974 yyin = yy_current_buffer->yy_input_file;
2975 yy_hold_char = *yy_c_buf_p;
2976 }
2977
2978
2979 #ifdef YY_USE_PROTOS
2980 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2981 #else
2982 YY_BUFFER_STATE yy_create_buffer( file, size )
2983 FILE *file;
2984 int size;
2985 #endif
2986 {
2987 YY_BUFFER_STATE b;
2988
2989 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2990 if ( ! b )
2991 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2992
2993 b->yy_buf_size = size;
2994
2995 /* yy_ch_buf has to be 2 characters longer than the size given because
2996 * we need to put in 2 end-of-buffer characters.
2997 */
2998 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2999 if ( ! b->yy_ch_buf )
3000 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3001
3002 b->yy_is_our_buffer = 1;
3003
3004 yy_init_buffer( b, file );
3005
3006 return b;
3007 }
3008
3009
3010 #ifdef YY_USE_PROTOS
3011 void yy_delete_buffer( YY_BUFFER_STATE b )
3012 #else
3013 void yy_delete_buffer( b )
3014 YY_BUFFER_STATE b;
3015 #endif
3016 {
3017 if ( ! b )
3018 return;
3019
3020 if ( b == yy_current_buffer )
3021 yy_current_buffer = (YY_BUFFER_STATE) 0;
3022
3023 if ( b->yy_is_our_buffer )
3024 yy_flex_free( (void *) b->yy_ch_buf );
3025
3026 yy_flex_free( (void *) b );
3027 }
3028
3029
3030
3031 #ifdef YY_USE_PROTOS
3032 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3033 #else
3034 void yy_init_buffer( b, file )
3035 YY_BUFFER_STATE b;
3036 FILE *file;
3037 #endif
3038
3039
3040 {
3041 yy_flush_buffer( b );
3042
3043 b->yy_input_file = file;
3044 b->yy_fill_buffer = 1;
3045
3046 #if YY_ALWAYS_INTERACTIVE
3047 b->yy_is_interactive = 1;
3048 #else
3049 #if YY_NEVER_INTERACTIVE
3050 b->yy_is_interactive = 0;
3051 #else
3052 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3053 #endif
3054 #endif
3055 }
3056
3057
3058 #ifdef YY_USE_PROTOS
3059 void yy_flush_buffer( YY_BUFFER_STATE b )
3060 #else
3061 void yy_flush_buffer( b )
3062 YY_BUFFER_STATE b;
3063 #endif
3064
3065 {
3066 if ( ! b )
3067 return;
3068
3069 b->yy_n_chars = 0;
3070
3071 /* We always need two end-of-buffer characters. The first causes
3072 * a transition to the end-of-buffer state. The second causes
3073 * a jam in that state.
3074 */
3075 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3076 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3077
3078 b->yy_buf_pos = &b->yy_ch_buf[0];
3079
3080 b->yy_at_bol = 1;
3081 b->yy_buffer_status = YY_BUFFER_NEW;
3082
3083 if ( b == yy_current_buffer )
3084 yy_load_buffer_state();
3085 }
3086
3087
3088 #ifndef YY_NO_SCAN_BUFFER
3089 #ifdef YY_USE_PROTOS
3090 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3091 #else
3092 YY_BUFFER_STATE yy_scan_buffer( base, size )
3093