1 #define yy_create_buffer gram__create_buffer
2 #define yy_delete_buffer gram__delete_buffer
3 #define yy_scan_buffer gram__scan_buffer
4 #define yy_scan_string gram__scan_string
5 #define yy_scan_bytes gram__scan_bytes
6 #define yy_flex_debug gram__flex_debug
7 #define yy_init_buffer gram__init_buffer
8 #define yy_flush_buffer gram__flush_buffer
9 #define yy_load_buffer_state gram__load_buffer_state
10 #define yy_switch_to_buffer gram__switch_to_buffer
12 #define yyleng gram_leng
13 #define yylex gram_lex
14 #define yyout gram_out
15 #define yyrestart gram_restart
16 #define yytext gram_text
18 #line 19 "scan-gram.c"
19 /* A lexical scanner generated by flex */
21 /* Scanner skeleton version:
26 #define YY_FLEX_MAJOR_VERSION 2
27 #define YY_FLEX_MINOR_VERSION 5
32 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
45 /* Use prototypes in function declarations. */
48 /* The "const" storage-class-modifier is valid. */
51 #else /* ! __cplusplus */
59 #endif /* ! __cplusplus */
78 #define YY_PROTO(proto) proto
80 #define YY_PROTO(proto) ()
83 /* Returned upon end-of-file. */
86 /* Promotes a possibly negative, possibly signed char to an unsigned
87 * integer for use as an array index. If the signed char is negative,
88 * we want to instead treat it as an 8-bit unsigned char, hence the
91 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
93 /* Enter a start condition. This macro really ought to take a parameter,
94 * but we do it the disgusting crufty way forced on us by the ()-less
95 * definition of BEGIN.
97 #define BEGIN yy_start = 1 + 2 *
99 /* Translate the current start state into a value that can be later handed
100 * to BEGIN to return to the state. The YYSTATE alias is for lex
103 #define YY_START ((yy_start - 1) / 2)
104 #define YYSTATE YY_START
106 /* Action number for EOF rule of a given start state. */
107 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
109 /* Special action meaning "start processing a new file". */
110 #define YY_NEW_FILE yyrestart( yyin )
112 #define YY_END_OF_BUFFER_CHAR 0
114 /* Size of default input buffer. */
115 #define YY_BUF_SIZE 16384
117 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
120 extern FILE *yyin
, *yyout
;
122 #define EOB_ACT_CONTINUE_SCAN 0
123 #define EOB_ACT_END_OF_FILE 1
124 #define EOB_ACT_LAST_MATCH 2
126 /* The funky do-while in the following #define is used to turn the definition
127 * int a single C statement (which needs a semi-colon terminator). This
128 * avoids problems with code like:
130 * if ( condition_holds )
133 * do_something_else();
135 * Prior to using the do-while the compiler would get upset at the
136 * "else" because it interpreted the "if" statement as being all
137 * done when it reached the ';' after the yyless() call.
140 /* Return all but the first 'n' matched characters back to the input stream. */
145 /* Undo effects of setting up yytext. */ \
146 *yy_cp = yy_hold_char; \
147 YY_RESTORE_YY_MORE_OFFSET \
148 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
149 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
153 #define unput(c) yyunput( c, yytext_ptr )
155 /* The following is because we cannot portably get our hands on size_t
156 * (without autoconf's help, which isn't available because we want
157 * flex-generated scanners to compile on their own).
159 typedef unsigned int yy_size_t
;
162 struct yy_buffer_state
166 char *yy_ch_buf
; /* input buffer */
167 char *yy_buf_pos
; /* current position in input buffer */
169 /* Size of input buffer in bytes, not including room for EOB
172 yy_size_t yy_buf_size
;
174 /* Number of characters read into yy_ch_buf, not including EOB
179 /* Whether we "own" the buffer - i.e., we know we created it,
180 * and can realloc() it to grow it, and should free() it to
183 int yy_is_our_buffer
;
185 /* Whether this is an "interactive" input source; if so, and
186 * if we're using stdio for input, then we want to use getc()
187 * instead of fread(), to make sure we stop fetching input after
190 int yy_is_interactive
;
192 /* Whether we're considered to be at the beginning of a line.
193 * If so, '^' rules will be active on the next match, otherwise
198 /* Whether to try to fill the input buffer when we reach the
203 int yy_buffer_status
;
204 #define YY_BUFFER_NEW 0
205 #define YY_BUFFER_NORMAL 1
206 /* When an EOF's been seen but there's still some text to process
207 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
208 * shouldn't try reading from the input source any more. We might
209 * still have a bunch of tokens to match, though, because of
210 * possible backing-up.
212 * When we actually see the EOF, we change the status to "new"
213 * (via yyrestart()), so that the user can continue scanning by
214 * just pointing yyin at a new input file.
216 #define YY_BUFFER_EOF_PENDING 2
219 static YY_BUFFER_STATE yy_current_buffer
= 0;
221 /* We provide macros for accessing buffer states in case in the
222 * future we want to put the buffer states in a more general
225 #define YY_CURRENT_BUFFER yy_current_buffer
228 /* yy_hold_char holds the character lost when yytext is formed. */
229 static char yy_hold_char
;
231 static int yy_n_chars
; /* number of characters read into yy_ch_buf */
236 /* Points to current character in buffer. */
237 static char *yy_c_buf_p
= (char *) 0;
238 static int yy_init
= 1; /* whether we need to initialize */
239 static int yy_start
= 0; /* start state number */
241 /* Flag which is used to allow yywrap()'s to do buffer switches
242 * instead of setting up a fresh yyin. A bit of a hack ...
244 static int yy_did_buffer_switch_on_eof
;
246 void yyrestart
YY_PROTO(( FILE *input_file
));
248 void yy_switch_to_buffer
YY_PROTO(( YY_BUFFER_STATE new_buffer
));
249 void yy_load_buffer_state
YY_PROTO(( void ));
250 YY_BUFFER_STATE yy_create_buffer
YY_PROTO(( FILE *file
, int size
));
251 void yy_delete_buffer
YY_PROTO(( YY_BUFFER_STATE b
));
252 void yy_init_buffer
YY_PROTO(( YY_BUFFER_STATE b
, FILE *file
));
253 void yy_flush_buffer
YY_PROTO(( YY_BUFFER_STATE b
));
254 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
256 YY_BUFFER_STATE yy_scan_buffer
YY_PROTO(( char *base
, yy_size_t size
));
257 YY_BUFFER_STATE yy_scan_string
YY_PROTO(( yyconst
char *yy_str
));
258 YY_BUFFER_STATE yy_scan_bytes
YY_PROTO(( yyconst
char *bytes
, int len
));
260 static void *yy_flex_alloc
YY_PROTO(( yy_size_t
));
261 static void *yy_flex_realloc
YY_PROTO(( void *, yy_size_t
));
262 static void yy_flex_free
YY_PROTO(( void * ));
264 #define yy_new_buffer yy_create_buffer
266 #define yy_set_interactive(is_interactive) \
268 if ( ! yy_current_buffer ) \
269 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
270 yy_current_buffer->yy_is_interactive = is_interactive; \
273 #define yy_set_bol(at_bol) \
275 if ( ! yy_current_buffer ) \
276 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
277 yy_current_buffer->yy_at_bol = at_bol; \
280 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
284 #define YY_SKIP_YYWRAP
287 typedef unsigned char YY_CHAR
;
288 FILE *yyin
= (FILE *) 0, *yyout
= (FILE *) 0;
289 typedef int yy_state_type
;
293 #define yytext_ptr yytext
295 static yy_state_type yy_get_previous_state
YY_PROTO(( void ));
296 static yy_state_type yy_try_NUL_trans
YY_PROTO(( yy_state_type current_state
));
297 static int yy_get_next_buffer
YY_PROTO(( void ));
298 static void yy_fatal_error
YY_PROTO(( yyconst
char msg
[] ));
300 /* Done after the current pattern has been matched and before the
301 * corresponding action - sets up yytext.
303 #define YY_DO_BEFORE_ACTION \
304 yytext_ptr = yy_bp; \
305 yyleng = (int) (yy_cp - yy_bp); \
306 yy_hold_char = *yy_cp; \
310 #define YY_NUM_RULES 92
311 #define YY_END_OF_BUFFER 93
312 static yyconst
short int yy_accept
[355] =
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0, 93, 44,
316 33, 32, 32, 37, 44, 36, 34, 44, 35, 29,
317 31, 44, 28, 41, 30, 48, 49, 49, 50, 45,
318 46, 73, 75, 75, 72, 45, 92, 46, 69, 71,
319 71, 68, 92, 52, 53, 53, 51, 92, 55, 56,
320 56, 54, 84, 85, 85, 77, 86, 76, 86, 86,
321 45, 46, 81, 80, 88, 90, 90, 77, 92, 76,
322 88, 91, 91, 91, 77, 76, 91, 33, 32, 32,
323 32, 32, 43, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 40, 34, 38,
326 39, 35, 0, 48, 49, 49, 49, 49, 47, 73,
327 75, 75, 75, 75, 74, 71, 71, 71, 71, 70,
328 52, 53, 53, 53, 53, 67, 66, 67, 59, 60,
329 61, 62, 63, 64, 65, 67, 56, 56, 56, 56,
330 84, 85, 85, 85, 85, 82, 0, 82, 0, 78,
331 79, 83, 0, 83, 88, 90, 90, 90, 90, 89,
332 0, 87, 78, 79, 91, 91, 91, 91, 91, 78,
333 79, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 39, 42, 0, 0, 0, 0, 79,
337 79, 79, 79, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0, 57, 58,
340 82, 0, 82, 0, 0, 0, 0, 0, 0, 0,
341 9, 0, 0, 0, 0, 0, 0, 16, 0, 0,
342 0, 0, 21, 0, 24, 0, 0, 27, 0, 2,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
344 0, 0, 18, 0, 20, 22, 25, 0, 1, 3,
345 0, 6, 0, 0, 0, 0, 0, 0, 15, 0,
347 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 26, 0, 0, 0, 0, 0,
349 12, 13, 0, 19, 0, 0, 0, 0, 10, 0,
350 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
351 0, 11, 17, 23, 0, 0, 5, 0, 0, 0,
355 static yyconst
int yy_ec
[256] =
357 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
358 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
359 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
360 1, 2, 1, 5, 1, 6, 7, 1, 8, 1,
361 1, 9, 1, 1, 10, 11, 12, 13, 13, 13,
362 13, 13, 13, 13, 13, 14, 14, 15, 16, 17,
363 18, 19, 1, 20, 21, 21, 21, 21, 21, 21,
364 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
365 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
366 22, 23, 24, 1, 25, 1, 26, 27, 28, 29,
368 30, 31, 32, 33, 34, 11, 35, 36, 37, 38,
369 39, 40, 11, 41, 42, 43, 44, 45, 11, 46,
370 47, 11, 48, 49, 50, 1, 1, 1, 1, 1,
371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
387 static yyconst
int yy_meta
[51] =
389 1, 1, 2, 3, 4, 5, 6, 5, 7, 1,
390 8, 5, 9, 9, 1, 1, 1, 1, 10, 5,
391 9, 11, 12, 11, 8, 9, 9, 9, 9, 9,
392 9, 8, 8, 8, 8, 8, 8, 8, 8, 8,
393 8, 8, 8, 8, 8, 8, 8, 5, 1, 5
396 static yyconst
short int yy_base
[382] =
398 0, 0, 48, 51, 58, 61, 83, 86, 73, 94,
399 108, 110, 131, 179, 227, 249, 116, 142, 798, 799,
400 795, 55, 64, 799, 267, 799, 0, 44, 79, 799,
401 799, 0, 799, 799, 799, 0, 97, 99, 784, 799,
402 799, 0, 119, 122, 799, 799, 0, 799, 799, 126,
403 138, 799, 0, 0, 145, 153, 799, 311, 799, 155,
404 157, 799, 0, 159, 164, 799, 159, 799, 62, 164,
405 799, 799, 799, 799, 0, 185, 189, 0, 125, 0,
406 185, 192, 201, 203, 205, 207, 209, 793, 211, 213,
407 216, 219, 799, 760, 763, 187, 758, 49, 198, 747,
409 199, 756, 109, 208, 751, 758, 761, 799, 0, 799,
410 0, 212, 767, 0, 241, 255, 259, 261, 799, 0,
411 263, 265, 272, 274, 799, 276, 278, 280, 282, 799,
412 0, 284, 286, 288, 296, 799, 799, 772, 799, 799,
413 799, 799, 799, 799, 799, 0, 298, 314, 316, 318,
414 0, 322, 324, 326, 328, 799, 322, 326, 765, 799,
415 0, 799, 330, 332, 0, 344, 347, 355, 357, 243,
416 263, 799, 0, 358, 360, 363, 365, 367, 369, 371,
417 373, 745, 159, 741, 741, 200, 749, 751, 741, 368,
418 747, 733, 745, 733, 741, 742, 745, 729, 734, 728,
420 733, 725, 737, 0, 799, 751, 0, 744, 373, 0,
421 377, 385, 399, 736, 717, 726, 720, 728, 727, 726,
422 712, 728, 723, 716, 725, 709, 709, 720, 717, 713,
423 709, 703, 706, 712, 711, 701, 712, 710, 799, 799,
424 718, 377, 391, 695, 703, 696, 692, 704, 721, 701,
425 799, 686, 375, 694, 685, 689, 681, 799, 388, 681,
426 693, 679, 799, 683, 799, 682, 680, 799, 671, 799,
427 665, 401, 640, 631, 402, 625, 616, 598, 593, 799,
428 589, 587, 799, 581, 799, 404, 799, 581, 799, 578,
429 569, 799, 572, 573, 572, 558, 560, 550, 799, 562,
431 537, 521, 526, 799, 525, 524, 507, 509, 513, 500,
432 510, 387, 387, 398, 799, 381, 389, 376, 376, 386,
433 799, 799, 374, 799, 381, 367, 321, 313, 799, 307,
434 303, 287, 265, 249, 228, 214, 207, 212, 160, 799,
435 157, 799, 799, 799, 168, 405, 799, 149, 137, 91,
436 85, 62, 799, 799, 430, 442, 454, 466, 478, 490,
437 502, 514, 519, 528, 540, 552, 562, 574, 586, 597,
438 609, 621, 633, 645, 657, 86, 669, 681, 693, 705,
442 static yyconst
short int yy_def
[382] =
444 354, 1, 355, 355, 356, 356, 357, 357, 358, 358,
445 359, 359, 360, 360, 361, 361, 362, 362, 354, 354,
446 354, 354, 354, 354, 354, 354, 363, 354, 354, 354,
447 354, 364, 354, 354, 354, 365, 354, 354, 354, 354,
448 354, 366, 354, 354, 354, 354, 367, 354, 354, 354,
449 354, 354, 368, 369, 354, 354, 354, 370, 354, 354,
450 354, 354, 371, 354, 354, 354, 354, 354, 354, 354,
451 354, 354, 354, 354, 372, 354, 354, 372, 373, 372,
452 372, 374, 374, 374, 374, 374, 374, 354, 354, 354,
453 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
455 354, 354, 354, 354, 354, 354, 354, 354, 363, 354,
456 375, 354, 364, 365, 354, 354, 354, 354, 354, 366,
457 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
458 369, 354, 354, 354, 354, 354, 354, 354, 354, 354,
459 354, 354, 354, 354, 354, 376, 354, 354, 354, 354,
460 371, 354, 354, 354, 354, 354, 354, 354, 377, 354,
461 378, 354, 354, 354, 372, 354, 354, 354, 354, 373,
462 373, 354, 372, 379, 374, 374, 374, 374, 374, 374,
463 380, 354, 354, 354, 354, 354, 354, 354, 354, 354,
464 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
466 354, 354, 354, 375, 354, 354, 381, 377, 377, 378,
467 379, 380, 380, 354, 354, 354, 354, 354, 354, 354,
468 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
469 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
470 377, 377, 377, 354, 354, 354, 354, 354, 354, 354,
471 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
472 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
473 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
474 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
475 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
477 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
478 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
479 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
480 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
481 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
482 354, 354, 354, 0, 354, 354, 354, 354, 354, 354,
483 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
484 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
488 static yyconst
short int yy_nxt
[850] =
490 20, 21, 22, 23, 24, 20, 25, 26, 20, 20,
491 27, 28, 29, 29, 30, 31, 32, 33, 20, 20,
492 27, 20, 20, 20, 20, 27, 27, 27, 27, 27,
493 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
494 27, 27, 27, 27, 27, 27, 27, 34, 35, 20,
495 37, 38, 110, 37, 38, 111, 39, 89, 90, 39,
496 43, 44, 45, 43, 44, 45, 91, 92, 240, 40,
497 160, 41, 40, 161, 41, 55, 56, 57, 187, 46,
498 47, 48, 46, 47, 48, 50, 51, 188, 50, 51,
499 52, 112, 112, 52, 207, 58, 55, 56, 57, 115,
501 116, 117, 118, 353, 46, 53, 48, 46, 53, 48,
502 60, 61, 60, 61, 352, 62, 58, 62, 83, 84,
503 85, 121, 122, 86, 123, 124, 351, 87, 126, 127,
504 58, 171, 58, 64, 65, 66, 67, 46, 68, 48,
505 128, 129, 69, 196, 83, 84, 85, 132, 133, 86,
506 70, 197, 71, 87, 72, 134, 135, 147, 148, 149,
507 150, 152, 153, 46, 156, 48, 154, 155, 157, 162,
508 350, 158, 158, 163, 172, 159, 164, 164, 73, 349,
509 74, 64, 65, 66, 67, 215, 68, 166, 167, 216,
510 69, 168, 169, 173, 176, 177, 174, 347, 70, 346,
512 71, 345, 72, 176, 178, 179, 177, 176, 177, 176,
513 177, 176, 177, 89, 90, 91, 92, 180, 89, 90,
514 181, 91, 92, 189, 112, 112, 73, 184, 74, 76,
515 77, 78, 185, 79, 80, 219, 190, 198, 81, 193,
516 191, 344, 194, 115, 116, 220, 199, 343, 46, 354,
517 48, 76, 77, 78, 200, 79, 80, 117, 118, 342,
518 81, 115, 116, 117, 118, 121, 122, 123, 124, 171,
519 46, 341, 48, 93, 121, 122, 123, 124, 126, 127,
520 128, 129, 126, 127, 128, 129, 132, 133, 134, 135,
521 132, 133, 354, 94, 340, 95, 96, 97, 134, 135,
523 147, 148, 98, 339, 99, 100, 101, 102, 103, 104,
524 105, 106, 354, 107, 108, 137, 149, 150, 147, 148,
525 149, 150, 338, 138, 152, 153, 154, 155, 152, 153,
526 154, 155, 337, 137, 158, 158, 139, 140, 158, 158,
527 336, 141, 164, 164, 164, 164, 166, 167, 142, 168,
528 169, 143, 335, 144, 334, 145, 146, 166, 167, 168,
529 169, 210, 176, 177, 210, 176, 178, 179, 177, 179,
530 177, 176, 178, 176, 177, 176, 213, 224, 241, 210,
531 210, 210, 242, 210, 277, 243, 243, 176, 213, 243,
532 243, 209, 224, 333, 210, 209, 210, 282, 210, 277,
534 210, 179, 213, 243, 243, 225, 210, 332, 210, 209,
535 291, 294, 282, 302, 348, 331, 330, 329, 328, 327,
536 210, 326, 210, 325, 324, 291, 294, 323, 302, 348,
537 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
538 36, 36, 42, 42, 42, 42, 42, 42, 42, 42,
539 42, 42, 42, 42, 49, 49, 49, 49, 49, 49,
540 49, 49, 49, 49, 49, 49, 54, 54, 54, 54,
541 54, 54, 54, 54, 54, 54, 54, 54, 59, 59,
542 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
543 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
545 63, 63, 75, 75, 75, 75, 75, 75, 75, 75,
546 75, 75, 75, 75, 82, 82, 82, 82, 82, 82,
547 82, 82, 82, 82, 82, 82, 109, 109, 113, 113,
548 113, 113, 113, 113, 113, 113, 113, 322, 113, 113,
549 114, 321, 320, 114, 114, 114, 319, 114, 114, 114,
550 318, 114, 120, 317, 316, 315, 120, 120, 120, 120,
551 120, 120, 125, 314, 125, 125, 125, 125, 125, 125,
552 125, 125, 125, 125, 130, 313, 130, 130, 130, 130,
553 130, 130, 130, 130, 130, 130, 131, 312, 311, 310,
554 131, 131, 131, 131, 131, 131, 131, 136, 309, 136,
556 136, 136, 136, 136, 136, 136, 136, 136, 136, 151,
557 308, 307, 306, 305, 151, 151, 151, 151, 151, 304,
558 151, 165, 303, 301, 165, 165, 300, 165, 165, 165,
559 165, 299, 165, 170, 298, 297, 170, 170, 170, 170,
560 170, 170, 170, 170, 170, 175, 175, 175, 175, 175,
561 175, 175, 175, 175, 175, 296, 175, 204, 295, 204,
562 204, 204, 204, 204, 204, 204, 204, 204, 204, 208,
563 293, 208, 208, 208, 208, 208, 208, 208, 208, 208,
564 208, 210, 292, 210, 210, 210, 210, 210, 210, 210,
565 210, 210, 210, 211, 290, 211, 211, 211, 211, 211,
567 211, 211, 211, 211, 211, 212, 212, 212, 212, 212,
568 212, 212, 212, 212, 212, 212, 212, 289, 288, 287,
569 286, 285, 284, 283, 281, 280, 279, 278, 276, 275,
570 274, 273, 272, 271, 270, 269, 209, 268, 267, 266,
571 265, 264, 263, 262, 261, 260, 259, 258, 257, 256,
572 255, 254, 253, 252, 251, 250, 249, 248, 247, 246,
573 245, 244, 209, 239, 238, 237, 236, 235, 234, 233,
574 232, 231, 230, 229, 228, 227, 226, 223, 222, 221,
575 218, 217, 214, 209, 206, 205, 203, 202, 201, 195,
576 192, 186, 183, 182, 88, 119, 88, 354, 19, 354,
578 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
579 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
580 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
581 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
582 354, 354, 354, 354, 354, 354, 354, 354, 354
585 static yyconst
short int yy_chk
[850] =
587 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
588 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
589 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
590 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
591 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
592 3, 3, 28, 4, 4, 28, 3, 22, 22, 4,
593 5, 5, 5, 6, 6, 6, 23, 23, 381, 3,
594 69, 3, 4, 69, 4, 9, 9, 9, 98, 5,
595 5, 5, 6, 6, 6, 7, 7, 98, 8, 8,
596 7, 29, 29, 8, 376, 9, 10, 10, 10, 37,
598 37, 38, 38, 352, 7, 7, 7, 8, 8, 8,
599 11, 11, 12, 12, 351, 11, 10, 12, 17, 17,
600 17, 43, 43, 17, 44, 44, 350, 17, 50, 50,
601 11, 79, 12, 13, 13, 13, 13, 17, 13, 17,
602 51, 51, 13, 103, 18, 18, 18, 55, 55, 18,
603 13, 103, 13, 18, 13, 56, 56, 60, 60, 61,
604 61, 64, 64, 18, 67, 18, 65, 65, 67, 70,
605 349, 67, 67, 70, 79, 67, 70, 70, 13, 348,
606 13, 14, 14, 14, 14, 183, 14, 76, 76, 183,
607 14, 77, 77, 81, 82, 82, 81, 345, 14, 341,
609 14, 339, 14, 83, 83, 84, 84, 85, 85, 86,
610 86, 87, 87, 89, 89, 90, 90, 87, 91, 91,
611 87, 92, 92, 99, 112, 112, 14, 96, 14, 15,
612 15, 15, 96, 15, 15, 186, 99, 104, 15, 101,
613 99, 338, 101, 115, 115, 186, 104, 337, 15, 170,
614 15, 16, 16, 16, 104, 16, 16, 116, 116, 336,
615 16, 117, 117, 118, 118, 121, 121, 122, 122, 171,
616 16, 335, 16, 25, 123, 123, 124, 124, 126, 126,
617 127, 127, 128, 128, 129, 129, 132, 132, 133, 133,
618 134, 134, 170, 25, 334, 25, 25, 25, 135, 135,
620 147, 147, 25, 333, 25, 25, 25, 25, 25, 25,
621 25, 25, 171, 25, 25, 58, 148, 148, 149, 149,
622 150, 150, 332, 58, 152, 152, 153, 153, 154, 154,
623 155, 155, 331, 58, 157, 157, 58, 58, 158, 158,
624 330, 58, 163, 163, 164, 164, 166, 166, 58, 167,
625 167, 58, 328, 58, 327, 58, 58, 168, 168, 169,
626 169, 174, 175, 175, 174, 176, 176, 177, 177, 178,
627 178, 179, 179, 180, 180, 181, 181, 190, 209, 174,
628 211, 174, 209, 211, 253, 209, 209, 212, 212, 242,
629 242, 209, 190, 326, 181, 242, 181, 259, 211, 253,
631 211, 213, 213, 243, 243, 190, 212, 325, 212, 243,
632 272, 275, 259, 286, 346, 323, 320, 319, 318, 317,
633 213, 316, 213, 314, 313, 272, 275, 312, 286, 346,
634 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
635 355, 355, 356, 356, 356, 356, 356, 356, 356, 356,
636 356, 356, 356, 356, 357, 357, 357, 357, 357, 357,
637 357, 357, 357, 357, 357, 357, 358, 358, 358, 358,
638 358, 358, 358, 358, 358, 358, 358, 358, 359, 359,
639 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
640 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
642 360, 360, 361, 361, 361, 361, 361, 361, 361, 361,
643 361, 361, 361, 361, 362, 362, 362, 362, 362, 362,
644 362, 362, 362, 362, 362, 362, 363, 363, 364, 364,
645 364, 364, 364, 364, 364, 364, 364, 311, 364, 364,
646 365, 310, 309, 365, 365, 365, 308, 365, 365, 365,
647 307, 365, 366, 306, 305, 303, 366, 366, 366, 366,
648 366, 366, 367, 302, 367, 367, 367, 367, 367, 367,
649 367, 367, 367, 367, 368, 301, 368, 368, 368, 368,
650 368, 368, 368, 368, 368, 368, 369, 300, 298, 297,
651 369, 369, 369, 369, 369, 369, 369, 370, 296, 370,
653 370, 370, 370, 370, 370, 370, 370, 370, 370, 371,
654 295, 294, 293, 291, 371, 371, 371, 371, 371, 290,
655 371, 372, 288, 284, 372, 372, 282, 372, 372, 372,
656 372, 281, 372, 373, 279, 278, 373, 373, 373, 373,
657 373, 373, 373, 373, 373, 374, 374, 374, 374, 374,
658 374, 374, 374, 374, 374, 277, 374, 375, 276, 375,
659 375, 375, 375, 375, 375, 375, 375, 375, 375, 377,
660 274, 377, 377, 377, 377, 377, 377, 377, 377, 377,
661 377, 378, 273, 378, 378, 378, 378, 378, 378, 378,
662 378, 378, 378, 379, 271, 379, 379, 379, 379, 379,
664 379, 379, 379, 379, 379, 380, 380, 380, 380, 380,
665 380, 380, 380, 380, 380, 380, 380, 269, 267, 266,
666 264, 262, 261, 260, 257, 256, 255, 254, 252, 250,
667 249, 248, 247, 246, 245, 244, 241, 238, 237, 236,
668 235, 234, 233, 232, 231, 230, 229, 228, 227, 226,
669 225, 224, 223, 222, 221, 220, 219, 218, 217, 216,
670 215, 214, 208, 206, 203, 202, 201, 200, 199, 198,
671 197, 196, 195, 194, 193, 192, 191, 189, 188, 187,
672 185, 184, 182, 159, 138, 113, 107, 106, 105, 102,
673 100, 97, 95, 94, 88, 39, 21, 19, 354, 354,
675 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
676 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
677 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
678 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
679 354, 354, 354, 354, 354, 354, 354, 354, 354
682 static yy_state_type yy_last_accepting_state
;
683 static char *yy_last_accepting_cpos
;
685 extern int yy_flex_debug
;
686 int yy_flex_debug
= 1;
688 static yyconst
short int yy_rule_linenum
[92] =
690 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
691 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
692 108, 109, 110, 111, 112, 113, 114, 116, 117, 118,
693 119, 121, 122, 123, 129, 132, 135, 138, 139, 142,
694 145, 148, 150, 156, 172, 173, 184, 196, 197, 198,
695 215, 223, 225, 244, 259, 261, 280, 292, 296, 297,
696 298, 299, 300, 301, 302, 303, 304, 319, 325, 326,
697 328, 346, 352, 353, 355, 373, 376, 379, 380, 391,
698 401, 403, 404, 406, 407, 410, 429, 435, 436, 437,
703 /* The intent behind this definition is that it'll catch
704 * any uses of REJECT which flex missed.
706 #define REJECT reject_used_but_not_detected
707 #define yymore() yymore_used_but_not_detected
708 #define YY_MORE_ADJ 0
709 #define YY_RESTORE_YY_MORE_OFFSET
711 #line 1 "scan-gram.l"
713 /* Bison Grammar Scanner -*- C -*-
714 Copyright (C) 2002 Free Software Foundation, Inc.
716 This file is part of Bison, the GNU Compiler Compiler.
718 This program is free software; you can redistribute it and/or modify
719 it under the terms of the GNU General Public License as published by
720 the Free Software Foundation; either version 2 of the License, or
721 (at your option) any later version.
723 This program is distributed in the hope that it will be useful,
724 but WITHOUT ANY WARRANTY; without even the implied warranty of
725 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
726 GNU General Public License for more details.
728 You should have received a copy of the GNU General Public License
729 along with this program; if not, write to the Free Software
730 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
733 #define YY_NO_UNPUT 1
734 #define YY_NEVER_INTERACTIVE 1
735 #define YY_STACK_USED 1
736 #line 26 "scan-gram.l"
738 #include "complain.h"
744 /* Each time we match a string, move the end cursor to its end. */
745 #define YY_USER_ACTION LOCATION_COLUMNS (*yylloc, yyleng)
746 #define YY_LINES LOCATION_LINES (*yylloc, yyleng); lineno += yyleng;
747 #define YY_STEP LOCATION_STEP (*yylloc)
749 /* Appending to the STRING_OBSTACK. */
750 #define YY_INIT obstack_init (&string_obstack)
751 #define YY_GROW obstack_grow (&string_obstack, yytext, yyleng)
752 #define YY_FINISH obstack_1grow (&string_obstack, '\0'); yylval->string = obstack_finish (&string_obstack);
754 /* This is only to avoid GCC warnings. */
755 #define YY_USER_INIT if (yycontrol) {;};
757 static struct obstack string_obstack
;
758 static int braces_level
= 0;
759 static int percent_percent_count
= 0;
761 static void handle_dollar
PARAMS ((char *cp
));
762 static void handle_at
PARAMS ((char *cp
));
767 #define SC_CHARACTER 3
769 #define SC_ESCAPED_STRING 4
770 #define SC_ESCAPED_CHARACTER 5
772 #define SC_BRACED_CODE 6
773 #define SC_PROLOGUE 7
774 #define SC_EPILOGUE 8
776 #line 777 "scan-gram.c"
778 /* Macros after this point can all be overridden by user definitions in
782 #ifndef YY_SKIP_YYWRAP
784 extern "C" int yywrap
YY_PROTO(( void ));
786 extern int yywrap
YY_PROTO(( void ));
791 static void yyunput
YY_PROTO(( int c
, char *buf_ptr
));
795 static void yy_flex_strncpy
YY_PROTO(( char *, yyconst
char *, int ));
798 #ifdef YY_NEED_STRLEN
799 static int yy_flex_strlen
YY_PROTO(( yyconst
char * ));
804 static int yyinput
YY_PROTO(( void ));
806 static int input
YY_PROTO(( void ));
811 static int yy_start_stack_ptr
= 0;
812 static int yy_start_stack_depth
= 0;
813 static int *yy_start_stack
= 0;
814 #ifndef YY_NO_PUSH_STATE
815 static void yy_push_state
YY_PROTO(( int new_state
));
817 #ifndef YY_NO_POP_STATE
818 static void yy_pop_state
YY_PROTO(( void ));
820 #ifndef YY_NO_TOP_STATE
821 static int yy_top_state
YY_PROTO(( void ));
825 #define YY_NO_PUSH_STATE 1
826 #define YY_NO_POP_STATE 1
827 #define YY_NO_TOP_STATE 1
830 #ifdef YY_MALLOC_DECL
838 /* Just try to get by without declaring the routines. This will fail
839 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
840 * or sizeof(void*) != sizeof(int).
845 /* Amount of stuff to slurp up with each read. */
846 #ifndef YY_READ_BUF_SIZE
847 #define YY_READ_BUF_SIZE 8192
850 /* Copy whatever the last rule matched to the standard output. */
853 /* This used to be an fputs(), but since the string might contain NUL's,
854 * we now use fwrite().
856 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
859 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
860 * is returned in "result".
863 #define YY_INPUT(buf,result,max_size) \
864 if ( yy_current_buffer->yy_is_interactive ) \
867 for ( n = 0; n < max_size && \
868 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
871 buf[n++] = (char) c; \
872 if ( c == EOF && ferror( yyin ) ) \
873 YY_FATAL_ERROR( "input in flex scanner failed" ); \
876 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
877 && ferror( yyin ) ) \
878 YY_FATAL_ERROR( "input in flex scanner failed" );
881 /* No semi-colon after return; correct usage is to write "yyterminate();" -
882 * we don't want an extra ';' after the "return" because that will cause
883 * some compilers to complain about unreachable statements.
886 #define yyterminate() return YY_NULL
889 /* Number of entries by which start-condition stack grows. */
890 #ifndef YY_START_STACK_INCR
891 #define YY_START_STACK_INCR 25
894 /* Report a fatal error. */
895 #ifndef YY_FATAL_ERROR
896 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
899 /* Default declaration of generated scanner - a define so the user can
900 * easily add parameters.
903 #define YY_DECL int yylex YY_PROTO(( void ))
906 /* Code executed at the beginning of each rule, after yytext and yyleng
909 #ifndef YY_USER_ACTION
910 #define YY_USER_ACTION
913 /* Code executed at the end of each rule. */
915 #define YY_BREAK break;
918 #define YY_RULE_SETUP \
923 register yy_state_type yy_current_state
;
924 register char *yy_cp
, *yy_bp
;
927 #line 64 "scan-gram.l"
930 /* At each yylex invocation, mark the current position as the
931 start of the next token. */
934 fprintf (stderr
, "FOO1: ");
935 LOCATION_PRINT (stderr
, *yylloc
);
936 fprintf (stderr
, "\n");
940 fprintf (stderr
, "BAR1: ");
941 LOCATION_PRINT (stderr
, *yylloc
);
942 fprintf (stderr
, "\n");
947 /*----------------------------.
948 | Scanning Bison directives. |
949 `----------------------------*/
950 #line 951 "scan-gram.c"
961 yy_start
= 1; /* first start state */
969 if ( ! yy_current_buffer
)
971 yy_create_buffer( yyin
, YY_BUF_SIZE
);
973 yy_load_buffer_state();
976 while ( 1 ) /* loops until end-of-file is reached */
980 /* Support of yytext. */
981 *yy_cp
= yy_hold_char
;
983 /* yy_bp points to the position in yy_ch_buf of the start of
988 yy_current_state
= yy_start
;
992 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
993 if ( yy_accept
[yy_current_state
] )
995 yy_last_accepting_state
= yy_current_state
;
996 yy_last_accepting_cpos
= yy_cp
;
998 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1000 yy_current_state
= (int) yy_def
[yy_current_state
];
1001 if ( yy_current_state
>= 355 )
1002 yy_c
= yy_meta
[(unsigned int) yy_c
];
1004 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1007 while ( yy_base
[yy_current_state
] != 799 );
1010 yy_act
= yy_accept
[yy_current_state
];
1012 { /* have to back up */
1013 yy_cp
= yy_last_accepting_cpos
;
1014 yy_current_state
= yy_last_accepting_state
;
1015 yy_act
= yy_accept
[yy_current_state
];
1018 YY_DO_BEFORE_ACTION
;
1021 do_action
: /* This label is used only to access EOF actions. */
1023 if ( yy_flex_debug
)
1026 fprintf( stderr
, "--scanner backing up\n" );
1027 else if ( yy_act
< 92 )
1028 fprintf( stderr
, "--accepting rule at line %d (\"%s\")\n",
1029 yy_rule_linenum
[yy_act
], yytext
);
1030 else if ( yy_act
== 92 )
1031 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1033 else if ( yy_act
== 93 )
1034 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1036 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1040 { /* beginning of action switch */
1041 case 0: /* must back up */
1042 /* undo the effects of YY_DO_BEFORE_ACTION */
1043 *yy_cp
= yy_hold_char
;
1044 yy_cp
= yy_last_accepting_cpos
;
1045 yy_current_state
= yy_last_accepting_state
;
1046 goto yy_find_action
;
1052 #line 88 "scan-gram.l"
1053 return PERCENT_NONASSOC
;
1057 #line 89 "scan-gram.l"
1058 return PERCENT_DEBUG
;
1062 #line 90 "scan-gram.l"
1063 return PERCENT_DEFINE
;
1067 #line 91 "scan-gram.l"
1068 return PERCENT_DEFINES
;
1072 #line 92 "scan-gram.l"
1073 return PERCENT_ERROR_VERBOSE
;
1077 #line 93 "scan-gram.l"
1078 return PERCENT_EXPECT
;
1082 #line 94 "scan-gram.l"
1083 return PERCENT_FILE_PREFIX
;
1087 #line 95 "scan-gram.l"
1088 return PERCENT_YACC
;
1092 #line 96 "scan-gram.l"
1093 return PERCENT_LEFT
;
1097 #line 97 "scan-gram.l"
1098 return PERCENT_LOCATIONS
;
1102 #line 98 "scan-gram.l"
1103 return PERCENT_NAME_PREFIX
;
1107 #line 99 "scan-gram.l"
1108 return PERCENT_NO_LINES
;
1112 #line 100 "scan-gram.l"
1113 return PERCENT_NONASSOC
;
1117 #line 101 "scan-gram.l"
1118 return PERCENT_NTERM
;
1122 #line 102 "scan-gram.l"
1123 return PERCENT_OUTPUT
;
1127 #line 103 "scan-gram.l"
1128 return PERCENT_PREC
;
1132 #line 104 "scan-gram.l"
1133 return PERCENT_PURE_PARSER
;
1137 #line 105 "scan-gram.l"
1138 return PERCENT_RIGHT
;
1142 #line 106 "scan-gram.l"
1143 return PERCENT_SKELETON
;
1147 #line 107 "scan-gram.l"
1148 return PERCENT_START
;
1152 #line 108 "scan-gram.l"
1153 return PERCENT_TOKEN
;
1157 #line 109 "scan-gram.l"
1158 return PERCENT_TOKEN
;
1162 #line 110 "scan-gram.l"
1163 return PERCENT_TOKEN_TABLE
;
1167 #line 111 "scan-gram.l"
1168 return PERCENT_TYPE
;
1172 #line 112 "scan-gram.l"
1173 return PERCENT_UNION
;
1177 #line 113 "scan-gram.l"
1178 return PERCENT_VERBOSE
;
1182 #line 114 "scan-gram.l"
1183 return PERCENT_YACC
;
1187 #line 116 "scan-gram.l"
1192 #line 117 "scan-gram.l"
1197 #line 118 "scan-gram.l"
1202 #line 119 "scan-gram.l"
1207 #line 121 "scan-gram.l"
1212 #line 122 "scan-gram.l"
1217 #line 123 "scan-gram.l"
1219 YY_INIT
; YY_GROW
; YY_FINISH
;
1220 yylval
->symbol
= getsym (yylval
->string
);
1226 #line 129 "scan-gram.l"
1227 yylval
->integer
= strtol (yytext
, 0, 10); return INT
;
1229 /* Characters. We don't check there is only one. */
1232 #line 132 "scan-gram.l"
1233 YY_INIT
; YY_GROW
; yy_push_state (SC_ESCAPED_CHARACTER
);
1238 #line 135 "scan-gram.l"
1239 YY_INIT
; YY_GROW
; yy_push_state (SC_ESCAPED_STRING
);
1244 #line 138 "scan-gram.l"
1245 yy_push_state (SC_COMMENT
);
1249 #line 139 "scan-gram.l"
1255 #line 142 "scan-gram.l"
1256 YY_INIT
; yy_push_state (SC_PROLOGUE
);
1258 /* Code in between braces. */
1261 #line 145 "scan-gram.l"
1262 YY_INIT
; YY_GROW
; ++braces_level
; yy_push_state (SC_BRACED_CODE
);
1267 #line 148 "scan-gram.l"
1268 YY_INIT
; obstack_grow (&string_obstack
, yytext
+ 1, yyleng
- 2); YY_FINISH
; return TYPE
;
1272 #line 150 "scan-gram.l"
1274 if (++percent_percent_count
== 2)
1275 yy_push_state (SC_EPILOGUE
);
1276 return PERCENT_PERCENT
;
1281 #line 156 "scan-gram.l"
1283 LOCATION_PRINT (stderr
, *yylloc
);
1284 fprintf (stderr
, ": invalid character: `%c'\n", *yytext
);
1289 /*------------------------------------------------------------.
1290 | Whatever the start condition (but those which correspond to |
1291 | entity `swallowed' by Bison: SC_ESCAPED_STRING and |
1292 | SC_ESCAPED_CHARACTER), no M4 character must escape as is. |
1293 `------------------------------------------------------------*/
1298 #line 172 "scan-gram.l"
1299 obstack_sgrow (&string_obstack
, "@<:@");
1303 #line 173 "scan-gram.l"
1304 obstack_sgrow (&string_obstack
, "@:>@");
1307 /*-----------------------------------------------------------.
1308 | Scanning a C comment. The initial `/ *' is already eaten. |
1309 `-----------------------------------------------------------*/
1314 #line 184 "scan-gram.l"
1315 { /* End of the comment. */
1316 if (yy_top_state () == INITIAL
)
1329 #line 196 "scan-gram.l"
1330 if (yy_top_state () != INITIAL
) YY_GROW
;
1334 #line 197 "scan-gram.l"
1335 if (yy_top_state () != INITIAL
) YY_GROW
; YY_LINES
;
1339 #line 198 "scan-gram.l"
1340 /* Stray `*'. */if (yy_top_state () != INITIAL
) YY_GROW
;
1342 case YY_STATE_EOF(SC_COMMENT
):
1343 #line 200 "scan-gram.l"
1345 LOCATION_PRINT (stderr
, *yylloc
);
1346 fprintf (stderr
, ": unexpected end of file in a comment\n");
1351 /*----------------------------------------------------------------.
1352 | Scanning a C string, including its escapes. The initial `"' is |
1354 `----------------------------------------------------------------*/
1359 #line 215 "scan-gram.l"
1361 assert (yy_top_state () == INITIAL
);
1370 #line 223 "scan-gram.l"
1375 #line 225 "scan-gram.l"
1376 obstack_1grow (&string_obstack
, '\n'); YY_LINES
;
1378 case YY_STATE_EOF(SC_ESCAPED_STRING
):
1379 #line 227 "scan-gram.l"
1381 LOCATION_PRINT (stderr
, *yylloc
);
1382 fprintf (stderr
, ": unexpected end of file in a string\n");
1383 assert (yy_top_state () == INITIAL
);
1390 /*---------------------------------------------------------------.
1391 | Scanning a C character, decoding its escapes. The initial "'" |
1392 | is already eaten. |
1393 `---------------------------------------------------------------*/
1398 #line 244 "scan-gram.l"
1401 assert (yy_top_state () == INITIAL
);
1405 c
= yylval
->string
[1];
1406 yylval
->symbol
= getsym (yylval
->string
);
1407 symbol_class_set (yylval
->symbol
, token_sym
);
1408 symbol_user_token_number_set (yylval
->symbol
, (unsigned int) c
);
1416 #line 259 "scan-gram.l"
1421 #line 261 "scan-gram.l"
1422 obstack_1grow (&string_obstack
, '\n'); YY_LINES
;
1424 case YY_STATE_EOF(SC_ESCAPED_CHARACTER
):
1425 #line 263 "scan-gram.l"
1427 LOCATION_PRINT (stderr
, *yylloc
);
1428 fprintf (stderr
, ": unexpected end of file in a character\n");
1429 assert (yy_top_state () == INITIAL
);
1436 /*----------------------------.
1437 | Decode escaped characters. |
1438 `----------------------------*/
1443 #line 280 "scan-gram.l"
1445 long c
= strtol (yytext
+ 1, 0, 8);
1448 LOCATION_PRINT (stderr
, *yylloc
);
1449 fprintf (stderr
, ": invalid escape: %s\n", yytext
);
1453 obstack_1grow (&string_obstack
, c
);
1458 #line 292 "scan-gram.l"
1460 obstack_1grow (&string_obstack
, strtol (yytext
+ 2, 0, 16));
1465 #line 296 "scan-gram.l"
1466 obstack_1grow (&string_obstack
, '\a');
1470 #line 297 "scan-gram.l"
1471 obstack_1grow (&string_obstack
, '\b');
1475 #line 298 "scan-gram.l"
1476 obstack_1grow (&string_obstack
, '\f');
1480 #line 299 "scan-gram.l"
1481 obstack_1grow (&string_obstack
, '\n');
1485 #line 300 "scan-gram.l"
1486 obstack_1grow (&string_obstack
, '\r');
1490 #line 301 "scan-gram.l"
1491 obstack_1grow (&string_obstack
, '\t');
1495 #line 302 "scan-gram.l"
1496 obstack_1grow (&string_obstack
, '\v');
1500 #line 303 "scan-gram.l"
1501 obstack_1grow (&string_obstack
, yytext
[1]);
1505 #line 304 "scan-gram.l"
1507 LOCATION_PRINT (stderr
, *yylloc
);
1508 fprintf (stderr
, ": unrecognized escape: %s\n", yytext
);
1513 /*----------------------------------------------------------.
1514 | Scanning a C character without decoding its escapes. The |
1515 | initial "'" is already eaten. |
1516 `----------------------------------------------------------*/
1521 #line 319 "scan-gram.l"
1524 assert (yy_top_state () != INITIAL
);
1530 #line 325 "scan-gram.l"
1535 #line 326 "scan-gram.l"
1540 #line 328 "scan-gram.l"
1543 case YY_STATE_EOF(SC_CHARACTER
):
1544 #line 330 "scan-gram.l"
1546 LOCATION_PRINT (stderr
, *yylloc
);
1547 fprintf (stderr
, ": unexpected end of file in a character\n");
1548 assert (yy_top_state () != INITIAL
);
1553 /*----------------------------------------------------------------.
1554 | Scanning a C string, without decoding its escapes. The initial |
1555 | `"' is already eaten. |
1556 `----------------------------------------------------------------*/
1561 #line 346 "scan-gram.l"
1563 assert (yy_top_state () != INITIAL
);
1570 #line 352 "scan-gram.l"
1575 #line 353 "scan-gram.l"
1580 #line 355 "scan-gram.l"
1583 case YY_STATE_EOF(SC_STRING
):
1584 #line 357 "scan-gram.l"
1586 LOCATION_PRINT (stderr
, *yylloc
);
1587 fprintf (stderr
, ": unexpected end of file in a string\n");
1588 assert (yy_top_state () != INITIAL
);
1593 /*---------------------------------------------------.
1594 | Strings, comments etc. can be found in user code. |
1595 `---------------------------------------------------*/
1598 /* Characters. We don't check there is only one. */
1601 #line 373 "scan-gram.l"
1602 YY_GROW
; yy_push_state (SC_CHARACTER
);
1607 #line 376 "scan-gram.l"
1608 YY_GROW
; yy_push_state (SC_STRING
);
1613 #line 379 "scan-gram.l"
1614 YY_GROW
; yy_push_state (SC_COMMENT
);
1618 #line 380 "scan-gram.l"
1622 /*---------------------------------------------------------------.
1623 | Scanning some code in braces (%union and actions). The initial |
1624 | "{" is already eaten. |
1625 `---------------------------------------------------------------*/
1630 #line 391 "scan-gram.l"
1633 if (--braces_level
== 0)
1643 #line 401 "scan-gram.l"
1644 YY_GROW
; braces_level
++;
1648 #line 403 "scan-gram.l"
1649 { handle_dollar (yytext
); }
1653 #line 404 "scan-gram.l"
1654 { handle_at (yytext
); }
1658 #line 406 "scan-gram.l"
1663 #line 407 "scan-gram.l"
1666 /* A lose $, or /, or etc. */
1669 #line 410 "scan-gram.l"
1672 case YY_STATE_EOF(SC_BRACED_CODE
):
1673 #line 412 "scan-gram.l"
1675 LOCATION_PRINT (stderr
, *yylloc
);
1676 fprintf (stderr
, ": unexpected end of file in a braced code\n");
1683 /*--------------------------------------------------------------.
1684 | Scanning some prologue: from "%{" (already scanned) to "%}". |
1685 `--------------------------------------------------------------*/
1690 #line 429 "scan-gram.l"
1699 #line 435 "scan-gram.l"
1704 #line 436 "scan-gram.l"
1709 #line 437 "scan-gram.l"
1712 case YY_STATE_EOF(SC_PROLOGUE
):
1713 #line 439 "scan-gram.l"
1715 LOCATION_PRINT (stderr
, *yylloc
);
1716 fprintf (stderr
, ": unexpected end of file in a prologue\n");
1723 /*---------------------------------------------------------------.
1724 | Scanning the epilogue (everything after the second "%%", which |
1725 | has already been eaten. |
1726 `---------------------------------------------------------------*/
1731 #line 457 "scan-gram.l"
1734 case YY_STATE_EOF(SC_EPILOGUE
):
1735 #line 459 "scan-gram.l"
1745 #line 467 "scan-gram.l"
1746 YY_FATAL_ERROR( "flex scanner jammed" );
1748 #line 1749 "scan-gram.c"
1749 case YY_STATE_EOF(INITIAL
):
1752 case YY_END_OF_BUFFER
:
1754 /* Amount of text matched not including the EOB char. */
1755 int yy_amount_of_matched_text
= (int) (yy_cp
- yytext_ptr
) - 1;
1757 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1758 *yy_cp
= yy_hold_char
;
1759 YY_RESTORE_YY_MORE_OFFSET
1761 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_NEW
)
1763 /* We're scanning a new file or input source. It's
1764 * possible that this happened because the user
1765 * just pointed yyin at a new source and called
1766 * yylex(). If so, then we have to assure
1767 * consistency between yy_current_buffer and our
1768 * globals. Here is the right place to do so, because
1769 * this is the first action (other than possibly a
1770 * back-up) that will match for the new input source.
1772 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
1773 yy_current_buffer
->yy_input_file
= yyin
;
1774 yy_current_buffer
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1777 /* Note that here we test for yy_c_buf_p "<=" to the position
1778 * of the first EOB in the buffer, since yy_c_buf_p will
1779 * already have been incremented past the NUL character
1780 * (since all states make transitions on EOB to the
1781 * end-of-buffer state). Contrast this with the test
1784 if ( yy_c_buf_p
<= &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
1785 { /* This was really a NUL. */
1786 yy_state_type yy_next_state
;
1788 yy_c_buf_p
= yytext_ptr
+ yy_amount_of_matched_text
;
1790 yy_current_state
= yy_get_previous_state();
1792 /* Okay, we're now positioned to make the NUL
1793 * transition. We couldn't have
1794 * yy_get_previous_state() go ahead and do it
1795 * for us because it doesn't know how to deal
1796 * with the possibility of jamming (and we don't
1797 * want to build jamming into it because then it
1798 * will run more slowly).
1801 yy_next_state
= yy_try_NUL_trans( yy_current_state
);
1803 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
1805 if ( yy_next_state
)
1807 /* Consume the NUL. */
1808 yy_cp
= ++yy_c_buf_p
;
1809 yy_current_state
= yy_next_state
;
1816 goto yy_find_action
;
1820 else switch ( yy_get_next_buffer() )
1822 case EOB_ACT_END_OF_FILE
:
1824 yy_did_buffer_switch_on_eof
= 0;
1828 /* Note: because we've taken care in
1829 * yy_get_next_buffer() to have set up
1830 * yytext, we can now set up
1831 * yy_c_buf_p so that if some total
1832 * hoser (like flex itself) wants to
1833 * call the scanner after we return the
1834 * YY_NULL, it'll still work - another
1835 * YY_NULL will get returned.
1837 yy_c_buf_p
= yytext_ptr
+ YY_MORE_ADJ
;
1839 yy_act
= YY_STATE_EOF(YY_START
);
1845 if ( ! yy_did_buffer_switch_on_eof
)
1851 case EOB_ACT_CONTINUE_SCAN
:
1853 yytext_ptr
+ yy_amount_of_matched_text
;
1855 yy_current_state
= yy_get_previous_state();
1858 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
1861 case EOB_ACT_LAST_MATCH
:
1863 &yy_current_buffer
->yy_ch_buf
[yy_n_chars
];
1865 yy_current_state
= yy_get_previous_state();
1868 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
1869 goto yy_find_action
;
1876 "fatal flex scanner internal error--no action found" );
1877 } /* end of action switch */
1878 } /* end of scanning one token */
1879 } /* end of yylex */
1882 /* yy_get_next_buffer - try to read in a new buffer
1884 * Returns a code representing an action:
1885 * EOB_ACT_LAST_MATCH -
1886 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1887 * EOB_ACT_END_OF_FILE - end of file
1890 static int yy_get_next_buffer()
1892 register char *dest
= yy_current_buffer
->yy_ch_buf
;
1893 register char *source
= yytext_ptr
;
1894 register int number_to_move
, i
;
1897 if ( yy_c_buf_p
> &yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] )
1899 "fatal flex scanner internal error--end of buffer missed" );
1901 if ( yy_current_buffer
->yy_fill_buffer
== 0 )
1902 { /* Don't try to fill the buffer, so this is an EOF. */
1903 if ( yy_c_buf_p
- yytext_ptr
- YY_MORE_ADJ
== 1 )
1905 /* We matched a single character, the EOB, so
1906 * treat this as a final EOF.
1908 return EOB_ACT_END_OF_FILE
;
1913 /* We matched some text prior to the EOB, first
1916 return EOB_ACT_LAST_MATCH
;
1920 /* Try to read more data. */
1922 /* First move last chars to start of buffer. */
1923 number_to_move
= (int) (yy_c_buf_p
- yytext_ptr
) - 1;
1925 for ( i
= 0; i
< number_to_move
; ++i
)
1926 *(dest
++) = *(source
++);
1928 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
1929 /* don't do the read, it's not guaranteed to return an EOF,
1932 yy_current_buffer
->yy_n_chars
= yy_n_chars
= 0;
1937 yy_current_buffer
->yy_buf_size
- number_to_move
- 1;
1939 while ( num_to_read
<= 0 )
1940 { /* Not enough room in the buffer - grow it. */
1941 #ifdef YY_USES_REJECT
1943 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1946 /* just a shorter name for the current buffer */
1947 YY_BUFFER_STATE b
= yy_current_buffer
;
1949 int yy_c_buf_p_offset
=
1950 (int) (yy_c_buf_p
- b
->yy_ch_buf
);
1952 if ( b
->yy_is_our_buffer
)
1954 int new_size
= b
->yy_buf_size
* 2;
1956 if ( new_size
<= 0 )
1957 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
1959 b
->yy_buf_size
*= 2;
1961 b
->yy_ch_buf
= (char *)
1962 /* Include room in for 2 EOB chars. */
1963 yy_flex_realloc( (void *) b
->yy_ch_buf
,
1964 b
->yy_buf_size
+ 2 );
1967 /* Can't grow it, we don't own it. */
1970 if ( ! b
->yy_ch_buf
)
1972 "fatal error - scanner input buffer overflow" );
1974 yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
1976 num_to_read
= yy_current_buffer
->yy_buf_size
-
1981 if ( num_to_read
> YY_READ_BUF_SIZE
)
1982 num_to_read
= YY_READ_BUF_SIZE
;
1984 /* Read in more data. */
1985 YY_INPUT( (&yy_current_buffer
->yy_ch_buf
[number_to_move
]),
1986 yy_n_chars
, num_to_read
);
1988 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
1991 if ( yy_n_chars
== 0 )
1993 if ( number_to_move
== YY_MORE_ADJ
)
1995 ret_val
= EOB_ACT_END_OF_FILE
;
2001 ret_val
= EOB_ACT_LAST_MATCH
;
2002 yy_current_buffer
->yy_buffer_status
=
2003 YY_BUFFER_EOF_PENDING
;
2008 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2010 yy_n_chars
+= number_to_move
;
2011 yy_current_buffer
->yy_ch_buf
[yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2012 yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2014 yytext_ptr
= &yy_current_buffer
->yy_ch_buf
[0];
2020 /* yy_get_previous_state - get the state just before the EOB char was reached */
2022 static yy_state_type
yy_get_previous_state()
2024 register yy_state_type yy_current_state
;
2025 register char *yy_cp
;
2027 yy_current_state
= yy_start
;
2029 for ( yy_cp
= yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yy_c_buf_p
; ++yy_cp
)
2031 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2032 if ( yy_accept
[yy_current_state
] )
2034 yy_last_accepting_state
= yy_current_state
;
2035 yy_last_accepting_cpos
= yy_cp
;
2037 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2039 yy_current_state
= (int) yy_def
[yy_current_state
];
2040 if ( yy_current_state
>= 355 )
2041 yy_c
= yy_meta
[(unsigned int) yy_c
];
2043 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2046 return yy_current_state
;
2050 /* yy_try_NUL_trans - try to make a transition on the NUL character
2053 * next_state = yy_try_NUL_trans( current_state );
2056 #ifdef YY_USE_PROTOS
2057 static yy_state_type
yy_try_NUL_trans( yy_state_type yy_current_state
)
2059 static yy_state_type
yy_try_NUL_trans( yy_current_state
)
2060 yy_state_type yy_current_state
;
2063 register int yy_is_jam
;
2064 register char *yy_cp
= yy_c_buf_p
;
2066 register YY_CHAR yy_c
= 1;
2067 if ( yy_accept
[yy_current_state
] )
2069 yy_last_accepting_state
= yy_current_state
;
2070 yy_last_accepting_cpos
= yy_cp
;
2072 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2074 yy_current_state
= (int) yy_def
[yy_current_state
];
2075 if ( yy_current_state
>= 355 )
2076 yy_c
= yy_meta
[(unsigned int) yy_c
];
2078 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2079 yy_is_jam
= (yy_current_state
== 354);
2081 return yy_is_jam
? 0 : yy_current_state
;
2086 #ifdef YY_USE_PROTOS
2087 static void yyunput( int c
, register char *yy_bp
)
2089 static void yyunput( c
, yy_bp
)
2091 register char *yy_bp
;
2094 register char *yy_cp
= yy_c_buf_p
;
2096 /* undo effects of setting up yytext */
2097 *yy_cp
= yy_hold_char
;
2099 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
2100 { /* need to shift things up to make room */
2101 /* +2 for EOB chars. */
2102 register int number_to_move
= yy_n_chars
+ 2;
2103 register char *dest
= &yy_current_buffer
->yy_ch_buf
[
2104 yy_current_buffer
->yy_buf_size
+ 2];
2105 register char *source
=
2106 &yy_current_buffer
->yy_ch_buf
[number_to_move
];
2108 while ( source
> yy_current_buffer
->yy_ch_buf
)
2109 *--dest
= *--source
;
2111 yy_cp
+= (int) (dest
- source
);
2112 yy_bp
+= (int) (dest
- source
);
2113 yy_current_buffer
->yy_n_chars
=
2114 yy_n_chars
= yy_current_buffer
->yy_buf_size
;
2116 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
2117 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2120 *--yy_cp
= (char) c
;
2124 yy_hold_char
= *yy_cp
;
2127 #endif /* ifndef YY_NO_UNPUT */
2131 static int yyinput()
2138 *yy_c_buf_p
= yy_hold_char
;
2140 if ( *yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2142 /* yy_c_buf_p now points to the character we want to return.
2143 * If this occurs *before* the EOB characters, then it's a
2144 * valid NUL; if not, then we've hit the end of the buffer.
2146 if ( yy_c_buf_p
< &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
2147 /* This was really a NUL. */
2151 { /* need more input */
2152 int offset
= yy_c_buf_p
- yytext_ptr
;
2155 switch ( yy_get_next_buffer() )
2157 case EOB_ACT_LAST_MATCH
:
2158 /* This happens because yy_g_n_b()
2159 * sees that we've accumulated a
2160 * token and flags that we need to
2161 * try matching the token before
2162 * proceeding. But for input(),
2163 * there's no matching to consider.
2164 * So convert the EOB_ACT_LAST_MATCH
2165 * to EOB_ACT_END_OF_FILE.
2168 /* Reset buffer status. */
2173 case EOB_ACT_END_OF_FILE
:
2178 if ( ! yy_did_buffer_switch_on_eof
)
2187 case EOB_ACT_CONTINUE_SCAN
:
2188 yy_c_buf_p
= yytext_ptr
+ offset
;
2194 c
= *(unsigned char *) yy_c_buf_p
; /* cast for 8-bit char's */
2195 *yy_c_buf_p
= '\0'; /* preserve yytext */
2196 yy_hold_char
= *++yy_c_buf_p
;
2203 #ifdef YY_USE_PROTOS
2204 void yyrestart( FILE *input_file
)
2206 void yyrestart( input_file
)
2210 if ( ! yy_current_buffer
)
2211 yy_current_buffer
= yy_create_buffer( yyin
, YY_BUF_SIZE
);
2213 yy_init_buffer( yy_current_buffer
, input_file
);
2214 yy_load_buffer_state();
2218 #ifdef YY_USE_PROTOS
2219 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer
)
2221 void yy_switch_to_buffer( new_buffer
)
2222 YY_BUFFER_STATE new_buffer
;
2225 if ( yy_current_buffer
== new_buffer
)
2228 if ( yy_current_buffer
)
2230 /* Flush out information for old buffer. */
2231 *yy_c_buf_p
= yy_hold_char
;
2232 yy_current_buffer
->yy_buf_pos
= yy_c_buf_p
;
2233 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
2236 yy_current_buffer
= new_buffer
;
2237 yy_load_buffer_state();
2239 /* We don't actually know whether we did this switch during
2240 * EOF (yywrap()) processing, but the only time this flag
2241 * is looked at is after yywrap() is called, so it's safe
2242 * to go ahead and always set it.
2244 yy_did_buffer_switch_on_eof
= 1;
2248 #ifdef YY_USE_PROTOS
2249 void yy_load_buffer_state( void )
2251 void yy_load_buffer_state()
2254 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
2255 yytext_ptr
= yy_c_buf_p
= yy_current_buffer
->yy_buf_pos
;
2256 yyin
= yy_current_buffer
->yy_input_file
;
2257 yy_hold_char
= *yy_c_buf_p
;
2261 #ifdef YY_USE_PROTOS
2262 YY_BUFFER_STATE
yy_create_buffer( FILE *file
, int size
)
2264 YY_BUFFER_STATE
yy_create_buffer( file
, size
)
2271 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
2273 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2275 b
->yy_buf_size
= size
;
2277 /* yy_ch_buf has to be 2 characters longer than the size given because
2278 * we need to put in 2 end-of-buffer characters.
2280 b
->yy_ch_buf
= (char *) yy_flex_alloc( b
->yy_buf_size
+ 2 );
2281 if ( ! b
->yy_ch_buf
)
2282 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2284 b
->yy_is_our_buffer
= 1;
2286 yy_init_buffer( b
, file
);
2292 #ifdef YY_USE_PROTOS
2293 void yy_delete_buffer( YY_BUFFER_STATE b
)
2295 void yy_delete_buffer( b
)
2302 if ( b
== yy_current_buffer
)
2303 yy_current_buffer
= (YY_BUFFER_STATE
) 0;
2305 if ( b
->yy_is_our_buffer
)
2306 yy_flex_free( (void *) b
->yy_ch_buf
);
2308 yy_flex_free( (void *) b
);
2312 #ifndef YY_ALWAYS_INTERACTIVE
2313 #ifndef YY_NEVER_INTERACTIVE
2314 extern int isatty
YY_PROTO(( int ));
2318 #ifdef YY_USE_PROTOS
2319 void yy_init_buffer( YY_BUFFER_STATE b
, FILE *file
)
2321 void yy_init_buffer( b
, file
)
2328 yy_flush_buffer( b
);
2330 b
->yy_input_file
= file
;
2331 b
->yy_fill_buffer
= 1;
2333 #if YY_ALWAYS_INTERACTIVE
2334 b
->yy_is_interactive
= 1;
2336 #if YY_NEVER_INTERACTIVE
2337 b
->yy_is_interactive
= 0;
2339 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2345 #ifdef YY_USE_PROTOS
2346 void yy_flush_buffer( YY_BUFFER_STATE b
)
2348 void yy_flush_buffer( b
)
2358 /* We always need two end-of-buffer characters. The first causes
2359 * a transition to the end-of-buffer state. The second causes
2360 * a jam in that state.
2362 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2363 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2365 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2368 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2370 if ( b
== yy_current_buffer
)
2371 yy_load_buffer_state();
2375 #ifndef YY_NO_SCAN_BUFFER
2376 #ifdef YY_USE_PROTOS
2377 YY_BUFFER_STATE
yy_scan_buffer( char *base
, yy_size_t size
)
2379 YY_BUFFER_STATE
yy_scan_buffer( base
, size
)
2387 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2388 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2389 /* They forgot to leave room for the EOB's. */
2392 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
2394 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2396 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2397 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2398 b
->yy_is_our_buffer
= 0;
2399 b
->yy_input_file
= 0;
2400 b
->yy_n_chars
= b
->yy_buf_size
;
2401 b
->yy_is_interactive
= 0;
2403 b
->yy_fill_buffer
= 0;
2404 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2406 yy_switch_to_buffer( b
);
2413 #ifndef YY_NO_SCAN_STRING
2414 #ifdef YY_USE_PROTOS
2415 YY_BUFFER_STATE
yy_scan_string( yyconst
char *yy_str
)
2417 YY_BUFFER_STATE
yy_scan_string( yy_str
)
2418 yyconst
char *yy_str
;
2422 for ( len
= 0; yy_str
[len
]; ++len
)
2425 return yy_scan_bytes( yy_str
, len
);
2430 #ifndef YY_NO_SCAN_BYTES
2431 #ifdef YY_USE_PROTOS
2432 YY_BUFFER_STATE
yy_scan_bytes( yyconst
char *bytes
, int len
)
2434 YY_BUFFER_STATE
yy_scan_bytes( bytes
, len
)
2435 yyconst
char *bytes
;
2444 /* Get memory for full buffer, including space for trailing EOB's. */
2446 buf
= (char *) yy_flex_alloc( n
);
2448 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2450 for ( i
= 0; i
< len
; ++i
)
2453 buf
[len
] = buf
[len
+1] = YY_END_OF_BUFFER_CHAR
;
2455 b
= yy_scan_buffer( buf
, n
);
2457 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2459 /* It's okay to grow etc. this buffer, and we should throw it
2460 * away when we're done.
2462 b
->yy_is_our_buffer
= 1;
2469 #ifndef YY_NO_PUSH_STATE
2470 #ifdef YY_USE_PROTOS
2471 static void yy_push_state( int new_state
)
2473 static void yy_push_state( new_state
)
2477 if ( yy_start_stack_ptr
>= yy_start_stack_depth
)
2481 yy_start_stack_depth
+= YY_START_STACK_INCR
;
2482 new_size
= yy_start_stack_depth
* sizeof( int );
2484 if ( ! yy_start_stack
)
2485 yy_start_stack
= (int *) yy_flex_alloc( new_size
);
2488 yy_start_stack
= (int *) yy_flex_realloc(
2489 (void *) yy_start_stack
, new_size
);
2491 if ( ! yy_start_stack
)
2493 "out of memory expanding start-condition stack" );
2496 yy_start_stack
[yy_start_stack_ptr
++] = YY_START
;
2503 #ifndef YY_NO_POP_STATE
2504 static void yy_pop_state()
2506 if ( --yy_start_stack_ptr
< 0 )
2507 YY_FATAL_ERROR( "start-condition stack underflow" );
2509 BEGIN(yy_start_stack
[yy_start_stack_ptr
]);
2514 #ifndef YY_NO_TOP_STATE
2515 static int yy_top_state()
2517 return yy_start_stack
[yy_start_stack_ptr
- 1];
2521 #ifndef YY_EXIT_FAILURE
2522 #define YY_EXIT_FAILURE 2
2525 #ifdef YY_USE_PROTOS
2526 static void yy_fatal_error( yyconst
char msg
[] )
2528 static void yy_fatal_error( msg
)
2532 (void) fprintf( stderr
, "%s\n", msg
);
2533 exit( YY_EXIT_FAILURE
);
2538 /* Redefine yyless() so it works in section 3 code. */
2544 /* Undo effects of setting up yytext. */ \
2545 yytext[yyleng] = yy_hold_char; \
2546 yy_c_buf_p = yytext + n; \
2547 yy_hold_char = *yy_c_buf_p; \
2548 *yy_c_buf_p = '\0'; \
2554 /* Internal utility routines. */
2557 #ifdef YY_USE_PROTOS
2558 static void yy_flex_strncpy( char *s1
, yyconst
char *s2
, int n
)
2560 static void yy_flex_strncpy( s1
, s2
, n
)
2567 for ( i
= 0; i
< n
; ++i
)
2572 #ifdef YY_NEED_STRLEN
2573 #ifdef YY_USE_PROTOS
2574 static int yy_flex_strlen( yyconst
char *s
)
2576 static int yy_flex_strlen( s
)
2581 for ( n
= 0; s
[n
]; ++n
)
2589 #ifdef YY_USE_PROTOS
2590 static void *yy_flex_alloc( yy_size_t size
)
2592 static void *yy_flex_alloc( size
)
2596 return (void *) malloc( size
);
2599 #ifdef YY_USE_PROTOS
2600 static void *yy_flex_realloc( void *ptr
, yy_size_t size
)
2602 static void *yy_flex_realloc( ptr
, size
)
2607 /* The cast to (char *) in the following accommodates both
2608 * implementations that use char* generic pointers, and those
2609 * that use void* generic pointers. It works with the latter
2610 * because both ANSI C and C++ allow castless assignment from
2611 * any pointer type to void*, and deal with argument conversions
2612 * as though doing an assignment.
2614 return (void *) realloc( (char *) ptr
, size
);
2617 #ifdef YY_USE_PROTOS
2618 static void yy_flex_free( void *ptr
)
2620 static void yy_flex_free( ptr
)
2634 #line 467 "scan-gram.l"
2637 /*------------------------------------------------------------------.
2638 | CP is pointing to a wannabee semantic value (i.e., a `$'). |
2640 | Possible inputs: $[<TYPENAME>]($|integer) |
2642 | Output to the STRING_OBSTACK a reference to this semantic value. |
2643 `------------------------------------------------------------------*/
2646 handle_dollar (char *cp
)
2648 const char *type_name
= NULL
;
2650 /* RULE_LENGTH is the number of values in the current rule so far,
2651 which says where to find `$0' with respect to the top of the
2652 stack. It is not the same as the rule->length in the case of mid
2654 int rule_length
= 0;
2656 for (rhs
= current_rule
->next
; rhs
; rhs
= rhs
->next
)
2661 /* Get the type name if explicit. */
2674 type_name
= get_type_name (0, current_rule
);
2675 if (!type_name
&& typed
)
2676 complain (_("$$ of `%s' has no declared type"),
2677 current_rule
->sym
->tag
);
2680 obstack_fgrow1 (&string_obstack
,
2681 "]b4_lhs_value([%s])[", type_name
);
2683 else if (isdigit (*cp
) || *cp
== '-')
2685 int n
= strtol (cp
, &cp
, 10);
2687 if (n
> rule_length
)
2688 complain (_("invalid value: %s%d"), "$", n
);
2691 if (!type_name
&& n
> 0)
2692 type_name
= get_type_name (n
, current_rule
);
2693 if (!type_name
&& typed
)
2694 complain (_("$%d of `%s' has no declared type"),
2695 n
, current_rule
->sym
->tag
);
2698 obstack_fgrow3 (&string_obstack
,
2699 "]b4_rhs_value([%d], [%d], [%s])[",
2700 rule_length
, n
, type_name
);
2707 complain (_("%s is invalid"), quote (buf
));
2711 /*-------------------------------------------------------.
2712 | CP is pointing to a location (i.e., a `@'). Output to |
2713 | STRING_OBSTACK a reference to this location. |
2714 `-------------------------------------------------------*/
2717 handle_at (char *cp
)
2719 /* RULE_LENGTH is the number of values in the current rule so far,
2720 which says where to find `$0' with respect to the top of the
2721 stack. It is not the same as the rule->length in the case of mid
2723 int rule_length
= 0;
2725 for (rhs
= current_rule
->next
; rhs
; rhs
= rhs
->next
)
2733 obstack_sgrow (&string_obstack
, "]b4_lhs_location[");
2735 else if (isdigit (*cp
) || *cp
== '-')
2737 int n
= strtol (cp
, &cp
, 10);
2738 if (n
> rule_length
)
2739 complain (_("invalid value: %s%d"), "@", n
);
2741 obstack_fgrow2 (&string_obstack
, "]b4_rhs_location([%d], [%d])[",
2748 complain (_("%s is invalid"), quote (buf
));