1#line 1 "src/scan-gram.c"
2
3#line 3 "src/scan-gram.c"
4
5#define YY_INT_ALIGNED short int
6
7/* A lexical scanner generated by flex */
8
9/* %not-for-header */
10/* %if-c-only */
11/* %if-not-reentrant */
12#define yy_create_buffer gram__create_buffer
13#define yy_delete_buffer gram__delete_buffer
14#define yy_scan_buffer gram__scan_buffer
15#define yy_scan_string gram__scan_string
16#define yy_scan_bytes gram__scan_bytes
17#define yy_init_buffer gram__init_buffer
18#define yy_flush_buffer gram__flush_buffer
19#define yy_load_buffer_state gram__load_buffer_state
20#define yy_switch_to_buffer gram__switch_to_buffer
21#define yypush_buffer_state gram_push_buffer_state
22#define yypop_buffer_state gram_pop_buffer_state
23#define yyensure_buffer_stack gram_ensure_buffer_stack
24#define yy_flex_debug gram__flex_debug
25#define yyin gram_in
26#define yyleng gram_leng
27#define yylex gram_lex
28#define yylineno gram_lineno
29#define yyout gram_out
30#define yyrestart gram_restart
31#define yytext gram_text
32#define yywrap gram_wrap
33#define yyalloc gram_alloc
34#define yyrealloc gram_realloc
35#define yyfree gram_free
36
37/* %endif */
38/* %endif */
39/* %ok-for-header */
40
41#define FLEX_SCANNER
42#define YY_FLEX_MAJOR_VERSION 2
43#define YY_FLEX_MINOR_VERSION 6
44#define YY_FLEX_SUBMINOR_VERSION 4
45#if YY_FLEX_SUBMINOR_VERSION > 0
46#define FLEX_BETA
47#endif
48
49/* %if-c++-only */
50/* %endif */
51
52/* %if-c-only */
53#ifdef yy_create_buffer
54#define gram__create_buffer_ALREADY_DEFINED
55#else
56#define yy_create_buffer gram__create_buffer
57#endif
58
59#ifdef yy_delete_buffer
60#define gram__delete_buffer_ALREADY_DEFINED
61#else
62#define yy_delete_buffer gram__delete_buffer
63#endif
64
65#ifdef yy_scan_buffer
66#define gram__scan_buffer_ALREADY_DEFINED
67#else
68#define yy_scan_buffer gram__scan_buffer
69#endif
70
71#ifdef yy_scan_string
72#define gram__scan_string_ALREADY_DEFINED
73#else
74#define yy_scan_string gram__scan_string
75#endif
76
77#ifdef yy_scan_bytes
78#define gram__scan_bytes_ALREADY_DEFINED
79#else
80#define yy_scan_bytes gram__scan_bytes
81#endif
82
83#ifdef yy_init_buffer
84#define gram__init_buffer_ALREADY_DEFINED
85#else
86#define yy_init_buffer gram__init_buffer
87#endif
88
89#ifdef yy_flush_buffer
90#define gram__flush_buffer_ALREADY_DEFINED
91#else
92#define yy_flush_buffer gram__flush_buffer
93#endif
94
95#ifdef yy_load_buffer_state
96#define gram__load_buffer_state_ALREADY_DEFINED
97#else
98#define yy_load_buffer_state gram__load_buffer_state
99#endif
100
101#ifdef yy_switch_to_buffer
102#define gram__switch_to_buffer_ALREADY_DEFINED
103#else
104#define yy_switch_to_buffer gram__switch_to_buffer
105#endif
106
107#ifdef yypush_buffer_state
108#define gram_push_buffer_state_ALREADY_DEFINED
109#else
110#define yypush_buffer_state gram_push_buffer_state
111#endif
112
113#ifdef yypop_buffer_state
114#define gram_pop_buffer_state_ALREADY_DEFINED
115#else
116#define yypop_buffer_state gram_pop_buffer_state
117#endif
118
119#ifdef yyensure_buffer_stack
120#define gram_ensure_buffer_stack_ALREADY_DEFINED
121#else
122#define yyensure_buffer_stack gram_ensure_buffer_stack
123#endif
124
125#ifdef yylex
126#define gram_lex_ALREADY_DEFINED
127#else
128#define yylex gram_lex
129#endif
130
131#ifdef yyrestart
132#define gram_restart_ALREADY_DEFINED
133#else
134#define yyrestart gram_restart
135#endif
136
137#ifdef yylex_init
138#define gram_lex_init_ALREADY_DEFINED
139#else
140#define yylex_init gram_lex_init
141#endif
142
143#ifdef yylex_init_extra
144#define gram_lex_init_extra_ALREADY_DEFINED
145#else
146#define yylex_init_extra gram_lex_init_extra
147#endif
148
149#ifdef yylex_destroy
150#define gram_lex_destroy_ALREADY_DEFINED
151#else
152#define yylex_destroy gram_lex_destroy
153#endif
154
155#ifdef yyget_debug
156#define gram_get_debug_ALREADY_DEFINED
157#else
158#define yyget_debug gram_get_debug
159#endif
160
161#ifdef yyset_debug
162#define gram_set_debug_ALREADY_DEFINED
163#else
164#define yyset_debug gram_set_debug
165#endif
166
167#ifdef yyget_extra
168#define gram_get_extra_ALREADY_DEFINED
169#else
170#define yyget_extra gram_get_extra
171#endif
172
173#ifdef yyset_extra
174#define gram_set_extra_ALREADY_DEFINED
175#else
176#define yyset_extra gram_set_extra
177#endif
178
179#ifdef yyget_in
180#define gram_get_in_ALREADY_DEFINED
181#else
182#define yyget_in gram_get_in
183#endif
184
185#ifdef yyset_in
186#define gram_set_in_ALREADY_DEFINED
187#else
188#define yyset_in gram_set_in
189#endif
190
191#ifdef yyget_out
192#define gram_get_out_ALREADY_DEFINED
193#else
194#define yyget_out gram_get_out
195#endif
196
197#ifdef yyset_out
198#define gram_set_out_ALREADY_DEFINED
199#else
200#define yyset_out gram_set_out
201#endif
202
203#ifdef yyget_leng
204#define gram_get_leng_ALREADY_DEFINED
205#else
206#define yyget_leng gram_get_leng
207#endif
208
209#ifdef yyget_text
210#define gram_get_text_ALREADY_DEFINED
211#else
212#define yyget_text gram_get_text
213#endif
214
215#ifdef yyget_lineno
216#define gram_get_lineno_ALREADY_DEFINED
217#else
218#define yyget_lineno gram_get_lineno
219#endif
220
221#ifdef yyset_lineno
222#define gram_set_lineno_ALREADY_DEFINED
223#else
224#define yyset_lineno gram_set_lineno
225#endif
226
227#ifdef yywrap
228#define gram_wrap_ALREADY_DEFINED
229#else
230#define yywrap gram_wrap
231#endif
232
233/* %endif */
234
235#ifdef yyalloc
236#define gram_alloc_ALREADY_DEFINED
237#else
238#define yyalloc gram_alloc
239#endif
240
241#ifdef yyrealloc
242#define gram_realloc_ALREADY_DEFINED
243#else
244#define yyrealloc gram_realloc
245#endif
246
247#ifdef yyfree
248#define gram_free_ALREADY_DEFINED
249#else
250#define yyfree gram_free
251#endif
252
253/* %if-c-only */
254
255#ifdef yytext
256#define gram_text_ALREADY_DEFINED
257#else
258#define yytext gram_text
259#endif
260
261#ifdef yyleng
262#define gram_leng_ALREADY_DEFINED
263#else
264#define yyleng gram_leng
265#endif
266
267#ifdef yyin
268#define gram_in_ALREADY_DEFINED
269#else
270#define yyin gram_in
271#endif
272
273#ifdef yyout
274#define gram_out_ALREADY_DEFINED
275#else
276#define yyout gram_out
277#endif
278
279#ifdef yy_flex_debug
280#define gram__flex_debug_ALREADY_DEFINED
281#else
282#define yy_flex_debug gram__flex_debug
283#endif
284
285#ifdef yylineno
286#define gram_lineno_ALREADY_DEFINED
287#else
288#define yylineno gram_lineno
289#endif
290
291/* %endif */
292
293/* First, we deal with platform-specific or compiler-specific issues. */
294
295/* begin standard C headers. */
296/* %if-c-only */
297#include <stdio.h>
298#include <string.h>
299#include <errno.h>
300#include <stdlib.h>
301/* %endif */
302
303/* %if-tables-serialization */
304/* %endif */
305/* end standard C headers. */
306
307/* %if-c-or-c++ */
308/* flex integer type definitions */
309
310#ifndef FLEXINT_H
311#define FLEXINT_H
312
313/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
314
315#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
316
317/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
318 * if you want the limit (max/min) macros for int types.
319 */
320#ifndef __STDC_LIMIT_MACROS
321#define __STDC_LIMIT_MACROS 1
322#endif
323
324#include <inttypes.h>
325typedef int8_t flex_int8_t;
326typedef uint8_t flex_uint8_t;
327typedef int16_t flex_int16_t;
328typedef uint16_t flex_uint16_t;
329typedef int32_t flex_int32_t;
330typedef uint32_t flex_uint32_t;
331#else
332typedef signed char flex_int8_t;
333typedef short int flex_int16_t;
334typedef int flex_int32_t;
335typedef unsigned char flex_uint8_t;
336typedef unsigned short int flex_uint16_t;
337typedef unsigned int flex_uint32_t;
338
339/* Limits of integral types. */
340#ifndef INT8_MIN
341#define INT8_MIN (-128)
342#endif
343#ifndef INT16_MIN
344#define INT16_MIN (-32767-1)
345#endif
346#ifndef INT32_MIN
347#define INT32_MIN (-2147483647-1)
348#endif
349#ifndef INT8_MAX
350#define INT8_MAX (127)
351#endif
352#ifndef INT16_MAX
353#define INT16_MAX (32767)
354#endif
355#ifndef INT32_MAX
356#define INT32_MAX (2147483647)
357#endif
358#ifndef UINT8_MAX
359#define UINT8_MAX (255U)
360#endif
361#ifndef UINT16_MAX
362#define UINT16_MAX (65535U)
363#endif
364#ifndef UINT32_MAX
365#define UINT32_MAX (4294967295U)
366#endif
367
368#ifndef SIZE_MAX
369#define SIZE_MAX (~(size_t)0)
370#endif
371
372#endif /* ! C99 */
373
374#endif /* ! FLEXINT_H */
375
376/* %endif */
377
378/* begin standard C++ headers. */
379/* %if-c++-only */
380/* %endif */
381
382/* TODO: this is always defined, so inline it */
383#define yyconst const
384
385#if defined(__GNUC__) && __GNUC__ >= 3
386#define yynoreturn __attribute__((__noreturn__))
387#else
388#define yynoreturn
389#endif
390
391/* %not-for-header */
392/* Returned upon end-of-file. */
393#define YY_NULL 0
394/* %ok-for-header */
395
396/* %not-for-header */
397/* Promotes a possibly negative, possibly signed char to an
398 * integer in range [0..255] for use as an array index.
399 */
400#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
401/* %ok-for-header */
402
403/* %if-reentrant */
404/* %endif */
405
406/* %if-not-reentrant */
407
408/* %endif */
409
410/* Enter a start condition. This macro really ought to take a parameter,
411 * but we do it the disgusting crufty way forced on us by the ()-less
412 * definition of BEGIN.
413 */
414#define BEGIN (yy_start) = 1 + 2 *
415/* Translate the current start state into a value that can be later handed
416 * to BEGIN to return to the state. The YYSTATE alias is for lex
417 * compatibility.
418 */
419#define YY_START (((yy_start) - 1) / 2)
420#define YYSTATE YY_START
421/* Action number for EOF rule of a given start state. */
422#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
423/* Special action meaning "start processing a new file". */
424#define YY_NEW_FILE yyrestart( yyin )
425#define YY_END_OF_BUFFER_CHAR 0
426
427/* Size of default input buffer. */
428#ifndef YY_BUF_SIZE
429#ifdef __ia64__
430/* On IA-64, the buffer size is 16k, not 8k.
431 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
432 * Ditto for the __ia64__ case accordingly.
433 */
434#define YY_BUF_SIZE 32768
435#else
436#define YY_BUF_SIZE 16384
437#endif /* __ia64__ */
438#endif
439
440/* The state buf must be large enough to hold one state per character in the main buffer.
441 */
442#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
443
444#ifndef YY_TYPEDEF_YY_BUFFER_STATE
445#define YY_TYPEDEF_YY_BUFFER_STATE
446typedef struct yy_buffer_state *YY_BUFFER_STATE;
447#endif
448
449#ifndef YY_TYPEDEF_YY_SIZE_T
450#define YY_TYPEDEF_YY_SIZE_T
451typedef size_t yy_size_t;
452#endif
453
454/* %if-not-reentrant */
455extern int yyleng;
456/* %endif */
457
458/* %if-c-only */
459/* %if-not-reentrant */
460extern FILE *yyin, *yyout;
461/* %endif */
462/* %endif */
463
464#define EOB_ACT_CONTINUE_SCAN 0
465#define EOB_ACT_END_OF_FILE 1
466#define EOB_ACT_LAST_MATCH 2
467
468 #define YY_LESS_LINENO(n)
469 #define YY_LINENO_REWIND_TO(ptr)
470
471/* Return all but the first "n" matched characters back to the input stream. */
472#define yyless(n) \
473 do \
474 { \
475 /* Undo effects of setting up yytext. */ \
476 int yyless_macro_arg = (n); \
477 YY_LESS_LINENO(yyless_macro_arg);\
478 *yy_cp = (yy_hold_char); \
479 YY_RESTORE_YY_MORE_OFFSET \
480 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
481 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
482 } \
483 while ( 0 )
484#define unput(c) yyunput( c, (yytext_ptr) )
485
486#ifndef YY_STRUCT_YY_BUFFER_STATE
487#define YY_STRUCT_YY_BUFFER_STATE
488struct yy_buffer_state
489 {
490/* %if-c-only */
491 FILE *yy_input_file;
492/* %endif */
493
494/* %if-c++-only */
495/* %endif */
496
497 char *yy_ch_buf; /* input buffer */
498 char *yy_buf_pos; /* current position in input buffer */
499
500 /* Size of input buffer in bytes, not including room for EOB
501 * characters.
502 */
503 int yy_buf_size;
504
505 /* Number of characters read into yy_ch_buf, not including EOB
506 * characters.
507 */
508 int yy_n_chars;
509
510 /* Whether we "own" the buffer - i.e., we know we created it,
511 * and can realloc() it to grow it, and should free() it to
512 * delete it.
513 */
514 int yy_is_our_buffer;
515
516 /* Whether this is an "interactive" input source; if so, and
517 * if we're using stdio for input, then we want to use getc()
518 * instead of fread(), to make sure we stop fetching input after
519 * each newline.
520 */
521 int yy_is_interactive;
522
523 /* Whether we're considered to be at the beginning of a line.
524 * If so, '^' rules will be active on the next match, otherwise
525 * not.
526 */
527 int yy_at_bol;
528
529 int yy_bs_lineno; /**< The line count. */
530 int yy_bs_column; /**< The column count. */
531
532 /* Whether to try to fill the input buffer when we reach the
533 * end of it.
534 */
535 int yy_fill_buffer;
536
537 int yy_buffer_status;
538
539#define YY_BUFFER_NEW 0
540#define YY_BUFFER_NORMAL 1
541 /* When an EOF's been seen but there's still some text to process
542 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
543 * shouldn't try reading from the input source any more. We might
544 * still have a bunch of tokens to match, though, because of
545 * possible backing-up.
546 *
547 * When we actually see the EOF, we change the status to "new"
548 * (via yyrestart()), so that the user can continue scanning by
549 * just pointing yyin at a new input file.
550 */
551#define YY_BUFFER_EOF_PENDING 2
552
553 };
554#endif /* !YY_STRUCT_YY_BUFFER_STATE */
555
556/* %if-c-only Standard (non-C++) definition */
557/* %not-for-header */
558/* %if-not-reentrant */
559
560/* Stack of input buffers. */
561static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
562static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
563static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
564/* %endif */
565/* %ok-for-header */
566
567/* %endif */
568
569/* We provide macros for accessing buffer states in case in the
570 * future we want to put the buffer states in a more general
571 * "scanner state".
572 *
573 * Returns the top of the stack, or NULL.
574 */
575#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
576 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
577 : NULL)
578/* Same as previous macro, but useful when we know that the buffer stack is not
579 * NULL or when we need an lvalue. For internal use only.
580 */
581#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
582
583/* %if-c-only Standard (non-C++) definition */
584
585/* %if-not-reentrant */
586/* %not-for-header */
587/* yy_hold_char holds the character lost when yytext is formed. */
588static char yy_hold_char;
589static int yy_n_chars; /* number of characters read into yy_ch_buf */
590int yyleng;
591
592/* Points to current character in buffer. */
593static char *yy_c_buf_p = NULL;
594static int yy_init = 0; /* whether we need to initialize */
595static int yy_start = 0; /* start state number */
596
597/* Flag which is used to allow yywrap()'s to do buffer switches
598 * instead of setting up a fresh yyin. A bit of a hack ...
599 */
600static int yy_did_buffer_switch_on_eof;
601/* %ok-for-header */
602
603/* %endif */
604
605void yyrestart ( FILE *input_file );
606void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
607YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
608void yy_delete_buffer ( YY_BUFFER_STATE b );
609void yy_flush_buffer ( YY_BUFFER_STATE b );
610void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
611void yypop_buffer_state ( void );
612
613static void yyensure_buffer_stack ( void );
614static void yy_load_buffer_state ( void );
615static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
616#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
617
618YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
619YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
620YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
621
622/* %endif */
623
624void *yyalloc ( yy_size_t );
625void *yyrealloc ( void *, yy_size_t );
626void yyfree ( void * );
627
628#define yy_new_buffer yy_create_buffer
629#define yy_set_interactive(is_interactive) \
630 { \
631 if ( ! YY_CURRENT_BUFFER ){ \
632 yyensure_buffer_stack (); \
633 YY_CURRENT_BUFFER_LVALUE = \
634 yy_create_buffer( yyin, YY_BUF_SIZE ); \
635 } \
636 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
637 }
638#define yy_set_bol(at_bol) \
639 { \
640 if ( ! YY_CURRENT_BUFFER ){\
641 yyensure_buffer_stack (); \
642 YY_CURRENT_BUFFER_LVALUE = \
643 yy_create_buffer( yyin, YY_BUF_SIZE ); \
644 } \
645 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
646 }
647#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
648
649/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
650/* Begin user sect3 */
651
652#define gram_wrap() (/*CONSTCOND*/1)
653#define YY_SKIP_YYWRAP
654
655#define FLEX_DEBUG
656typedef flex_uint8_t YY_CHAR;
657
658FILE *yyin = NULL, *yyout = NULL;
659
660typedef int yy_state_type;
661
662extern int yylineno;
663int yylineno = 1;
664
665extern char *yytext;
666#ifdef yytext_ptr
667#undef yytext_ptr
668#endif
669#define yytext_ptr yytext
670
671/* %% [1.5] DFA */
672
673/* %if-c-only Standard (non-C++) definition */
674
675static yy_state_type yy_get_previous_state ( void );
676static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
677static int yy_get_next_buffer ( void );
678static void yynoreturn yy_fatal_error ( const char* msg );
679
680/* %endif */
681
682/* Done after the current pattern has been matched and before the
683 * corresponding action - sets up yytext.
684 */
685#define YY_DO_BEFORE_ACTION \
686 (yytext_ptr) = yy_bp; \
687/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
688 yyleng = (int) (yy_cp - yy_bp); \
689 (yy_hold_char) = *yy_cp; \
690 *yy_cp = '\0'; \
691/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
692 (yy_c_buf_p) = yy_cp;
693/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
694#define YY_NUM_RULES 128
695#define YY_END_OF_BUFFER 129
696/* This struct is not used in this scanner,
697 but its presence is necessary. */
698struct yy_trans_info
699 {
700 flex_int32_t yy_verify;
701 flex_int32_t yy_nxt;
702 };
703static const flex_int16_t yy_accept[584] =
704 { 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 92, 92, 112, 112, 112, 112, 0, 0,
708 0, 0, 129, 79, 2, 2, 70, 79, 69, 79,
709 1, 65, 79, 66, 66, 61, 64, 76, 62, 65,
710 78, 72, 63, 79, 89, 89, 127, 127, 94, 93,
711 127, 127, 127, 127, 127, 127, 127, 127, 80, 96,
712 95, 83, 2, 1, 83, 82, 81, 83, 98, 98,
713 99, 97, 80, 118, 127, 117, 127, 127, 127, 121,
714 124, 125, 127, 91, 127, 116, 115, 127, 114, 113,
715
716 86, 2, 1, 84, 86, 86, 85, 86, 87, 2,
717 1, 87, 87, 79, 77, 60, 0, 60, 60, 60,
718 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
719 60, 60, 60, 60, 60, 71, 65, 65, 4, 3,
720 68, 66, 68, 0, 75, 0, 88, 111, 109, 100,
721 111, 102, 103, 104, 105, 106, 107, 111, 108, 111,
722 127, 0, 0, 0, 0, 0, 0, 98, 98, 99,
723 126, 119, 120, 0, 122, 0, 121, 123, 0, 90,
724 0, 0, 92, 112, 112, 112, 112, 86, 84, 60,
725 0, 73, 60, 60, 60, 60, 60, 60, 60, 60,
726
727 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
728 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
729 60, 60, 60, 3, 68, 67, 74, 0, 100, 0,
730 0, 101, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0, 60, 60,
732 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
733 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
734 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
735 60, 60, 60, 60, 60, 60, 0, 100, 0, 0,
736 60, 7, 60, 60, 60, 60, 60, 60, 60, 60,
737
738 60, 60, 60, 60, 60, 22, 60, 60, 60, 60,
739 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
740 34, 60, 60, 60, 60, 60, 60, 41, 60, 44,
741 60, 60, 47, 0, 0, 0, 60, 8, 60, 60,
742 60, 13, 14, 60, 60, 60, 60, 60, 60, 60,
743 60, 60, 25, 60, 60, 60, 60, 60, 60, 60,
744 30, 60, 32, 60, 60, 60, 60, 60, 38, 60,
745 40, 42, 45, 60, 0, 0, 110, 6, 60, 10,
746 60, 60, 60, 15, 60, 60, 60, 60, 60, 60,
747 60, 60, 60, 60, 60, 60, 60, 60, 60, 31,
748
749 60, 60, 60, 60, 60, 60, 60, 60, 60, 0,
750 60, 11, 60, 60, 60, 60, 60, 60, 60, 60,
751 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
752 60, 60, 0, 58, 60, 60, 36, 60, 37, 60,
753 60, 60, 46, 5, 0, 60, 60, 60, 60, 60,
754 60, 60, 60, 60, 60, 60, 60, 21, 60, 60,
755 60, 60, 27, 60, 57, 28, 60, 60, 60, 60,
756 39, 60, 60, 0, 60, 60, 60, 60, 60, 16,
757 53, 60, 60, 60, 60, 60, 23, 24, 60, 60,
758 60, 60, 60, 60, 60, 60, 60, 0, 0, 60,
759
760 60, 12, 60, 60, 60, 60, 60, 20, 60, 60,
761 60, 60, 60, 60, 35, 60, 60, 60, 60, 60,
762 60, 60, 17, 60, 60, 60, 50, 60, 60, 60,
763 33, 48, 43, 59, 9, 51, 60, 60, 0, 54,
764 60, 60, 60, 50, 50, 60, 60, 60, 49, 52,
765 60, 60, 60, 50, 60, 60, 60, 60, 60, 19,
766 60, 60, 60, 60, 60, 26, 56, 60, 60, 60,
767 60, 60, 60, 60, 18, 55, 60, 60, 60, 60,
768 60, 29, 0
769 } ;
770
771static const YY_CHAR yy_ec[256] =
772 { 0,
773 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
774 4, 4, 5, 1, 1, 1, 1, 1, 1, 1,
775 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
776 1, 6, 7, 8, 9, 7, 10, 7, 11, 7,
777 7, 12, 7, 13, 14, 15, 16, 17, 18, 18,
778 18, 18, 18, 18, 18, 19, 19, 20, 21, 22,
779 23, 24, 25, 26, 27, 27, 27, 27, 27, 27,
780 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
781 28, 28, 28, 28, 29, 28, 28, 30, 28, 28,
782 31, 32, 33, 26, 34, 26, 35, 36, 37, 38,
783
784 39, 40, 41, 42, 43, 28, 44, 45, 46, 47,
785 48, 49, 50, 51, 52, 53, 54, 55, 28, 56,
786 57, 28, 58, 59, 60, 26, 61, 62, 62, 62,
787 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
788 62, 62, 62, 63, 63, 63, 63, 63, 63, 63,
789 63, 63, 63, 63, 63, 63, 63, 63, 63, 64,
790 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
791 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
792 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
793 64, 1, 1, 65, 65, 65, 65, 65, 65, 65,
794
795 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
796 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
797 65, 65, 65, 66, 67, 67, 67, 67, 67, 67,
798 67, 67, 67, 67, 67, 67, 68, 67, 67, 69,
799 70, 70, 70, 71, 1, 1, 1, 1, 1, 1,
800 1, 1, 1, 1, 1
801 } ;
802
803static const YY_CHAR yy_meta[73] =
804 { 0,
805 1, 2, 3, 2, 1, 2, 1, 4, 1, 4,
806 4, 4, 4, 5, 6, 2, 7, 7, 7, 8,
807 9, 10, 9, 10, 8, 8, 7, 7, 7, 7,
808 11, 8, 12, 7, 7, 7, 7, 7, 7, 7,
809 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
810 7, 7, 7, 7, 7, 7, 7, 9, 9, 9,
811 8, 8, 8, 8, 1, 1, 1, 1, 1, 1,
812 1, 8
813 } ;
814
815static const flex_int16_t yy_base[602] =
816 { 0,
817 0, 1284, 1280, 1279, 72, 144, 71, 75, 85, 90,
818 93, 98, 146, 150, 161, 220, 188, 221, 240, 255,
819 232, 267, 87, 123, 195, 251, 265, 278, 350, 1281,
820 184, 305, 1289, 0, 1294, 1294, 1294, 413, 1294, 1294,
821 1294, 471, 65, 527, 106, 0, 1294, 73, 1294, 0,
822 1294, 1294, 1294, 1243, 1294, 1271, 1294, 1294, 1294, 1294,
823 576, 65, 1222, 111, 46, 0, 117, 1223, 1294, 1294,
824 1294, 1294, 1294, 1294, 102, 1294, 1294, 1239, 1269, 170,
825 1260, 1294, 1267, 1294, 1220, 1294, 229, 193, 274, 1294,
826 1294, 1294, 68, 1294, 299, 1294, 1294, 545, 1294, 1294,
827
828 0, 1294, 0, 0, 134, 1294, 1294, 1234, 1294, 1294,
829 1294, 151, 1233, 0, 1294, 0, 423, 1234, 1228, 153,
830 239, 1232, 1229, 1226, 199, 1233, 281, 1217, 282, 146,
831 58, 283, 1223, 1230, 1233, 1294, 0, 0, 1294, 0,
832 0, 307, 535, 1243, 1294, 1223, 1294, 1294, 1294, 302,
833 601, 1294, 1294, 1294, 1294, 1294, 1294, 607, 1294, 631,
834 1294, 279, 282, 285, 368, 371, 382, 1251, 225, 1242,
835 1294, 1294, 1294, 471, 1294, 557, 1294, 1294, 562, 1294,
836 576, 586, 1231, 1294, 593, 1230, 600, 0, 0, 0,
837 649, 1294, 1214, 1222, 443, 1208, 1209, 1206, 1207, 201,
838
839 1204, 1211, 1206, 529, 1215, 1200, 1204, 640, 1210, 1195,
840 1196, 289, 1195, 1195, 1203, 1204, 1207, 1190, 1196, 1190,
841 1195, 1186, 1199, 0, 0, 0, 1294, 1188, 419, 645,
842 659, 673, 430, 467, 551, 699, 702, 713, 250, 718,
843 713, 723, 575, 734, 740, 745, 750, 223, 1199, 1194,
844 1178, 295, 1178, 1191, 1176, 1180, 1188, 1187, 1186, 1210,
845 1170, 1181, 1168, 1206, 1184, 1177, 1178, 572, 694, 253,
846 1165, 1166, 78, 1177, 1166, 1173, 1157, 1168, 1164, 1157,
847 1161, 1167, 1166, 1156, 1167, 1165, 1162, 1294, 740, 746,
848 1149, 0, 1158, 1144, 1150, 1145, 1158, 1137, 1142, 1155,
849
850 1177, 1152, 1140, 1145, 1133, 0, 1137, 1132, 1145, 468,
851 1144, 1139, 1142, 1137, 1127, 1139, 1131, 1122, 1129, 1135,
852 1134, 1119, 542, 1128, 1117, 1130, 1115, 0, 1120, 0,
853 1119, 1117, 0, 1158, 770, 776, 1106, 0, 1117, 1122,
854 1106, 0, 0, 645, 1106, 1109, 659, 1122, 1121, 1120,
855 1119, 1110, 0, 1103, 1111, 1103, 1109, 1101, 1095, 1093,
856 0, 1092, 0, 1130, 1105, 1103, 1092, 1089, 0, 1086,
857 0, 716, 0, 1086, 743, 800, 1294, 0, 1084, 1084,
858 1098, 1079, 1078, 756, 1081, 1083, 1082, 1078, 1083, 1086,
859 1075, 1077, 1073, 1088, 1083, 1086, 1081, 1071, 1079, 818,
860
861 1068, 1077, 1064, 1079, 1074, 1064, 1058, 1057, 1070, 825,
862 757, 0, 1055, 1068, 1067, 1054, 1053, 1064, 1048, 1047,
863 1048, 1085, 1059, 1062, 1049, 1056, 1040, 1041, 1038, 1039,
864 1053, 1038, 843, 1294, 1053, 1040, 0, 1035, 0, 1038,
865 1049, 1048, 0, 1294, 1074, 1032, 1031, 1031, 1027, 1026,
866 1025, 1024, 1034, 1020, 1019, 1023, 1012, 0, 988, 981,
867 990, 984, 0, 970, 0, 0, 935, 929, 942, 925,
868 0, 938, 937, 964, 858, 857, 856, 870, 869, 0,
869 0, 861, 854, 853, 850, 863, 0, 0, 856, 833,
870 832, 841, 848, 842, 841, 834, 833, 868, 547, 836,
871
872 835, 0, 825, 823, 814, 815, 780, 0, 780, 776,
873 758, 816, 782, 780, 0, 774, 765, 757, 737, 732,
874 716, 714, 849, 702, 688, 690, 854, 682, 679, 663,
875 0, 0, 0, 0, 0, 0, 665, 650, 859, 1294,
876 853, 854, 640, 887, 796, 624, 614, 609, 0, 0,
877 620, 617, 609, 892, 596, 594, 569, 578, 566, 0,
878 563, 561, 543, 536, 522, 0, 0, 521, 448, 445,
879 425, 372, 283, 245, 0, 0, 234, 150, 116, 112,
880 81, 0, 1294, 910, 922, 934, 946, 958, 970, 977,
881 980, 987, 993, 1005, 1017, 1027, 1034, 1037, 1044, 1052,
882
883 1059
884 } ;
885
886static const flex_int16_t yy_def[602] =
887 { 0,
888 583, 1, 584, 584, 585, 585, 6, 6, 586, 586,
889 587, 587, 6, 6, 6, 6, 6, 6, 6, 6,
890 6, 6, 6, 6, 6, 6, 6, 6, 583, 29,
891 588, 588, 583, 589, 583, 583, 583, 583, 583, 583,
892 583, 583, 583, 590, 590, 589, 583, 583, 583, 591,
893 583, 583, 583, 589, 583, 583, 583, 583, 583, 583,
894 592, 583, 583, 583, 583, 593, 583, 583, 583, 583,
895 583, 583, 583, 583, 583, 583, 583, 583, 594, 594,
896 583, 583, 594, 583, 583, 583, 583, 583, 583, 583,
897 583, 583, 583, 583, 583, 583, 583, 595, 583, 583,
898
899 596, 583, 596, 597, 583, 583, 583, 596, 583, 583,
900 583, 583, 583, 589, 583, 598, 583, 598, 598, 598,
901 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
902 598, 598, 598, 598, 598, 583, 42, 591, 583, 599,
903 600, 590, 600, 583, 583, 583, 583, 583, 583, 583,
904 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
905 583, 583, 583, 583, 583, 583, 583, 594, 594, 583,
906 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
907 583, 583, 583, 583, 583, 583, 583, 596, 597, 598,
908 583, 583, 598, 598, 598, 598, 598, 598, 598, 598,
909
910 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
911 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
912 598, 598, 598, 599, 600, 143, 583, 583, 583, 583,
913 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
914 583, 583, 583, 583, 583, 583, 583, 595, 598, 598,
915 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
916 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
917 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
918 598, 598, 598, 598, 598, 598, 583, 583, 583, 583,
919 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
920
921 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
922 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
923 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
924 598, 598, 598, 583, 583, 583, 598, 598, 598, 598,
925 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
926 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
927 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
928 598, 598, 598, 598, 583, 583, 583, 598, 598, 598,
929 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
930 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
931
932 598, 598, 598, 598, 598, 598, 598, 598, 598, 583,
933 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
934 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
935 598, 598, 583, 583, 598, 598, 598, 598, 598, 598,
936 598, 598, 598, 583, 583, 598, 598, 598, 598, 598,
937 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
938 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
939 598, 598, 598, 601, 598, 598, 598, 598, 598, 598,
940 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
941 598, 598, 598, 598, 598, 598, 598, 601, 601, 598,
942
943 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
944 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
945 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
946 598, 598, 598, 598, 598, 598, 598, 598, 583, 583,
947 598, 598, 598, 583, 583, 598, 598, 598, 598, 598,
948 598, 598, 598, 583, 598, 598, 598, 598, 598, 598,
949 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
950 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
951 598, 598, 0, 583, 583, 583, 583, 583, 583, 583,
952 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
953
954 583
955 } ;
956
957static const flex_int16_t yy_nxt[1367] =
958 { 0,
959 34, 35, 36, 35, 34, 35, 34, 37, 34, 38,
960 39, 40, 41, 34, 42, 43, 44, 45, 45, 46,
961 47, 48, 49, 40, 34, 34, 50, 50, 50, 50,
962 51, 34, 34, 50, 50, 50, 50, 50, 50, 50,
963 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
964 50, 50, 50, 50, 50, 50, 50, 52, 53, 40,
965 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
966 34, 34, 57, 70, 59, 57, 139, 70, 58, 60,
967 140, 71, 58, 180, 144, 71, 73, 36, 73, 94,
968 73, 73, 36, 73, 58, 73, 145, 74, 78, 181,
969
970 75, 216, 74, 61, 76, 75, 80, 164, 164, 76,
971 217, 80, 319, 139, 81, 77, 82, 140, 95, 81,
972 77, 82, 142, 142, 142, 94, 161, 161, 161, 320,
973 58, 582, 57, 57, 57, 57, 62, 63, 64, 65,
974 66, 67, 68, 69, 57, 139, 59, 57, 57, 140,
975 581, 60, 57, 84, 95, 85, 86, 84, 57, 85,
976 86, 87, 139, 57, 83, 87, 140, 580, 84, 83,
977 88, 86, 163, 163, 163, 61, 87, 58, 166, 166,
978 166, 58, 89, 169, 214, 110, 36, 110, 215, 110,
979 57, 195, 58, 168, 57, 84, 111, 96, 86, 112,
980
981 579, 196, 97, 87, 57, 57, 57, 57, 62, 63,
982 64, 65, 66, 67, 68, 69, 175, 57, 90, 58,
983 91, 57, 57, 57, 176, 583, 98, 84, 84, 88,
984 86, 86, 57, 203, 57, 87, 87, 204, 169, 58,
985 172, 89, 57, 93, 173, 258, 205, 84, 168, 88,
986 86, 58, 58, 96, 187, 87, 259, 57, 97, 57,
987 174, 89, 84, 58, 88, 86, 57, 99, 578, 57,
988 87, 58, 58, 175, 58, 100, 89, 90, 93, 91,
989 99, 176, 98, 177, 197, 58, 58, 315, 100, 198,
990 316, 57, 57, 577, 199, 178, 98, 90, 58, 92,
991
992 182, 183, 182, 57, 182, 179, 110, 36, 110, 98,
993 110, 57, 90, 113, 92, 207, 211, 111, 229, 229,
994 112, 218, 57, 142, 142, 142, 57, 274, 208, 294,
995 219, 275, 212, 209, 576, 213, 57, 295, 57, 220,
996 161, 161, 161, 161, 161, 161, 161, 161, 161, 57,
997 101, 102, 36, 102, 101, 102, 101, 101, 101, 101,
998 101, 101, 103, 101, 104, 105, 106, 106, 106, 101,
999 101, 101, 101, 101, 101, 101, 104, 104, 104, 104,
1000 101, 101, 107, 104, 104, 104, 104, 104, 104, 104,
1001 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1002
1003 104, 104, 104, 104, 104, 104, 104, 101, 101, 101,
1004 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1005 101, 101, 115, 575, 191, 191, 191, 116, 191, 233,
1006 233, 233, 234, 234, 234, 288, 288, 117, 574, 116,
1007 116, 116, 116, 235, 235, 235, 116, 116, 118, 119,
1008 120, 121, 122, 123, 116, 124, 116, 125, 126, 127,
1009 128, 129, 116, 130, 131, 132, 133, 134, 116, 135,
1010 136, 114, 236, 237, 236, 114, 236, 114, 251, 114,
1011 192, 354, 252, 573, 137, 137, 572, 138, 138, 138,
1012 114, 161, 161, 161, 253, 114, 114, 138, 138, 138,
1013
1014 138, 354, 114, 114, 138, 138, 138, 138, 138, 138,
1015 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1016 138, 138, 138, 138, 138, 138, 138, 138, 161, 161,
1017 161, 114, 114, 114, 114, 114, 114, 114, 114, 114,
1018 114, 114, 114, 142, 142, 142, 185, 186, 185, 444,
1019 185, 226, 226, 226, 499, 367, 143, 571, 238, 239,
1020 238, 226, 238, 240, 241, 240, 570, 240, 263, 226,
1021 226, 226, 226, 226, 226, 367, 187, 242, 243, 242,
1022 569, 242, 143, 149, 264, 568, 149, 182, 183, 182,
1023 180, 182, 150, 150, 245, 186, 245, 567, 245, 566,
1024
1025 149, 247, 248, 247, 151, 247, 181, 149, 565, 311,
1026 152, 153, 161, 161, 161, 154, 312, 230, 230, 230,
1027 564, 563, 155, 231, 231, 231, 156, 230, 157, 158,
1028 159, 160, 562, 231, 561, 230, 230, 230, 230, 230,
1029 230, 231, 231, 231, 231, 231, 231, 232, 232, 232,
1030 191, 191, 191, 268, 191, 560, 559, 232, 382, 558,
1031 557, 289, 289, 289, 556, 232, 232, 232, 232, 232,
1032 232, 289, 386, 269, 555, 290, 290, 290, 383, 289,
1033 289, 289, 289, 289, 289, 290, 270, 553, 550, 232,
1034 232, 232, 387, 290, 290, 290, 290, 290, 290, 232,
1035
1036 236, 237, 236, 549, 236, 548, 192, 232, 232, 232,
1037 232, 232, 232, 172, 238, 239, 238, 173, 238, 240,
1038 241, 240, 177, 240, 242, 243, 242, 547, 242, 407,
1039 546, 313, 543, 174, 178, 182, 183, 182, 314, 182,
1040 542, 245, 186, 245, 179, 245, 245, 186, 245, 408,
1041 245, 247, 248, 247, 541, 247, 335, 335, 335, 410,
1042 410, 410, 336, 336, 336, 538, 335, 537, 536, 416,
1043 446, 528, 336, 535, 335, 335, 335, 335, 335, 335,
1044 336, 336, 336, 336, 336, 336, 376, 376, 376, 417,
1045 447, 529, 377, 377, 377, 534, 376, 554, 554, 554,
1046
1047 554, 554, 377, 533, 376, 376, 376, 376, 376, 376,
1048 377, 377, 377, 377, 377, 377, 231, 231, 231, 433,
1049 433, 433, 433, 433, 532, 531, 231, 444, 530, 529,
1050 445, 527, 526, 525, 231, 231, 231, 231, 231, 231,
1051 434, 410, 410, 410, 433, 433, 433, 433, 433, 529,
1052 539, 539, 539, 539, 539, 544, 544, 544, 544, 544,
1053 539, 539, 539, 539, 539, 434, 551, 552, 524, 523,
1054 522, 540, 521, 520, 519, 499, 545, 518, 517, 516,
1055 515, 540, 514, 513, 512, 511, 552, 552, 544, 544,
1056 544, 544, 544, 554, 554, 554, 554, 554, 510, 509,
1057
1058 508, 507, 506, 505, 504, 503, 502, 501, 500, 545,
1059 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
1060 55, 55, 58, 58, 58, 58, 58, 58, 58, 58,
1061 58, 58, 58, 58, 72, 72, 72, 72, 72, 72,
1062 72, 72, 72, 72, 72, 72, 79, 79, 79, 79,
1063 79, 79, 79, 79, 79, 79, 79, 79, 109, 109,
1064 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1065 114, 499, 497, 496, 114, 114, 495, 114, 494, 493,
1066 492, 114, 141, 141, 138, 138, 138, 148, 148, 148,
1067 148, 148, 148, 148, 148, 148, 148, 148, 148, 165,
1068
1069 165, 165, 165, 165, 165, 168, 168, 168, 168, 168,
1070 168, 168, 168, 168, 491, 168, 168, 184, 184, 184,
1071 184, 184, 184, 184, 184, 184, 184, 188, 490, 489,
1072 188, 188, 488, 487, 188, 188, 188, 188, 189, 189,
1073 189, 190, 190, 190, 224, 224, 486, 224, 224, 224,
1074 224, 224, 224, 224, 224, 224, 225, 225, 225, 498,
1075 498, 485, 498, 498, 498, 498, 498, 498, 498, 498,
1076 498, 484, 483, 482, 481, 480, 479, 478, 477, 476,
1077 475, 474, 473, 472, 471, 470, 469, 468, 467, 466,
1078 465, 464, 463, 462, 461, 460, 459, 458, 457, 456,
1079
1080 455, 454, 453, 452, 451, 450, 449, 448, 443, 442,
1081 441, 440, 439, 438, 437, 436, 435, 432, 431, 430,
1082 429, 428, 427, 426, 425, 424, 423, 422, 421, 420,
1083 419, 418, 415, 414, 413, 412, 411, 409, 406, 405,
1084 404, 403, 402, 401, 400, 399, 398, 397, 396, 395,
1085 394, 393, 392, 391, 390, 389, 388, 385, 384, 381,
1086 380, 379, 378, 375, 374, 373, 372, 371, 370, 369,
1087 368, 366, 365, 364, 363, 362, 361, 360, 359, 358,
1088 357, 356, 355, 353, 352, 351, 350, 349, 348, 347,
1089 346, 345, 344, 343, 342, 341, 340, 339, 338, 337,
1090
1091 334, 333, 332, 331, 330, 329, 328, 327, 326, 325,
1092 324, 323, 322, 321, 318, 317, 310, 309, 308, 307,
1093 306, 305, 304, 303, 302, 301, 300, 299, 298, 297,
1094 296, 293, 292, 291, 287, 286, 285, 284, 283, 282,
1095 281, 280, 279, 278, 277, 276, 273, 272, 271, 267,
1096 266, 265, 262, 261, 260, 257, 256, 255, 254, 250,
1097 249, 246, 244, 170, 169, 228, 227, 223, 222, 221,
1098 210, 206, 202, 201, 200, 194, 193, 146, 146, 171,
1099 169, 170, 169, 146, 167, 162, 147, 146, 583, 108,
1100 56, 56, 54, 33, 583, 583, 583, 583, 583, 583,
1101
1102 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1103 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1104 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1105 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1106 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1107 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1108 583, 583, 583, 583, 583, 583
1109 } ;
1110
1111static const flex_int16_t yy_chk[1367] =
1112 { 0,
1113 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1114 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1115 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1116 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1117 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1118 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1119 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1120 1, 1, 5, 7, 5, 5, 43, 8, 7, 5,
1121 43, 7, 8, 93, 48, 8, 9, 9, 9, 23,
1122 9, 10, 10, 10, 23, 10, 48, 9, 10, 93,
1123
1124 9, 131, 10, 5, 9, 10, 11, 65, 65, 10,
1125 131, 12, 273, 75, 11, 9, 11, 75, 23, 12,
1126 10, 12, 45, 45, 45, 24, 62, 62, 62, 273,
1127 24, 581, 5, 5, 5, 5, 5, 5, 5, 5,
1128 5, 5, 5, 5, 6, 105, 6, 6, 13, 105,
1129 580, 6, 14, 13, 24, 13, 13, 14, 23, 14,
1130 14, 13, 112, 15, 11, 14, 112, 579, 15, 12,
1131 15, 15, 64, 64, 64, 6, 15, 13, 67, 67,
1132 67, 14, 15, 80, 130, 31, 31, 31, 130, 31,
1133 17, 120, 15, 80, 24, 17, 31, 25, 17, 31,
1134
1135 578, 120, 25, 17, 6, 6, 6, 6, 6, 6,
1136 6, 6, 6, 6, 6, 6, 88, 13, 15, 17,
1137 15, 14, 16, 18, 88, 248, 25, 16, 18, 16,
1138 16, 18, 15, 125, 21, 16, 18, 125, 169, 21,
1139 87, 16, 19, 21, 87, 200, 125, 19, 169, 19,
1140 19, 16, 18, 26, 248, 19, 200, 20, 26, 17,
1141 87, 19, 20, 21, 20, 20, 25, 27, 577, 22,
1142 20, 19, 27, 239, 22, 27, 20, 16, 22, 16,
1143 28, 239, 26, 89, 121, 28, 20, 270, 28, 121,
1144 270, 16, 18, 574, 121, 89, 27, 19, 22, 19,
1145
1146 95, 95, 95, 21, 95, 89, 32, 32, 32, 28,
1147 32, 19, 20, 32, 20, 127, 129, 32, 150, 150,
1148 32, 132, 26, 142, 142, 142, 20, 212, 127, 252,
1149 132, 212, 129, 127, 573, 129, 27, 252, 22, 132,
1150 162, 162, 162, 163, 163, 163, 164, 164, 164, 28,
1151 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1152 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1153 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1154 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1155 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1156
1157 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1158 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1159 29, 29, 38, 572, 117, 117, 117, 38, 117, 165,
1160 165, 165, 166, 166, 166, 229, 229, 38, 571, 38,
1161 38, 38, 38, 167, 167, 167, 38, 38, 38, 38,
1162 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
1163 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
1164 38, 42, 174, 174, 174, 42, 174, 42, 195, 42,
1165 117, 310, 195, 570, 42, 42, 569, 42, 42, 42,
1166 42, 233, 233, 233, 195, 42, 42, 42, 42, 42,
1167
1168 42, 310, 42, 42, 42, 42, 42, 42, 42, 42,
1169 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
1170 42, 42, 42, 42, 42, 42, 42, 42, 234, 234,
1171 234, 42, 42, 42, 42, 42, 42, 42, 42, 42,
1172 42, 42, 42, 44, 44, 44, 98, 98, 98, 499,
1173 98, 143, 143, 143, 499, 323, 44, 568, 176, 176,
1174 176, 143, 176, 179, 179, 179, 565, 179, 204, 143,
1175 143, 143, 143, 143, 143, 323, 98, 181, 181, 181,
1176 564, 181, 44, 61, 204, 563, 61, 182, 182, 182,
1177 243, 182, 61, 61, 185, 185, 185, 562, 185, 561,
1178
1179 61, 187, 187, 187, 61, 187, 243, 61, 559, 268,
1180 61, 61, 235, 235, 235, 61, 268, 151, 151, 151,
1181 558, 557, 61, 158, 158, 158, 61, 151, 61, 61,
1182 61, 61, 556, 158, 555, 151, 151, 151, 151, 151,
1183 151, 158, 158, 158, 158, 158, 158, 160, 160, 160,
1184 191, 191, 191, 208, 191, 553, 552, 160, 344, 551,
1185 548, 230, 230, 230, 547, 160, 160, 160, 160, 160,
1186 160, 230, 347, 208, 546, 231, 231, 231, 344, 230,
1187 230, 230, 230, 230, 230, 231, 208, 543, 538, 232,
1188 232, 232, 347, 231, 231, 231, 231, 231, 231, 232,
1189
1190 236, 236, 236, 537, 236, 530, 191, 232, 232, 232,
1191 232, 232, 232, 237, 238, 238, 238, 237, 238, 240,
1192 240, 240, 241, 240, 242, 242, 242, 529, 242, 372,
1193 528, 269, 526, 237, 241, 244, 244, 244, 269, 244,
1194 525, 245, 245, 245, 241, 245, 246, 246, 246, 372,
1195 246, 247, 247, 247, 524, 247, 289, 289, 289, 375,
1196 375, 375, 290, 290, 290, 522, 289, 521, 520, 384,
1197 411, 511, 290, 519, 289, 289, 289, 289, 289, 289,
1198 290, 290, 290, 290, 290, 290, 335, 335, 335, 384,
1199 411, 511, 336, 336, 336, 518, 335, 545, 545, 545,
1200
1201 545, 545, 336, 517, 335, 335, 335, 335, 335, 335,
1202 336, 336, 336, 336, 336, 336, 376, 376, 376, 400,
1203 400, 400, 400, 400, 516, 514, 376, 410, 513, 512,
1204 410, 510, 509, 507, 376, 376, 376, 376, 376, 376,
1205 400, 410, 410, 410, 433, 433, 433, 433, 433, 512,
1206 523, 523, 523, 523, 523, 527, 527, 527, 527, 527,
1207 539, 539, 539, 539, 539, 433, 541, 542, 506, 505,
1208 504, 523, 503, 501, 500, 498, 527, 497, 496, 495,
1209 494, 539, 493, 492, 491, 490, 541, 542, 544, 544,
1210 544, 544, 544, 554, 554, 554, 554, 554, 489, 486,
1211
1212 485, 484, 483, 482, 479, 478, 477, 476, 475, 544,
1213 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
1214 584, 584, 585, 585, 585, 585, 585, 585, 585, 585,
1215 585, 585, 585, 585, 586, 586, 586, 586, 586, 586,
1216 586, 586, 586, 586, 586, 586, 587, 587, 587, 587,
1217 587, 587, 587, 587, 587, 587, 587, 587, 588, 588,
1218 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
1219 589, 474, 473, 472, 589, 589, 470, 589, 469, 468,
1220 467, 589, 590, 590, 591, 591, 591, 592, 592, 592,
1221 592, 592, 592, 592, 592, 592, 592, 592, 592, 593,
1222
1223 593, 593, 593, 593, 593, 594, 594, 594, 594, 594,
1224 594, 594, 594, 594, 464, 594, 594, 595, 595, 595,
1225 595, 595, 595, 595, 595, 595, 595, 596, 462, 461,
1226 596, 596, 460, 459, 596, 596, 596, 596, 597, 597,
1227 597, 598, 598, 598, 599, 599, 457, 599, 599, 599,
1228 599, 599, 599, 599, 599, 599, 600, 600, 600, 601,
1229 601, 456, 601, 601, 601, 601, 601, 601, 601, 601,
1230 601, 455, 454, 453, 452, 451, 450, 449, 448, 447,
1231 446, 445, 442, 441, 440, 438, 436, 435, 432, 431,
1232 430, 429, 428, 427, 426, 425, 424, 423, 422, 421,
1233
1234 420, 419, 418, 417, 416, 415, 414, 413, 409, 408,
1235 407, 406, 405, 404, 403, 402, 401, 399, 398, 397,
1236 396, 395, 394, 393, 392, 391, 390, 389, 388, 387,
1237 386, 385, 383, 382, 381, 380, 379, 374, 370, 368,
1238 367, 366, 365, 364, 362, 360, 359, 358, 357, 356,
1239 355, 354, 352, 351, 350, 349, 348, 346, 345, 341,
1240 340, 339, 337, 334, 332, 331, 329, 327, 326, 325,
1241 324, 322, 321, 320, 319, 318, 317, 316, 315, 314,
1242 313, 312, 311, 309, 308, 307, 305, 304, 303, 302,
1243 301, 300, 299, 298, 297, 296, 295, 294, 293, 291,
1244
1245 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
1246 277, 276, 275, 274, 272, 271, 267, 266, 265, 264,
1247 263, 262, 261, 260, 259, 258, 257, 256, 255, 254,
1248 253, 251, 250, 249, 228, 223, 222, 221, 220, 219,
1249 218, 217, 216, 215, 214, 213, 211, 210, 209, 207,
1250 206, 205, 203, 202, 201, 199, 198, 197, 196, 194,
1251 193, 186, 183, 170, 168, 146, 144, 135, 134, 133,
1252 128, 126, 124, 123, 122, 119, 118, 113, 108, 85,
1253 83, 81, 79, 78, 68, 63, 56, 54, 33, 30,
1254 4, 3, 2, 583, 583, 583, 583, 583, 583, 583,
1255
1256 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1257 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1258 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1259 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1260 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1261 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1262 583, 583, 583, 583, 583, 583
1263 } ;
1264
1265static yy_state_type yy_last_accepting_state;
1266static char *yy_last_accepting_cpos;
1267
1268extern int yy_flex_debug;
1269int yy_flex_debug = 1;
1270
1271static const flex_int16_t yy_rule_linenum[128] =
1272 { 0,
1273 194, 197, 198, 199, 207, 225, 226, 227, 228, 229,
1274 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1275 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
1276 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
1277 260, 261, 262, 263, 264, 265, 266, 270, 274, 278,
1278 281, 282, 283, 284, 285, 286, 287, 288, 289, 291,
1279 295, 296, 297, 298, 300, 307, 308, 312, 317, 320,
1280 323, 326, 334, 341, 342, 343, 349, 356, 363, 383,
1281 393, 408, 414, 433, 446, 462, 477, 494, 495, 506,
1282 517, 518, 530, 539, 549, 568, 580, 594, 595, 606,
1283
1284 616, 626, 627, 628, 629, 630, 631, 632, 635, 637,
1285 645, 663, 668, 669, 675, 676, 687, 693, 699, 705,
1286 721, 722, 726, 733, 749, 769, 808
1287 } ;
1288
1289/* The intent behind this definition is that it'll catch
1290 * any uses of REJECT which flex missed.
1291 */
1292#define REJECT reject_used_but_not_detected
1293#define yymore() yymore_used_but_not_detected
1294#define YY_MORE_ADJ 0
1295#define YY_RESTORE_YY_MORE_OFFSET
1296char *yytext;
1297#line 1 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1298/* Bison Grammar Scanner -*- C -*-
1299
1300 Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
1301
1302 This file is part of Bison, the GNU Compiler Compiler.
1303
1304 This program is free software: you can redistribute it and/or modify
1305 it under the terms of the GNU General Public License as published by
1306 the Free Software Foundation, either version 3 of the License, or
1307 (at your option) any later version.
1308
1309 This program is distributed in the hope that it will be useful,
1310 but WITHOUT ANY WARRANTY; without even the implied warranty of
1311 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1312 GNU General Public License for more details.
1313
1314 You should have received a copy of the GNU General Public License
1315 along with this program. If not, see <http://www.gnu.org/licenses/>. */
1316#define YY_NO_INPUT 1
1317#line 24 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1318#include <c-ctype.h>
1319#include <mbswidth.h>
1320#include <quote.h>
1321#include <quotearg.h>
1322
1323#include <src/complain.h>
1324#include <src/files.h>
1325#include <src/getargs.h>
1326#include <src/gram.h>
1327#include <src/reader.h>
1328#include <src/scan-gram.h>
1329#include <src/uniqstr.h>
1330
1331#define FLEX_PREFIX(Id) gram_ ## Id
1332#include <src/flex-scanner.h>
1333
1334/* Work around a bug in flex 2.5.31. See Debian bug 333231
1335 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
1336#undef gram_wrap
1337#define gram_wrap() 1
1338
1339#define YY_DECL GRAM_LEX_DECL
1340
1341/* Location of scanner cursor. */
1342static boundary scanner_cursor;
1343
1344#define YY_USER_ACTION location_compute (loc, &scanner_cursor, yytext, yyleng);
1345
1346static size_t no_cr_read (FILE *, char *, size_t);
1347#define YY_INPUT(buf, result, size) ((result) = no_cr_read (yyin, buf, size))
1348
1349/* Report that yytext is an extension, and evaluate to its token type. */
1350#define BISON_DIRECTIVE(Directive) \
1351 (bison_directive (loc, yytext), PERCENT_ ## Directive)
1352
1353#define RETURN_PERCENT_PARAM(Value) \
1354 RETURN_VALUE(PERCENT_PARAM, param_ ## Value)
1355
1356#define RETURN_PERCENT_FLAG(Value) \
1357 RETURN_VALUE(PERCENT_FLAG, uniqstr_new (Value))
1358
1359#define RETURN_VALUE(Token, Value) \
1360 do { \
1361 val->Token = Value; \
1362 return Token; \
1363 } while (0)
1364
1365#define ROLLBACK_CURRENT_TOKEN \
1366 do { \
1367 scanner_cursor.column -= mbsnwidth (yytext, yyleng, 0); \
1368 scanner_cursor.byte -= yyleng; \
1369 yyless (0); \
1370 } while (0)
1371
1372#define DEPRECATED(Msg) \
1373 do { \
1374 deprecated_directive (loc, yytext, Msg); \
1375 scanner_cursor.column -= mbsnwidth (Msg, strlen (Msg), 0); \
1376 scanner_cursor.byte -= strlen (Msg); \
1377 for (size_t i = strlen (Msg); i != 0; --i) \
1378 unput (Msg[i - 1]); \
1379 } while (0)
1380
1381/* A string representing the most recently saved token. */
1382static char *last_string = NULL;
1383
1384/* Bracketed identifier. */
1385static uniqstr bracketed_id_str = NULL;
1386static location bracketed_id_loc;
1387static boundary bracketed_id_start;
1388static int bracketed_id_context_state = 0;
1389
1390void
1391gram_scanner_last_string_free (void)
1392{
1393 STRING_FREE;
1394}
1395
1396static void handle_syncline (char *, location);
1397static unsigned long scan_integer (char const *p, int base, location loc);
1398static int convert_ucn_to_byte (char const *hex_text);
1399static void unexpected_eof (boundary, char const *);
1400static void unexpected_newline (boundary, char const *);
1401
1402#line 1402 "src/scan-gram.c"
1403#line 110 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1404 /* A C-like comment in directives/rules. */
1405
1406 /* Strings and characters in directives/rules. */
1407
1408 /* A identifier was just read in directives/rules. Special state
1409 to capture the sequence 'identifier :'. */
1410
1411 /* POSIX says that a tag must be both an id and a C union member, but
1412 historically almost any character is allowed in a tag. We
1413 disallow NUL, as this simplifies our implementation. We match
1414 angle brackets in nested pairs: several languages use them for
1415 generics/template types. */
1416
1417 /* Four types of user code:
1418 - prologue (code between '%{' '%}' in the first section, before %%);
1419 - actions, printers, union, etc, (between braced in the middle section);
1420 - epilogue (everything after the second %%).
1421 - predicate (code between '%?{' and '{' in middle section); */
1422
1423 /* C and C++ comments in code. */
1424
1425 /* Strings and characters in code. */
1426
1427 /* Bracketed identifiers support. */
1428
1429 /* UTF-8 Encoded Unicode Code Point, from Flex's documentation. */
1430/* Zero or more instances of backslash-newline. Following GCC, allow
1431 white space between the backslash and the newline. */
1432/* An equal sign, with optional leading whitespaces. This is used in some
1433 deprecated constructs. */
1434#line 1434 "src/scan-gram.c"
1435
1436#define INITIAL 0
1437#define SC_YACC_COMMENT 1
1438#define SC_ESCAPED_STRING 2
1439#define SC_ESCAPED_CHARACTER 3
1440#define SC_AFTER_IDENTIFIER 4
1441#define SC_TAG 5
1442#define SC_PROLOGUE 6
1443#define SC_BRACED_CODE 7
1444#define SC_EPILOGUE 8
1445#define SC_PREDICATE 9
1446#define SC_COMMENT 10
1447#define SC_LINE_COMMENT 11
1448#define SC_STRING 12
1449#define SC_CHARACTER 13
1450#define SC_BRACKETED_ID 14
1451#define SC_RETURN_BRACKETED_ID 15
1452
1453#ifndef YY_NO_UNISTD_H
1454/* Special case for "unistd.h", since it is non-ANSI. We include it way
1455 * down here because we want the user's section 1 to have been scanned first.
1456 * The user has a chance to override it with an option.
1457 */
1458/* %if-c-only */
1459#include <unistd.h>
1460/* %endif */
1461/* %if-c++-only */
1462/* %endif */
1463#endif
1464
1465#ifndef YY_EXTRA_TYPE
1466#define YY_EXTRA_TYPE void *
1467#endif
1468
1469/* %if-c-only Reentrant structure and macros (non-C++). */
1470/* %if-reentrant */
1471/* %if-c-only */
1472
1473static int yy_init_globals ( void );
1474
1475/* %endif */
1476/* %if-reentrant */
1477/* %endif */
1478/* %endif End reentrant structures and macros. */
1479
1480/* Accessor methods to globals.
1481 These are made visible to non-reentrant scanners for convenience. */
1482
1483int yylex_destroy ( void );
1484
1485int yyget_debug ( void );
1486
1487void yyset_debug ( int debug_flag );
1488
1489YY_EXTRA_TYPE yyget_extra ( void );
1490
1491void yyset_extra ( YY_EXTRA_TYPE user_defined );
1492
1493FILE *yyget_in ( void );
1494
1495void yyset_in ( FILE * _in_str );
1496
1497FILE *yyget_out ( void );
1498
1499void yyset_out ( FILE * _out_str );
1500
1501 int yyget_leng ( void );
1502
1503char *yyget_text ( void );
1504
1505int yyget_lineno ( void );
1506
1507void yyset_lineno ( int _line_number );
1508
1509/* %if-bison-bridge */
1510/* %endif */
1511
1512/* Macros after this point can all be overridden by user definitions in
1513 * section 1.
1514 */
1515
1516#ifndef YY_SKIP_YYWRAP
1517#ifdef __cplusplus
1518extern "C" int yywrap ( void );
1519#else
1520extern int yywrap ( void );
1521#endif
1522#endif
1523
1524/* %not-for-header */
1525#ifndef YY_NO_UNPUT
1526
1527 static void yyunput ( int c, char *buf_ptr );
1528
1529#endif
1530/* %ok-for-header */
1531
1532/* %endif */
1533
1534#ifndef yytext_ptr
1535static void yy_flex_strncpy ( char *, const char *, int );
1536#endif
1537
1538#ifdef YY_NEED_STRLEN
1539static int yy_flex_strlen ( const char * );
1540#endif
1541
1542#ifndef YY_NO_INPUT
1543/* %if-c-only Standard (non-C++) definition */
1544/* %not-for-header */
1545#ifdef __cplusplus
1546static int yyinput ( void );
1547#else
1548static int input ( void );
1549#endif
1550/* %ok-for-header */
1551
1552/* %endif */
1553#endif
1554
1555/* %if-c-only */
1556
1557/* %endif */
1558
1559/* Amount of stuff to slurp up with each read. */
1560#ifndef YY_READ_BUF_SIZE
1561#ifdef __ia64__
1562/* On IA-64, the buffer size is 16k, not 8k */
1563#define YY_READ_BUF_SIZE 16384
1564#else
1565#define YY_READ_BUF_SIZE 8192
1566#endif /* __ia64__ */
1567#endif
1568
1569/* Copy whatever the last rule matched to the standard output. */
1570#ifndef ECHO
1571/* %if-c-only Standard (non-C++) definition */
1572/* This used to be an fputs(), but since the string might contain NUL's,
1573 * we now use fwrite().
1574 */
1575#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1576/* %endif */
1577/* %if-c++-only C++ definition */
1578/* %endif */
1579#endif
1580
1581/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1582 * is returned in "result".
1583 */
1584#ifndef YY_INPUT
1585#define YY_INPUT(buf,result,max_size) \
1586/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1587 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1588 { \
1589 int c = '*'; \
1590 int n; \
1591 for ( n = 0; n < max_size && \
1592 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1593 buf[n] = (char) c; \
1594 if ( c == '\n' ) \
1595 buf[n++] = (char) c; \
1596 if ( c == EOF && ferror( yyin ) ) \
1597 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1598 result = n; \
1599 } \
1600 else \
1601 { \
1602 errno=0; \
1603 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1604 { \
1605 if( errno != EINTR) \
1606 { \
1607 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1608 break; \
1609 } \
1610 errno=0; \
1611 clearerr(yyin); \
1612 } \
1613 }\
1614\
1615/* %if-c++-only C++ definition \ */\
1616/* %endif */
1617
1618#endif
1619
1620/* No semi-colon after return; correct usage is to write "yyterminate();" -
1621 * we don't want an extra ';' after the "return" because that will cause
1622 * some compilers to complain about unreachable statements.
1623 */
1624#ifndef yyterminate
1625#define yyterminate() return YY_NULL
1626#endif
1627
1628/* Number of entries by which start-condition stack grows. */
1629#ifndef YY_START_STACK_INCR
1630#define YY_START_STACK_INCR 25
1631#endif
1632
1633/* Report a fatal error. */
1634#ifndef YY_FATAL_ERROR
1635/* %if-c-only */
1636#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1637/* %endif */
1638/* %if-c++-only */
1639/* %endif */
1640#endif
1641
1642/* %if-tables-serialization structures and prototypes */
1643/* %not-for-header */
1644/* %ok-for-header */
1645
1646/* %not-for-header */
1647/* %tables-yydmap generated elements */
1648/* %endif */
1649/* end tables serialization structures and prototypes */
1650
1651/* %ok-for-header */
1652
1653/* Default declaration of generated scanner - a define so the user can
1654 * easily add parameters.
1655 */
1656#ifndef YY_DECL
1657#define YY_DECL_IS_OURS 1
1658/* %if-c-only Standard (non-C++) definition */
1659
1660extern int yylex (void);
1661
1662#define YY_DECL int yylex (void)
1663/* %endif */
1664/* %if-c++-only C++ definition */
1665/* %endif */
1666#endif /* !YY_DECL */
1667
1668/* Code executed at the beginning of each rule, after yytext and yyleng
1669 * have been set up.
1670 */
1671#ifndef YY_USER_ACTION
1672#define YY_USER_ACTION
1673#endif
1674
1675/* Code executed at the end of each rule. */
1676#ifndef YY_BREAK
1677#define YY_BREAK /*LINTED*/break;
1678#endif
1679
1680/* %% [6.0] YY_RULE_SETUP definition goes here */
1681#define YY_RULE_SETUP \
1682 if ( yyleng > 0 ) \
1683 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1684 (yytext[yyleng - 1] == '\n'); \
1685 YY_USER_ACTION
1686
1687/* %not-for-header */
1688/** The main scanner function which does all the work.
1689 */
1690YY_DECL
1691{
1692 yy_state_type yy_current_state;
1693 char *yy_cp, *yy_bp;
1694 int yy_act;
1695
1696 if ( !(yy_init) )
1697 {
1698 (yy_init) = 1;
1699
1700#ifdef YY_USER_INIT
1701 YY_USER_INIT;
1702#endif
1703
1704 if ( ! (yy_start) )
1705 (yy_start) = 1; /* first start state */
1706
1707 if ( ! yyin )
1708/* %if-c-only */
1709 yyin = stdin;
1710/* %endif */
1711/* %if-c++-only */
1712/* %endif */
1713
1714 if ( ! yyout )
1715/* %if-c-only */
1716 yyout = stdout;
1717/* %endif */
1718/* %if-c++-only */
1719/* %endif */
1720
1721 if ( ! YY_CURRENT_BUFFER ) {
1722 yyensure_buffer_stack ();
1723 YY_CURRENT_BUFFER_LVALUE =
1724 yy_create_buffer( yyin, YY_BUF_SIZE );
1725 }
1726
1727 yy_load_buffer_state( );
1728 }
1729
1730 {
1731/* %% [7.0] user's declarations go here */
1732#line 155 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1733
1734
1735 /* Nesting level. Either for nested braces, or nested angle brackets
1736 (but not mixed). */
1737 int nesting PACIFY_CC (= 0);
1738
1739 /* Parent context state, when applicable. */
1740 int context_state PACIFY_CC (= 0);
1741
1742 /* Location of most recent identifier, when applicable. */
1743 location id_loc PACIFY_CC (= empty_loc);
1744
1745 /* Where containing code started, when applicable. Its initial
1746 value is relevant only when yylex is invoked in the SC_EPILOGUE
1747 start condition. */
1748 boundary code_start = scanner_cursor;
1749
1750 /* Where containing comment or string or character literal started,
1751 when applicable. */
1752 boundary token_start PACIFY_CC (= scanner_cursor);
1753
1754 /* We cannot trust YY_USER_INIT, whose semantics changes over time
1755 (it moved in Flex 2.5.38). */
1756 static bool first = true;
1757 if (first)
1758 {
1759 scanner_cursor = loc->start;
1760 first = false;
1761 }
1762
1763
1764
1765 /*-----------------------.
1766 | Scanning white space. |
1767 `-----------------------*/
1768
1769#line 1769 "src/scan-gram.c"
1770
1771 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1772 {
1773/* %% [8.0] yymore()-related code goes here */
1774 yy_cp = (yy_c_buf_p);
1775
1776 /* Support of yytext. */
1777 *yy_cp = (yy_hold_char);
1778
1779 /* yy_bp points to the position in yy_ch_buf of the start of
1780 * the current run.
1781 */
1782 yy_bp = yy_cp;
1783
1784/* %% [9.0] code to set up and find next match goes here */
1785 yy_current_state = (yy_start);
1786 yy_current_state += YY_AT_BOL();
1787yy_match:
1788 do
1789 {
1790 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1791 if ( yy_accept[yy_current_state] )
1792 {
1793 (yy_last_accepting_state) = yy_current_state;
1794 (yy_last_accepting_cpos) = yy_cp;
1795 }
1796 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1797 {
1798 yy_current_state = (int) yy_def[yy_current_state];
1799 if ( yy_current_state >= 584 )
1800 yy_c = yy_meta[yy_c];
1801 }
1802 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1803 ++yy_cp;
1804 }
1805 while ( yy_current_state != 583 );
1806 yy_cp = (yy_last_accepting_cpos);
1807 yy_current_state = (yy_last_accepting_state);
1808
1809yy_find_action:
1810/* %% [10.0] code to find the action number goes here */
1811 yy_act = yy_accept[yy_current_state];
1812
1813 YY_DO_BEFORE_ACTION;
1814
1815/* %% [11.0] code for yylineno update goes here */
1816
1817do_action: /* This label is used only to access EOF actions. */
1818
1819/* %% [12.0] debug code goes here */
1820 if ( yy_flex_debug )
1821 {
1822 if ( yy_act == 0 )
1823 fprintf( stderr, "--scanner backing up\n" );
1824 else if ( yy_act < 128 )
1825 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1826 (long)yy_rule_linenum[yy_act], yytext );
1827 else if ( yy_act == 128 )
1828 fprintf( stderr, "--accepting default rule (\"%s\")\n",
1829 yytext );
1830 else if ( yy_act == 129 )
1831 fprintf( stderr, "--(end of buffer or a NUL)\n" );
1832 else
1833 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1834 }
1835
1836 switch ( yy_act )
1837 { /* beginning of action switch */
1838/* %% [13.0] actions go here */
1839 case 0: /* must back up */
1840 /* undo the effects of YY_DO_BEFORE_ACTION */
1841 *yy_cp = (yy_hold_char);
1842 yy_cp = (yy_last_accepting_cpos);
1843 yy_current_state = (yy_last_accepting_state);
1844 goto yy_find_action;
1845
1846/* Comments and white space. */
1847case 1:
1848YY_RULE_SETUP
1849#line 194 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1850{
1851 complain (loc, Wother, _("stray ',' treated as white space"));
1852 }
1853 YY_BREAK
1854case 2:
1855/* rule 2 can match eol */
1856#line 198 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1857case 3:
1858/* rule 3 can match eol */
1859YY_RULE_SETUP
1860#line 198 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1861continue;
1862 YY_BREAK
1863case 4:
1864YY_RULE_SETUP
1865#line 199 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1866{
1867 token_start = loc->start;
1868 context_state = YY_START;
1869 BEGIN SC_YACC_COMMENT;
1870 }
1871 YY_BREAK
1872/* #line directives are not documented, and may be withdrawn or
1873 modified in future versions of Bison. */
1874case 5:
1875/* rule 5 can match eol */
1876YY_RULE_SETUP
1877#line 207 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1878{
1879 handle_syncline (yytext + sizeof "#line " - 1, *loc);
1880 }
1881 YY_BREAK
1882
1883/*----------------------------.
1884 | Scanning Bison directives. |
1885 `----------------------------*/
1886/* For directives that are also command line options, the regex must be
1887 "%..."
1888 after "[-_]"s are removed, and the directive must match the --long
1889 option name, with a single string argument. Otherwise, add exceptions
1890 to ../build-aux/cross-options.pl. */
1891
1892
1893case 6:
1894YY_RULE_SETUP
1895#line 225 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1896return BISON_DIRECTIVE (NONASSOC);
1897 YY_BREAK
1898case 7:
1899YY_RULE_SETUP
1900#line 226 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1901return BISON_DIRECTIVE (CODE);
1902 YY_BREAK
1903case 8:
1904YY_RULE_SETUP
1905#line 227 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1906RETURN_PERCENT_FLAG ("parse.trace");
1907 YY_BREAK
1908case 9:
1909YY_RULE_SETUP
1910#line 228 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1911return BISON_DIRECTIVE (DEFAULT_PREC);
1912 YY_BREAK
1913case 10:
1914YY_RULE_SETUP
1915#line 229 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1916return BISON_DIRECTIVE (DEFINE);
1917 YY_BREAK
1918case 11:
1919YY_RULE_SETUP
1920#line 230 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1921return BISON_DIRECTIVE (DEFINES);
1922 YY_BREAK
1923case 12:
1924YY_RULE_SETUP
1925#line 231 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1926return BISON_DIRECTIVE (DESTRUCTOR);
1927 YY_BREAK
1928case 13:
1929YY_RULE_SETUP
1930#line 232 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1931return BISON_DIRECTIVE (DPREC);
1932 YY_BREAK
1933case 14:
1934YY_RULE_SETUP
1935#line 233 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1936return BISON_DIRECTIVE (EMPTY);
1937 YY_BREAK
1938case 15:
1939YY_RULE_SETUP
1940#line 234 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1941return BISON_DIRECTIVE (EXPECT);
1942 YY_BREAK
1943case 16:
1944YY_RULE_SETUP
1945#line 235 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1946return BISON_DIRECTIVE (EXPECT_RR);
1947 YY_BREAK
1948case 17:
1949YY_RULE_SETUP
1950#line 236 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1951RETURN_VALUE (PERCENT_FILE_PREFIX, uniqstr_new (yytext));
1952 YY_BREAK
1953case 18:
1954YY_RULE_SETUP
1955#line 237 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1956RETURN_VALUE (PERCENT_YACC, uniqstr_new (yytext));
1957 YY_BREAK
1958case 19:
1959YY_RULE_SETUP
1960#line 238 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1961return BISON_DIRECTIVE (INITIAL_ACTION);
1962 YY_BREAK
1963case 20:
1964YY_RULE_SETUP
1965#line 239 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1966return BISON_DIRECTIVE (GLR_PARSER);
1967 YY_BREAK
1968case 21:
1969YY_RULE_SETUP
1970#line 240 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1971return BISON_DIRECTIVE (LANGUAGE);
1972 YY_BREAK
1973case 22:
1974YY_RULE_SETUP
1975#line 241 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1976return PERCENT_LEFT;
1977 YY_BREAK
1978case 23:
1979YY_RULE_SETUP
1980#line 242 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1981RETURN_PERCENT_PARAM (lex);
1982 YY_BREAK
1983case 24:
1984YY_RULE_SETUP
1985#line 243 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1986RETURN_PERCENT_FLAG ("locations");
1987 YY_BREAK
1988case 25:
1989YY_RULE_SETUP
1990#line 244 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1991return BISON_DIRECTIVE (MERGE);
1992 YY_BREAK
1993case 26:
1994YY_RULE_SETUP
1995#line 245 "/Users/akim/src/gnu/bison/src/scan-gram.l"
1996return BISON_DIRECTIVE (NO_DEFAULT_PREC);
1997 YY_BREAK
1998case 27:
1999YY_RULE_SETUP
2000#line 246 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2001return BISON_DIRECTIVE (NO_LINES);
2002 YY_BREAK
2003case 28:
2004YY_RULE_SETUP
2005#line 247 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2006return PERCENT_NONASSOC;
2007 YY_BREAK
2008case 29:
2009YY_RULE_SETUP
2010#line 248 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2011return BISON_DIRECTIVE (NONDETERMINISTIC_PARSER);
2012 YY_BREAK
2013case 30:
2014YY_RULE_SETUP
2015#line 249 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2016return BISON_DIRECTIVE (NTERM);
2017 YY_BREAK
2018case 31:
2019YY_RULE_SETUP
2020#line 250 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2021return BISON_DIRECTIVE (OUTPUT);
2022 YY_BREAK
2023case 32:
2024YY_RULE_SETUP
2025#line 251 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2026RETURN_PERCENT_PARAM (both);
2027 YY_BREAK
2028case 33:
2029YY_RULE_SETUP
2030#line 252 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2031RETURN_PERCENT_PARAM (parse);
2032 YY_BREAK
2033case 34:
2034YY_RULE_SETUP
2035#line 253 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2036return PERCENT_PREC;
2037 YY_BREAK
2038case 35:
2039YY_RULE_SETUP
2040#line 254 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2041return BISON_DIRECTIVE (PRECEDENCE);
2042 YY_BREAK
2043case 36:
2044YY_RULE_SETUP
2045#line 255 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2046return BISON_DIRECTIVE (PRINTER);
2047 YY_BREAK
2048case 37:
2049YY_RULE_SETUP
2050#line 256 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2051return BISON_DIRECTIVE (REQUIRE);
2052 YY_BREAK
2053case 38:
2054YY_RULE_SETUP
2055#line 257 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2056return PERCENT_RIGHT;
2057 YY_BREAK
2058case 39:
2059YY_RULE_SETUP
2060#line 258 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2061return BISON_DIRECTIVE (SKELETON);
2062 YY_BREAK
2063case 40:
2064YY_RULE_SETUP
2065#line 259 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2066return PERCENT_START;
2067 YY_BREAK
2068case 41:
2069YY_RULE_SETUP
2070#line 260 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2071return BISON_DIRECTIVE (TOKEN);
2072 YY_BREAK
2073case 42:
2074YY_RULE_SETUP
2075#line 261 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2076return PERCENT_TOKEN;
2077 YY_BREAK
2078case 43:
2079YY_RULE_SETUP
2080#line 262 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2081return BISON_DIRECTIVE (TOKEN_TABLE);
2082 YY_BREAK
2083case 44:
2084YY_RULE_SETUP
2085#line 263 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2086return PERCENT_TYPE;
2087 YY_BREAK
2088case 45:
2089YY_RULE_SETUP
2090#line 264 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2091return PERCENT_UNION;
2092 YY_BREAK
2093case 46:
2094YY_RULE_SETUP
2095#line 265 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2096return BISON_DIRECTIVE (VERBOSE);
2097 YY_BREAK
2098case 47:
2099YY_RULE_SETUP
2100#line 266 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2101RETURN_VALUE (PERCENT_YACC, uniqstr_new (yytext));
2102 YY_BREAK
2103/* Deprecated since Bison 2.3b (2008-05-27), but the warning is
2104 issued only since Bison 3.4. */
2105case 48:
2106YY_RULE_SETUP
2107#line 270 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2108RETURN_VALUE (PERCENT_PURE_PARSER, uniqstr_new (yytext));
2109 YY_BREAK
2110/* Deprecated since Bison 3.0 (2013-07-25), but the warning is
2111 issued only since Bison 3.3. */
2112case 49:
2113YY_RULE_SETUP
2114#line 274 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2115RETURN_VALUE (PERCENT_ERROR_VERBOSE, uniqstr_new (yytext));
2116 YY_BREAK
2117/* Deprecated since Bison 2.6 (2012-07-19), but the warning is
2118 issued only since Bison 3.3. */
2119case 50:
2120/* rule 50 can match eol */
2121YY_RULE_SETUP
2122#line 278 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2123RETURN_VALUE (PERCENT_NAME_PREFIX, uniqstr_new (yytext));
2124 YY_BREAK
2125/* Deprecated since Bison 2.7.90, 2012. */
2126case 51:
2127YY_RULE_SETUP
2128#line 281 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2129DEPRECATED ("%default-prec");
2130 YY_BREAK
2131case 52:
2132YY_RULE_SETUP
2133#line 282 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2134RETURN_VALUE (PERCENT_ERROR_VERBOSE, uniqstr_new (yytext));
2135 YY_BREAK
2136case 53:
2137YY_RULE_SETUP
2138#line 283 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2139DEPRECATED ("%expect-rr");
2140 YY_BREAK
2141case 54:
2142/* rule 54 can match eol */
2143YY_RULE_SETUP
2144#line 284 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2145RETURN_VALUE (PERCENT_FILE_PREFIX, uniqstr_new (yytext));
2146 YY_BREAK
2147case 55:
2148YY_RULE_SETUP
2149#line 285 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2150RETURN_VALUE (PERCENT_YACC, uniqstr_new (yytext));
2151 YY_BREAK
2152case 56:
2153YY_RULE_SETUP
2154#line 286 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2155DEPRECATED ("%no-default-prec");
2156 YY_BREAK
2157case 57:
2158YY_RULE_SETUP
2159#line 287 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2160DEPRECATED ("%no-lines");
2161 YY_BREAK
2162case 58:
2163/* rule 58 can match eol */
2164YY_RULE_SETUP
2165#line 288 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2166DEPRECATED ("%output");
2167 YY_BREAK
2168case 59:
2169YY_RULE_SETUP
2170#line 289 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2171DEPRECATED ("%token-table");
2172 YY_BREAK
2173case 60:
2174YY_RULE_SETUP
2175#line 291 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2176{
2177 complain (loc, complaint, _("invalid directive: %s"), quote (yytext));
2178 }
2179 YY_BREAK
2180case 61:
2181YY_RULE_SETUP
2182#line 295 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2183return COLON;
2184 YY_BREAK
2185case 62:
2186YY_RULE_SETUP
2187#line 296 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2188return EQUAL;
2189 YY_BREAK
2190case 63:
2191YY_RULE_SETUP
2192#line 297 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2193return PIPE;
2194 YY_BREAK
2195case 64:
2196YY_RULE_SETUP
2197#line 298 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2198return SEMICOLON;
2199 YY_BREAK
2200case 65:
2201YY_RULE_SETUP
2202#line 300 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2203{
2204 val->ID = uniqstr_new (yytext);
2205 id_loc = *loc;
2206 bracketed_id_str = NULL;
2207 BEGIN SC_AFTER_IDENTIFIER;
2208 }
2209 YY_BREAK
2210case 66:
2211YY_RULE_SETUP
2212#line 307 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2213RETURN_VALUE (INT, scan_integer (yytext, 10, *loc));
2214 YY_BREAK
2215case 67:
2216YY_RULE_SETUP
2217#line 308 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2218RETURN_VALUE (INT, scan_integer (yytext, 16, *loc));
2219 YY_BREAK
2220/* Identifiers may not start with a digit. Yet, don't silently
2221 accept "1FOO" as "1 FOO". */
2222case 68:
2223YY_RULE_SETUP
2224#line 312 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2225{
2226 complain (loc, complaint, _("invalid identifier: %s"), quote (yytext));
2227 }
2228 YY_BREAK
2229/* Characters. */
2230case 69:
2231YY_RULE_SETUP
2232#line 317 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2233token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER;
2234 YY_BREAK
2235/* Strings. */
2236case 70:
2237YY_RULE_SETUP
2238#line 320 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2239token_start = loc->start; BEGIN SC_ESCAPED_STRING;
2240 YY_BREAK
2241/* Prologue. */
2242case 71:
2243YY_RULE_SETUP
2244#line 323 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2245code_start = loc->start; BEGIN SC_PROLOGUE;
2246 YY_BREAK
2247/* Code in between braces. */
2248case 72:
2249YY_RULE_SETUP
2250#line 326 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2251{
2252 STRING_GROW;
2253 nesting = 0;
2254 code_start = loc->start;
2255 BEGIN SC_BRACED_CODE;
2256 }
2257 YY_BREAK
2258/* Semantic predicate. */
2259case 73:
2260/* rule 73 can match eol */
2261YY_RULE_SETUP
2262#line 334 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2263{
2264 nesting = 0;
2265 code_start = loc->start;
2266 BEGIN SC_PREDICATE;
2267 }
2268 YY_BREAK
2269/* A type. */
2270case 74:
2271YY_RULE_SETUP
2272#line 341 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2273return TAG_ANY;
2274 YY_BREAK
2275case 75:
2276YY_RULE_SETUP
2277#line 342 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2278return TAG_NONE;
2279 YY_BREAK
2280case 76:
2281YY_RULE_SETUP
2282#line 343 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2283{
2284 nesting = 0;
2285 token_start = loc->start;
2286 BEGIN SC_TAG;
2287 }
2288 YY_BREAK
2289case 77:
2290YY_RULE_SETUP
2291#line 349 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2292{
2293 static int percent_percent_count;
2294 if (++percent_percent_count == 2)
2295 BEGIN SC_EPILOGUE;
2296 return PERCENT_PERCENT;
2297 }
2298 YY_BREAK
2299case 78:
2300YY_RULE_SETUP
2301#line 356 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2302{
2303 bracketed_id_str = NULL;
2304 bracketed_id_start = loc->start;
2305 bracketed_id_context_state = YY_START;
2306 BEGIN SC_BRACKETED_ID;
2307 }
2308 YY_BREAK
2309case 79:
2310YY_RULE_SETUP
2311#line 363 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2312{
2313 complain (loc, complaint, "%s: %s",
2314 ngettext ("invalid character", "invalid characters", yyleng),
2315 quote_mem (yytext, yyleng));
2316 }
2317 YY_BREAK
2318case YY_STATE_EOF(INITIAL):
2319#line 369 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2320{
2321 loc->start = loc->end = scanner_cursor;
2322 yyterminate ();
2323 }
2324 YY_BREAK
2325
2326/*--------------------------------------------------------------.
2327 | Supporting \0 complexifies our implementation for no expected |
2328 | added value. |
2329 `--------------------------------------------------------------*/
2330
2331
2332case 80:
2333YY_RULE_SETUP
2334#line 383 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2335complain (loc, complaint, _("invalid null character"));
2336 YY_BREAK
2337
2338/*-----------------------------------------------------------------.
2339 | Scanning after an identifier, checking whether a colon is next. |
2340 `-----------------------------------------------------------------*/
2341
2342
2343case 81:
2344YY_RULE_SETUP
2345#line 393 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2346{
2347 if (bracketed_id_str)
2348 {
2349 ROLLBACK_CURRENT_TOKEN;
2350 BEGIN SC_RETURN_BRACKETED_ID;
2351 *loc = id_loc;
2352 return ID;
2353 }
2354 else
2355 {
2356 bracketed_id_start = loc->start;
2357 bracketed_id_context_state = YY_START;
2358 BEGIN SC_BRACKETED_ID;
2359 }
2360 }
2361 YY_BREAK
2362case 82:
2363YY_RULE_SETUP
2364#line 408 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2365{
2366 ROLLBACK_CURRENT_TOKEN;
2367 BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
2368 *loc = id_loc;
2369 return ID_COLON;
2370 }
2371 YY_BREAK
2372case 83:
2373YY_RULE_SETUP
2374#line 414 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2375{
2376 ROLLBACK_CURRENT_TOKEN;
2377 BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
2378 *loc = id_loc;
2379 return ID;
2380 }
2381 YY_BREAK
2382case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
2383#line 420 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2384{
2385 BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
2386 *loc = id_loc;
2387 return ID;
2388 }
2389 YY_BREAK
2390
2391/*--------------------------------.
2392 | Scanning bracketed identifiers. |
2393 `--------------------------------*/
2394
2395
2396case 84:
2397YY_RULE_SETUP
2398#line 433 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2399{
2400 if (bracketed_id_str)
2401 {
2402 complain (loc, complaint,
2403 _("unexpected identifier in bracketed name: %s"),
2404 quote (yytext));
2405 }
2406 else
2407 {
2408 bracketed_id_str = uniqstr_new (yytext);
2409 bracketed_id_loc = *loc;
2410 }
2411 }
2412 YY_BREAK
2413case 85:
2414YY_RULE_SETUP
2415#line 446 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2416{
2417 BEGIN bracketed_id_context_state;
2418 if (bracketed_id_str)
2419 {
2420 if (INITIAL == bracketed_id_context_state)
2421 {
2422 val->BRACKETED_ID = bracketed_id_str;
2423 bracketed_id_str = 0;
2424 *loc = bracketed_id_loc;
2425 return BRACKETED_ID;
2426 }
2427 }
2428 else
2429 complain (loc, complaint, _("an identifier expected"));
2430 }
2431 YY_BREAK
2432case 86:
2433YY_RULE_SETUP
2434#line 462 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2435{
2436 complain (loc, complaint, "%s: %s",
2437 ngettext ("invalid character in bracketed name",
2438 "invalid characters in bracketed name", yyleng),
2439 quote_mem (yytext, yyleng));
2440 }
2441 YY_BREAK
2442case YY_STATE_EOF(SC_BRACKETED_ID):
2443#line 469 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2444{
2445 BEGIN bracketed_id_context_state;
2446 unexpected_eof (bracketed_id_start, "]");
2447 }
2448 YY_BREAK
2449
2450
2451
2452case 87:
2453YY_RULE_SETUP
2454#line 477 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2455{
2456 ROLLBACK_CURRENT_TOKEN;
2457 val->BRACKETED_ID = bracketed_id_str;
2458 bracketed_id_str = 0;
2459 *loc = bracketed_id_loc;
2460 BEGIN INITIAL;
2461 return BRACKETED_ID;
2462 }
2463 YY_BREAK
2464
2465/*---------------------------------------------------------------.
2466 | Scanning a Yacc comment. The initial '/ *' is already eaten. |
2467 `---------------------------------------------------------------*/
2468
2469
2470case 88:
2471YY_RULE_SETUP
2472#line 494 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2473BEGIN context_state;
2474 YY_BREAK
2475case 89:
2476/* rule 89 can match eol */
2477YY_RULE_SETUP
2478#line 495 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2479continue;
2480 YY_BREAK
2481case YY_STATE_EOF(SC_YACC_COMMENT):
2482#line 496 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2483unexpected_eof (token_start, "*/"); BEGIN context_state;
2484 YY_BREAK
2485
2486/*------------------------------------------------------------.
2487 | Scanning a C comment. The initial '/ *' is already eaten. |
2488 `------------------------------------------------------------*/
2489
2490
2491case 90:
2492/* rule 90 can match eol */
2493YY_RULE_SETUP
2494#line 506 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2495STRING_GROW; BEGIN context_state;
2496 YY_BREAK
2497case YY_STATE_EOF(SC_COMMENT):
2498#line 507 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2499unexpected_eof (token_start, "*/"); BEGIN context_state;
2500 YY_BREAK
2501
2502/*--------------------------------------------------------------.
2503 | Scanning a line comment. The initial '//' is already eaten. |
2504 `--------------------------------------------------------------*/
2505
2506
2507case 91:
2508/* rule 91 can match eol */
2509YY_RULE_SETUP
2510#line 517 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2511STRING_GROW; BEGIN context_state;
2512 YY_BREAK
2513case 92:
2514/* rule 92 can match eol */
2515YY_RULE_SETUP
2516#line 518 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2517STRING_GROW;
2518 YY_BREAK
2519case YY_STATE_EOF(SC_LINE_COMMENT):
2520#line 519 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2521BEGIN context_state;
2522 YY_BREAK
2523
2524/*------------------------------------------------.
2525 | Scanning a Bison string, including its escapes. |
2526 | The initial quote is already eaten. |
2527 `------------------------------------------------*/
2528
2529
2530case 93:
2531YY_RULE_SETUP
2532#line 530 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2533{
2534 STRING_FINISH;
2535 BEGIN INITIAL;
2536 loc->start = token_start;
2537 complain (loc, Wyacc,
2538 _("POSIX Yacc does not support string literals"));
2539 RETURN_VALUE (STRING, last_string);
2540 }
2541 YY_BREAK
2542case YY_STATE_EOF(SC_ESCAPED_STRING):
2543#line 538 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2544unexpected_eof (token_start, "\"");
2545 YY_BREAK
2546case 94:
2547/* rule 94 can match eol */
2548YY_RULE_SETUP
2549#line 539 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2550unexpected_newline (token_start, "\"");
2551 YY_BREAK
2552
2553/*----------------------------------------------------------.
2554 | Scanning a Bison character literal, decoding its escapes. |
2555 | The initial quote is already eaten. |
2556 `----------------------------------------------------------*/
2557
2558
2559case 95:
2560YY_RULE_SETUP
2561#line 549 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2562{
2563 STRING_FINISH;
2564 loc->start = token_start;
2565 val->CHAR = last_string[0];
2566
2567 /* FIXME: Eventually, make these errors. */
2568 if (last_string[0] == '\0')
2569 {
2570 complain (loc, Wother, _("empty character literal"));
2571 /* '\0' seems dangerous even if we are about to complain. */
2572 val->CHAR = '\'';
2573 }
2574 else if (last_string[1] != '\0')
2575 complain (loc, Wother,
2576 _("extra characters in character literal"));
2577 STRING_FREE;
2578 BEGIN INITIAL;
2579 return CHAR;
2580 }
2581 YY_BREAK
2582case 96:
2583/* rule 96 can match eol */
2584YY_RULE_SETUP
2585#line 568 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2586unexpected_newline (token_start, "'");
2587 YY_BREAK
2588case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
2589#line 569 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2590unexpected_eof (token_start, "'");
2591 YY_BREAK
2592
2593/*--------------------------------------------------------------.
2594 | Scanning a tag. The initial angle bracket is already eaten. |
2595 `--------------------------------------------------------------*/
2596
2597
2598case 97:
2599YY_RULE_SETUP
2600#line 580 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2601{
2602 --nesting;
2603 if (nesting < 0)
2604 {
2605 STRING_FINISH;
2606 loc->start = token_start;
2607 val->TAG = uniqstr_new (last_string);
2608 STRING_FREE;
2609 BEGIN INITIAL;
2610 return TAG;
2611 }
2612 STRING_GROW;
2613 }
2614 YY_BREAK
2615case 98:
2616/* rule 98 can match eol */
2617YY_RULE_SETUP
2618#line 594 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2619STRING_GROW;
2620 YY_BREAK
2621case 99:
2622YY_RULE_SETUP
2623#line 595 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2624STRING_GROW; nesting += yyleng;
2625 YY_BREAK
2626case YY_STATE_EOF(SC_TAG):
2627#line 597 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2628unexpected_eof (token_start, ">");
2629 YY_BREAK
2630
2631/*----------------------------.
2632 | Decode escaped characters. |
2633 `----------------------------*/
2634
2635
2636case 100:
2637YY_RULE_SETUP
2638#line 606 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2639{
2640 verify (UCHAR_MAX < ULONG_MAX);
2641 unsigned long c = strtoul (yytext + 1, NULL, 8);
2642 if (!c || UCHAR_MAX < c)
2643 complain (loc, complaint, _("invalid number after \\-escape: %s"),
2644 yytext+1);
2645 else
2646 obstack_1grow (&obstack_for_string, c);
2647 }
2648 YY_BREAK
2649case 101:
2650YY_RULE_SETUP
2651#line 616 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2652{
2653 verify (UCHAR_MAX < ULONG_MAX);
2654 unsigned long c = strtoul (yytext + 2, NULL, 16);
2655 if (!c || UCHAR_MAX < c)
2656 complain (loc, complaint, _("invalid number after \\-escape: %s"),
2657 yytext+1);
2658 else
2659 obstack_1grow (&obstack_for_string, c);
2660 }
2661 YY_BREAK
2662case 102:
2663YY_RULE_SETUP
2664#line 626 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2665obstack_1grow (&obstack_for_string, '\a');
2666 YY_BREAK
2667case 103:
2668YY_RULE_SETUP
2669#line 627 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2670obstack_1grow (&obstack_for_string, '\b');
2671 YY_BREAK
2672case 104:
2673YY_RULE_SETUP
2674#line 628 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2675obstack_1grow (&obstack_for_string, '\f');
2676 YY_BREAK
2677case 105:
2678YY_RULE_SETUP
2679#line 629 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2680obstack_1grow (&obstack_for_string, '\n');
2681 YY_BREAK
2682case 106:
2683YY_RULE_SETUP
2684#line 630 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2685obstack_1grow (&obstack_for_string, '\r');
2686 YY_BREAK
2687case 107:
2688YY_RULE_SETUP
2689#line 631 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2690obstack_1grow (&obstack_for_string, '\t');
2691 YY_BREAK
2692case 108:
2693YY_RULE_SETUP
2694#line 632 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2695obstack_1grow (&obstack_for_string, '\v');
2696 YY_BREAK
2697/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
2698case 109:
2699YY_RULE_SETUP
2700#line 635 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2701obstack_1grow (&obstack_for_string, yytext[1]);
2702 YY_BREAK
2703case 110:
2704YY_RULE_SETUP
2705#line 637 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2706{
2707 int c = convert_ucn_to_byte (yytext);
2708 if (c <= 0)
2709 complain (loc, complaint, _("invalid number after \\-escape: %s"),
2710 yytext+1);
2711 else
2712 obstack_1grow (&obstack_for_string, c);
2713 }
2714 YY_BREAK
2715case 111:
2716/* rule 111 can match eol */
2717YY_RULE_SETUP
2718#line 645 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2719{
2720 char const *p = yytext + 1;
2721 /* Quote only if escaping won't make the character visible. */
2722 if (c_isspace ((unsigned char) *p) && c_isprint ((unsigned char) *p))
2723 p = quote (p);
2724 else
2725 p = quotearg_style_mem (escape_quoting_style, p, 1);
2726 complain (loc, complaint, _("invalid character after \\-escape: %s"),
2727 p);
2728 }
2729 YY_BREAK
2730
2731/*--------------------------------------------.
2732 | Scanning user-code characters and strings. |
2733 `--------------------------------------------*/
2734
2735
2736case 112:
2737/* rule 112 can match eol */
2738YY_RULE_SETUP
2739#line 663 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2740STRING_GROW;
2741 YY_BREAK
2742
2743
2744
2745case 113:
2746YY_RULE_SETUP
2747#line 668 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2748STRING_GROW; BEGIN context_state;
2749 YY_BREAK
2750case 114:
2751/* rule 114 can match eol */
2752YY_RULE_SETUP
2753#line 669 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2754unexpected_newline (token_start, "'");
2755 YY_BREAK
2756case YY_STATE_EOF(SC_CHARACTER):
2757#line 670 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2758unexpected_eof (token_start, "'");
2759 YY_BREAK
2760
2761
2762
2763case 115:
2764YY_RULE_SETUP
2765#line 675 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2766STRING_GROW; BEGIN context_state;
2767 YY_BREAK
2768case 116:
2769/* rule 116 can match eol */
2770YY_RULE_SETUP
2771#line 676 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2772unexpected_newline (token_start, "\"");
2773 YY_BREAK
2774case YY_STATE_EOF(SC_STRING):
2775#line 677 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2776unexpected_eof (token_start, "\"");
2777 YY_BREAK
2778
2779/*---------------------------------------------------.
2780 | Strings, comments etc. can be found in user code. |
2781 `---------------------------------------------------*/
2782
2783
2784case 117:
2785YY_RULE_SETUP
2786#line 687 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2787{
2788 STRING_GROW;
2789 context_state = YY_START;
2790 token_start = loc->start;
2791 BEGIN SC_CHARACTER;
2792 }
2793 YY_BREAK
2794case 118:
2795YY_RULE_SETUP
2796#line 693 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2797{
2798 STRING_GROW;
2799 context_state = YY_START;
2800 token_start = loc->start;
2801 BEGIN SC_STRING;
2802 }
2803 YY_BREAK
2804case 119:
2805/* rule 119 can match eol */
2806YY_RULE_SETUP
2807#line 699 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2808{
2809 STRING_GROW;
2810 context_state = YY_START;
2811 token_start = loc->start;
2812 BEGIN SC_COMMENT;
2813 }
2814 YY_BREAK
2815case 120:
2816/* rule 120 can match eol */
2817YY_RULE_SETUP
2818#line 705 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2819{
2820 STRING_GROW;
2821 context_state = YY_START;
2822 BEGIN SC_LINE_COMMENT;
2823 }
2824 YY_BREAK
2825
2826/*-----------------------------------------------------------.
2827 | Scanning some code in braces (actions, predicates). The |
2828 | initial "{" is already eaten. |
2829 `-----------------------------------------------------------*/
2830
2831
2832case 121:
2833/* rule 121 can match eol */
2834YY_RULE_SETUP
2835#line 721 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2836STRING_GROW; nesting++;
2837 YY_BREAK
2838case 122:
2839/* rule 122 can match eol */
2840YY_RULE_SETUP
2841#line 722 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2842STRING_GROW; nesting--;
2843 YY_BREAK
2844/* Tokenize '<<%' correctly (as '<<' '%') rather than incorrectly
2845 (as '<' '<%'). */
2846case 123:
2847/* rule 123 can match eol */
2848YY_RULE_SETUP
2849#line 726 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2850STRING_GROW;
2851 YY_BREAK
2852case YY_STATE_EOF(SC_BRACED_CODE):
2853case YY_STATE_EOF(SC_PREDICATE):
2854#line 728 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2855unexpected_eof (code_start, "}");
2856 YY_BREAK
2857
2858
2859
2860case 124:
2861YY_RULE_SETUP
2862#line 733 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2863{
2864 obstack_1grow (&obstack_for_string, '}');
2865
2866 --nesting;
2867 if (nesting < 0)
2868 {
2869 STRING_FINISH;
2870 loc->start = code_start;
2871 BEGIN INITIAL;
2872 RETURN_VALUE (BRACED_CODE, last_string);
2873 }
2874 }
2875 YY_BREAK
2876
2877
2878
2879case 125:
2880YY_RULE_SETUP
2881#line 749 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2882{
2883 --nesting;
2884 if (nesting < 0)
2885 {
2886 STRING_FINISH;
2887 loc->start = code_start;
2888 BEGIN INITIAL;
2889 RETURN_VALUE (BRACED_PREDICATE, last_string);
2890 }
2891 else
2892 obstack_1grow (&obstack_for_string, '}');
2893 }
2894 YY_BREAK
2895
2896/*--------------------------------------------------------------.
2897 | Scanning some prologue: from "%{" (already scanned) to "%}". |
2898 `--------------------------------------------------------------*/
2899
2900
2901case 126:
2902YY_RULE_SETUP
2903#line 769 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2904{
2905 STRING_FINISH;
2906 loc->start = code_start;
2907 BEGIN INITIAL;
2908 RETURN_VALUE (PROLOGUE, last_string);
2909 }
2910 YY_BREAK
2911case YY_STATE_EOF(SC_PROLOGUE):
2912#line 776 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2913unexpected_eof (code_start, "%}");
2914 YY_BREAK
2915
2916/*---------------------------------------------------------------.
2917 | Scanning the epilogue (everything after the second "%%", which |
2918 | has already been eaten). |
2919 `---------------------------------------------------------------*/
2920
2921
2922case YY_STATE_EOF(SC_EPILOGUE):
2923#line 787 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2924{
2925 STRING_FINISH;
2926 loc->start = code_start;
2927 BEGIN INITIAL;
2928 RETURN_VALUE (EPILOGUE, last_string);
2929 }
2930 YY_BREAK
2931
2932/*-----------------------------------------------------.
2933 | By default, grow the string obstack with the input. |
2934 `-----------------------------------------------------*/
2935
2936
2937/* Accept multibyte characters in one block instead of byte after
2938 byte, so that add_column_width and mbsnwidth can compute correct
2939 screen width.
2940
2941 Add a fallthrough "|." so that non UTF-8 input is still accepted
2942 and does not jam the scanner. */
2943case 127:
2944/* rule 127 can match eol */
2945YY_RULE_SETUP
2946#line 808 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2947STRING_GROW;
2948 YY_BREAK
2949
2950case 128:
2951YY_RULE_SETUP
2952#line 811 "/Users/akim/src/gnu/bison/src/scan-gram.l"
2953YY_FATAL_ERROR( "flex scanner jammed" );
2954 YY_BREAK
2955#line 2955 "src/scan-gram.c"
2956case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
2957 yyterminate();
2958
2959 case YY_END_OF_BUFFER:
2960 {
2961 /* Amount of text matched not including the EOB char. */
2962 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2963
2964 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2965 *yy_cp = (yy_hold_char);
2966 YY_RESTORE_YY_MORE_OFFSET
2967
2968 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2969 {
2970 /* We're scanning a new file or input source. It's
2971 * possible that this happened because the user
2972 * just pointed yyin at a new source and called
2973 * yylex(). If so, then we have to assure
2974 * consistency between YY_CURRENT_BUFFER and our
2975 * globals. Here is the right place to do so, because
2976 * this is the first action (other than possibly a
2977 * back-up) that will match for the new input source.
2978 */
2979 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2980/* %if-c-only */
2981 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2982/* %endif */
2983/* %if-c++-only */
2984/* %endif */
2985 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2986 }
2987
2988 /* Note that here we test for yy_c_buf_p "<=" to the position
2989 * of the first EOB in the buffer, since yy_c_buf_p will
2990 * already have been incremented past the NUL character
2991 * (since all states make transitions on EOB to the
2992 * end-of-buffer state). Contrast this with the test
2993 * in input().
2994 */
2995 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2996 { /* This was really a NUL. */
2997 yy_state_type yy_next_state;
2998
2999 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3000
3001 yy_current_state = yy_get_previous_state( );
3002
3003 /* Okay, we're now positioned to make the NUL
3004 * transition. We couldn't have
3005 * yy_get_previous_state() go ahead and do it
3006 * for us because it doesn't know how to deal
3007 * with the possibility of jamming (and we don't
3008 * want to build jamming into it because then it
3009 * will run more slowly).
3010 */
3011
3012 yy_next_state = yy_try_NUL_trans( yy_current_state );
3013
3014 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3015
3016 if ( yy_next_state )
3017 {
3018 /* Consume the NUL. */
3019 yy_cp = ++(yy_c_buf_p);
3020 yy_current_state = yy_next_state;
3021 goto yy_match;
3022 }
3023
3024 else
3025 {
3026/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
3027 yy_cp = (yy_last_accepting_cpos);
3028 yy_current_state = (yy_last_accepting_state);
3029 goto yy_find_action;
3030 }
3031 }
3032
3033 else switch ( yy_get_next_buffer( ) )
3034 {
3035 case EOB_ACT_END_OF_FILE:
3036 {
3037 (yy_did_buffer_switch_on_eof) = 0;
3038
3039 if ( yywrap( ) )
3040 {
3041 /* Note: because we've taken care in
3042 * yy_get_next_buffer() to have set up
3043 * yytext, we can now set up
3044 * yy_c_buf_p so that if some total
3045 * hoser (like flex itself) wants to
3046 * call the scanner after we return the
3047 * YY_NULL, it'll still work - another
3048 * YY_NULL will get returned.
3049 */
3050 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3051
3052 yy_act = YY_STATE_EOF(YY_START);
3053 goto do_action;
3054 }
3055
3056 else
3057 {
3058 if ( ! (yy_did_buffer_switch_on_eof) )
3059 YY_NEW_FILE;
3060 }
3061 break;
3062 }
3063
3064 case EOB_ACT_CONTINUE_SCAN:
3065 (yy_c_buf_p) =
3066 (yytext_ptr) + yy_amount_of_matched_text;
3067
3068 yy_current_state = yy_get_previous_state( );
3069
3070 yy_cp = (yy_c_buf_p);
3071 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3072 goto yy_match;
3073
3074 case EOB_ACT_LAST_MATCH:
3075 (yy_c_buf_p) =
3076 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3077
3078 yy_current_state = yy_get_previous_state( );
3079
3080 yy_cp = (yy_c_buf_p);
3081 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3082 goto yy_find_action;
3083 }
3084 break;
3085 }
3086
3087 default:
3088 YY_FATAL_ERROR(
3089 "fatal flex scanner internal error--no action found" );
3090 } /* end of action switch */
3091 } /* end of scanning one token */
3092 } /* end of user's declarations */
3093} /* end of yylex */
3094/* %ok-for-header */
3095
3096/* %if-c++-only */
3097/* %not-for-header */
3098/* %ok-for-header */
3099
3100/* %endif */
3101
3102/* yy_get_next_buffer - try to read in a new buffer
3103 *
3104 * Returns a code representing an action:
3105 * EOB_ACT_LAST_MATCH -
3106 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3107 * EOB_ACT_END_OF_FILE - end of file
3108 */
3109/* %if-c-only */
3110static int yy_get_next_buffer (void)
3111/* %endif */
3112/* %if-c++-only */
3113/* %endif */
3114{
3115 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3116 char *source = (yytext_ptr);
3117 int number_to_move, i;
3118 int ret_val;
3119
3120 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3121 YY_FATAL_ERROR(
3122 "fatal flex scanner internal error--end of buffer missed" );
3123
3124 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3125 { /* Don't try to fill the buffer, so this is an EOF. */
3126 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3127 {
3128 /* We matched a single character, the EOB, so
3129 * treat this as a final EOF.
3130 */
3131 return EOB_ACT_END_OF_FILE;
3132 }
3133
3134 else
3135 {
3136 /* We matched some text prior to the EOB, first
3137 * process it.
3138 */
3139 return EOB_ACT_LAST_MATCH;
3140 }
3141 }
3142
3143 /* Try to read more data. */
3144
3145 /* First move last chars to start of buffer. */
3146 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
3147
3148 for ( i = 0; i < number_to_move; ++i )
3149 *(dest++) = *(source++);
3150
3151 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3152 /* don't do the read, it's not guaranteed to return an EOF,
3153 * just force an EOF
3154 */
3155 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3156
3157 else
3158 {
3159 int num_to_read =
3160 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3161
3162 while ( num_to_read <= 0 )
3163 { /* Not enough room in the buffer - grow it. */
3164
3165 /* just a shorter name for the current buffer */
3166 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
3167
3168 int yy_c_buf_p_offset =
3169 (int) ((yy_c_buf_p) - b->yy_ch_buf);
3170
3171 if ( b->yy_is_our_buffer )
3172 {
3173 int new_size = b->yy_buf_size * 2;
3174
3175 if ( new_size <= 0 )
3176 b->yy_buf_size += b->yy_buf_size / 8;
3177 else
3178 b->yy_buf_size *= 2;
3179
3180 b->yy_ch_buf = (char *)
3181 /* Include room in for 2 EOB chars. */
3182 yyrealloc( (void *) b->yy_ch_buf,
3183 (yy_size_t) (b->yy_buf_size + 2) );
3184 }
3185 else
3186 /* Can't grow it, we don't own it. */
3187 b->yy_ch_buf = NULL;
3188
3189 if ( ! b->yy_ch_buf )
3190 YY_FATAL_ERROR(
3191 "fatal error - scanner input buffer overflow" );
3192
3193 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3194
3195 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3196 number_to_move - 1;
3197
3198 }
3199
3200 if ( num_to_read > YY_READ_BUF_SIZE )
3201 num_to_read = YY_READ_BUF_SIZE;
3202
3203 /* Read in more data. */
3204 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3205 (yy_n_chars), num_to_read );
3206
3207 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3208 }
3209
3210 if ( (yy_n_chars) == 0 )
3211 {
3212 if ( number_to_move == YY_MORE_ADJ )
3213 {
3214 ret_val = EOB_ACT_END_OF_FILE;
3215 yyrestart( yyin );
3216 }
3217
3218 else
3219 {
3220 ret_val = EOB_ACT_LAST_MATCH;
3221 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3222 YY_BUFFER_EOF_PENDING;
3223 }
3224 }
3225
3226 else
3227 ret_val = EOB_ACT_CONTINUE_SCAN;
3228
3229 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3230 /* Extend the array by 50%, plus the number we really need. */
3231 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3232 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
3233 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
3234 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3235 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3236 /* "- 2" to take care of EOB's */
3237 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
3238 }
3239
3240 (yy_n_chars) += number_to_move;
3241 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3242 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3243
3244 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3245
3246 return ret_val;
3247}
3248
3249/* yy_get_previous_state - get the state just before the EOB char was reached */
3250
3251/* %if-c-only */
3252/* %not-for-header */
3253 static yy_state_type yy_get_previous_state (void)
3254/* %endif */
3255/* %if-c++-only */
3256/* %endif */
3257{
3258 yy_state_type yy_current_state;
3259 char *yy_cp;
3260
3261/* %% [15.0] code to get the start state into yy_current_state goes here */
3262 yy_current_state = (yy_start);
3263 yy_current_state += YY_AT_BOL();
3264
3265 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3266 {
3267/* %% [16.0] code to find the next state goes here */
3268 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 72);
3269 if ( yy_accept[yy_current_state] )
3270 {
3271 (yy_last_accepting_state) = yy_current_state;
3272 (yy_last_accepting_cpos) = yy_cp;
3273 }
3274 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3275 {
3276 yy_current_state = (int) yy_def[yy_current_state];
3277 if ( yy_current_state >= 584 )
3278 yy_c = yy_meta[yy_c];
3279 }
3280 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3281 }
3282
3283 return yy_current_state;
3284}
3285
3286/* yy_try_NUL_trans - try to make a transition on the NUL character
3287 *
3288 * synopsis
3289 * next_state = yy_try_NUL_trans( current_state );
3290 */
3291/* %if-c-only */
3292 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
3293/* %endif */
3294/* %if-c++-only */
3295/* %endif */
3296{
3297 int yy_is_jam;
3298 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
3299 char *yy_cp = (yy_c_buf_p);
3300
3301 YY_CHAR yy_c = 72;
3302 if ( yy_accept[yy_current_state] )
3303 {
3304 (yy_last_accepting_state) = yy_current_state;
3305 (yy_last_accepting_cpos) = yy_cp;
3306 }
3307 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3308 {
3309 yy_current_state = (int) yy_def[yy_current_state];
3310 if ( yy_current_state >= 584 )
3311 yy_c = yy_meta[yy_c];
3312 }
3313 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3314 yy_is_jam = (yy_current_state == 583);
3315
3316 return yy_is_jam ? 0 : yy_current_state;
3317}
3318
3319#ifndef YY_NO_UNPUT
3320/* %if-c-only */
3321
3322 static void yyunput (int c, char * yy_bp )
3323/* %endif */
3324/* %if-c++-only */
3325/* %endif */
3326{
3327 char *yy_cp;
3328
3329 yy_cp = (yy_c_buf_p);
3330
3331 /* undo effects of setting up yytext */
3332 *yy_cp = (yy_hold_char);
3333
3334 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3335 { /* need to shift things up to make room */
3336 /* +2 for EOB chars. */
3337 int number_to_move = (yy_n_chars) + 2;
3338 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3339 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3340 char *source =
3341 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3342
3343 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3344 *--dest = *--source;
3345
3346 yy_cp += (int) (dest - source);
3347 yy_bp += (int) (dest - source);
3348 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3349 (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3350
3351 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3352 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3353 }
3354
3355 *--yy_cp = (char) c;
3356
3357/* %% [18.0] update yylineno here */
3358
3359 (yytext_ptr) = yy_bp;
3360 (yy_hold_char) = *yy_cp;
3361 (yy_c_buf_p) = yy_cp;
3362}
3363/* %if-c-only */
3364
3365/* %endif */
3366#endif
3367
3368/* %if-c-only */
3369#ifndef YY_NO_INPUT
3370#ifdef __cplusplus
3371 static int yyinput (void)
3372#else
3373 static int input (void)
3374#endif
3375
3376/* %endif */
3377/* %if-c++-only */
3378/* %endif */
3379{
3380 int c;
3381
3382 *(yy_c_buf_p) = (yy_hold_char);
3383
3384 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3385 {
3386 /* yy_c_buf_p now points to the character we want to return.
3387 * If this occurs *before* the EOB characters, then it's a
3388 * valid NUL; if not, then we've hit the end of the buffer.
3389 */
3390 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3391 /* This was really a NUL. */
3392 *(yy_c_buf_p) = '\0';
3393
3394 else
3395 { /* need more input */
3396 int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
3397 ++(yy_c_buf_p);
3398
3399 switch ( yy_get_next_buffer( ) )
3400 {
3401 case EOB_ACT_LAST_MATCH:
3402 /* This happens because yy_g_n_b()
3403 * sees that we've accumulated a
3404 * token and flags that we need to
3405 * try matching the token before
3406 * proceeding. But for input(),
3407 * there's no matching to consider.
3408 * So convert the EOB_ACT_LAST_MATCH
3409 * to EOB_ACT_END_OF_FILE.
3410 */
3411
3412 /* Reset buffer status. */
3413 yyrestart( yyin );
3414
3415 /*FALLTHROUGH*/
3416
3417 case EOB_ACT_END_OF_FILE:
3418 {
3419 if ( yywrap( ) )
3420 return 0;
3421
3422 if ( ! (yy_did_buffer_switch_on_eof) )
3423 YY_NEW_FILE;
3424#ifdef __cplusplus
3425 return yyinput();
3426#else
3427 return input();
3428#endif
3429 }
3430
3431 case EOB_ACT_CONTINUE_SCAN:
3432 (yy_c_buf_p) = (yytext_ptr) + offset;
3433 break;
3434 }
3435 }
3436 }
3437
3438 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3439 *(yy_c_buf_p) = '\0'; /* preserve yytext */
3440 (yy_hold_char) = *++(yy_c_buf_p);
3441
3442/* %% [19.0] update BOL and yylineno */
3443 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3444
3445 return c;
3446}
3447/* %if-c-only */
3448#endif /* ifndef YY_NO_INPUT */
3449/* %endif */
3450
3451/** Immediately switch to a different input stream.
3452 * @param input_file A readable stream.
3453 *
3454 * @note This function does not reset the start condition to @c INITIAL .
3455 */
3456/* %if-c-only */
3457 void yyrestart (FILE * input_file )
3458/* %endif */
3459/* %if-c++-only */
3460/* %endif */
3461{
3462
3463 if ( ! YY_CURRENT_BUFFER ){
3464 yyensure_buffer_stack ();
3465 YY_CURRENT_BUFFER_LVALUE =
3466 yy_create_buffer( yyin, YY_BUF_SIZE );
3467 }
3468
3469 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
3470 yy_load_buffer_state( );
3471}
3472
3473/* %if-c++-only */
3474/* %endif */
3475
3476/** Switch to a different input buffer.
3477 * @param new_buffer The new input buffer.
3478 *
3479 */
3480/* %if-c-only */
3481 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
3482/* %endif */
3483/* %if-c++-only */
3484/* %endif */
3485{
3486
3487 /* TODO. We should be able to replace this entire function body
3488 * with
3489 * yypop_buffer_state();
3490 * yypush_buffer_state(new_buffer);
3491 */
3492 yyensure_buffer_stack ();
3493 if ( YY_CURRENT_BUFFER == new_buffer )
3494 return;
3495
3496 if ( YY_CURRENT_BUFFER )
3497 {
3498 /* Flush out information for old buffer. */
3499 *(yy_c_buf_p) = (yy_hold_char);
3500 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3501 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3502 }
3503
3504 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3505 yy_load_buffer_state( );
3506
3507 /* We don't actually know whether we did this switch during
3508 * EOF (yywrap()) processing, but the only time this flag
3509 * is looked at is after yywrap() is called, so it's safe
3510 * to go ahead and always set it.
3511 */
3512 (yy_did_buffer_switch_on_eof) = 1;
3513}
3514
3515/* %if-c-only */
3516static void yy_load_buffer_state (void)
3517/* %endif */
3518/* %if-c++-only */
3519/* %endif */
3520{
3521 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3522 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3523/* %if-c-only */
3524 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3525/* %endif */
3526/* %if-c++-only */
3527/* %endif */
3528 (yy_hold_char) = *(yy_c_buf_p);
3529}
3530
3531/** Allocate and initialize an input buffer state.
3532 * @param file A readable stream.
3533 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3534 *
3535 * @return the allocated buffer state.
3536 */
3537/* %if-c-only */
3538 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
3539/* %endif */
3540/* %if-c++-only */
3541/* %endif */
3542{
3543 YY_BUFFER_STATE b;
3544
3545 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3546 if ( ! b )
3547 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3548
3549 b->yy_buf_size = size;
3550
3551 /* yy_ch_buf has to be 2 characters longer than the size given because
3552 * we need to put in 2 end-of-buffer characters.
3553 */
3554 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
3555 if ( ! b->yy_ch_buf )
3556 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3557
3558 b->yy_is_our_buffer = 1;
3559
3560 yy_init_buffer( b, file );
3561
3562 return b;
3563}
3564
3565/* %if-c++-only */
3566/* %endif */
3567
3568/** Destroy the buffer.
3569 * @param b a buffer created with yy_create_buffer()
3570 *
3571 */
3572/* %if-c-only */
3573 void yy_delete_buffer (YY_BUFFER_STATE b )
3574/* %endif */
3575/* %if-c++-only */
3576/* %endif */
3577{
3578
3579 if ( ! b )
3580 return;
3581
3582 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3583 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3584
3585 if ( b->yy_is_our_buffer )
3586 yyfree( (void *) b->yy_ch_buf );
3587
3588 yyfree( (void *) b );
3589}
3590
3591/* Initializes or reinitializes a buffer.
3592 * This function is sometimes called more than once on the same buffer,
3593 * such as during a yyrestart() or at EOF.
3594 */
3595/* %if-c-only */
3596 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3597/* %endif */
3598/* %if-c++-only */
3599/* %endif */
3600
3601{
3602 int oerrno = errno;
3603
3604 yy_flush_buffer( b );
3605
3606/* %if-c-only */
3607 b->yy_input_file = file;
3608/* %endif */
3609/* %if-c++-only */
3610/* %endif */
3611 b->yy_fill_buffer = 1;
3612
3613 /* If b is the current buffer, then yy_init_buffer was _probably_
3614 * called from yyrestart() or through yy_get_next_buffer.
3615 * In that case, we don't want to reset the lineno or column.
3616 */
3617 if (b != YY_CURRENT_BUFFER){
3618 b->yy_bs_lineno = 1;
3619 b->yy_bs_column = 0;
3620 }
3621
3622/* %if-c-only */
3623
3624 b->yy_is_interactive = 0;
3625
3626/* %endif */
3627/* %if-c++-only */
3628/* %endif */
3629 errno = oerrno;
3630}
3631
3632/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3633 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3634 *
3635 */
3636/* %if-c-only */
3637 void yy_flush_buffer (YY_BUFFER_STATE b )
3638/* %endif */
3639/* %if-c++-only */
3640/* %endif */
3641{
3642 if ( ! b )
3643 return;
3644
3645 b->yy_n_chars = 0;
3646
3647 /* We always need two end-of-buffer characters. The first causes
3648 * a transition to the end-of-buffer state. The second causes
3649 * a jam in that state.
3650 */
3651 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3652 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3653
3654 b->yy_buf_pos = &b->yy_ch_buf[0];
3655
3656 b->yy_at_bol = 1;
3657 b->yy_buffer_status = YY_BUFFER_NEW;
3658
3659 if ( b == YY_CURRENT_BUFFER )
3660 yy_load_buffer_state( );
3661}
3662
3663/* %if-c-or-c++ */
3664/** Pushes the new state onto the stack. The new state becomes
3665 * the current state. This function will allocate the stack
3666 * if necessary.
3667 * @param new_buffer The new state.
3668 *
3669 */
3670/* %if-c-only */
3671void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3672/* %endif */
3673/* %if-c++-only */
3674/* %endif */
3675{
3676 if (new_buffer == NULL)
3677 return;
3678
3679 yyensure_buffer_stack();
3680
3681 /* This block is copied from yy_switch_to_buffer. */
3682 if ( YY_CURRENT_BUFFER )
3683 {
3684 /* Flush out information for old buffer. */
3685 *(yy_c_buf_p) = (yy_hold_char);
3686 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3687 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3688 }
3689
3690 /* Only push if top exists. Otherwise, replace top. */
3691 if (YY_CURRENT_BUFFER)
3692 (yy_buffer_stack_top)++;
3693 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3694
3695 /* copied from yy_switch_to_buffer. */
3696 yy_load_buffer_state( );
3697 (yy_did_buffer_switch_on_eof) = 1;
3698}
3699/* %endif */
3700
3701/* %if-c-or-c++ */
3702/** Removes and deletes the top of the stack, if present.
3703 * The next element becomes the new top.
3704 *
3705 */
3706/* %if-c-only */
3707void yypop_buffer_state (void)
3708/* %endif */
3709/* %if-c++-only */
3710/* %endif */
3711{
3712 if (!YY_CURRENT_BUFFER)
3713 return;
3714
3715 yy_delete_buffer(YY_CURRENT_BUFFER );
3716 YY_CURRENT_BUFFER_LVALUE = NULL;
3717 if ((yy_buffer_stack_top) > 0)
3718 --(yy_buffer_stack_top);
3719
3720 if (YY_CURRENT_BUFFER) {
3721 yy_load_buffer_state( );
3722 (yy_did_buffer_switch_on_eof) = 1;
3723 }
3724}
3725/* %endif */
3726
3727/* %if-c-or-c++ */
3728/* Allocates the stack if it does not exist.
3729 * Guarantees space for at least one push.
3730 */
3731/* %if-c-only */
3732static void yyensure_buffer_stack (void)
3733/* %endif */
3734/* %if-c++-only */
3735/* %endif */
3736{
3737 yy_size_t num_to_alloc;
3738
3739 if (!(yy_buffer_stack)) {
3740
3741 /* First allocation is just for 2 elements, since we don't know if this
3742 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3743 * immediate realloc on the next call.
3744 */
3745 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
3746 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3747 (num_to_alloc * sizeof(struct yy_buffer_state*)
3748 );
3749 if ( ! (yy_buffer_stack) )
3750 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3751
3752 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3753
3754 (yy_buffer_stack_max) = num_to_alloc;
3755 (yy_buffer_stack_top) = 0;
3756 return;
3757 }
3758
3759 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3760
3761 /* Increase the buffer to prepare for a possible push. */
3762 yy_size_t grow_size = 8 /* arbitrary grow size */;
3763
3764 num_to_alloc = (yy_buffer_stack_max) + grow_size;
3765 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3766 ((yy_buffer_stack),
3767 num_to_alloc * sizeof(struct yy_buffer_state*)
3768 );
3769 if ( ! (yy_buffer_stack) )
3770 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3771
3772 /* zero only the new slots.*/
3773 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3774 (yy_buffer_stack_max) = num_to_alloc;
3775 }
3776}
3777/* %endif */
3778
3779/* %if-c-only */
3780/** Setup the input buffer state to scan directly from a user-specified character buffer.
3781 * @param base the character buffer
3782 * @param size the size in bytes of the character buffer
3783 *
3784 * @return the newly allocated buffer state object.
3785 */
3786YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
3787{
3788 YY_BUFFER_STATE b;
3789
3790 if ( size < 2 ||
3791 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3792 base[size-1] != YY_END_OF_BUFFER_CHAR )
3793 /* They forgot to leave room for the EOB's. */
3794 return NULL;
3795
3796 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3797 if ( ! b )
3798 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3799
3800 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
3801 b->yy_buf_pos = b->yy_ch_buf = base;
3802 b->yy_is_our_buffer = 0;
3803 b->yy_input_file = NULL;
3804 b->yy_n_chars = b->yy_buf_size;
3805 b->yy_is_interactive = 0;
3806 b->yy_at_bol = 1;
3807 b->yy_fill_buffer = 0;
3808 b->yy_buffer_status = YY_BUFFER_NEW;
3809
3810 yy_switch_to_buffer( b );
3811
3812 return b;
3813}
3814/* %endif */
3815
3816/* %if-c-only */
3817/** Setup the input buffer state to scan a string. The next call to yylex() will
3818 * scan from a @e copy of @a str.
3819 * @param yystr a NUL-terminated string to scan
3820 *
3821 * @return the newly allocated buffer state object.
3822 * @note If you want to scan bytes that may contain NUL values, then use
3823 * yy_scan_bytes() instead.
3824 */
3825YY_BUFFER_STATE yy_scan_string (const char * yystr )
3826{
3827
3828 return yy_scan_bytes( yystr, (int) strlen(yystr) );
3829}
3830/* %endif */
3831
3832/* %if-c-only */
3833/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
3834 * scan from a @e copy of @a bytes.
3835 * @param yybytes the byte buffer to scan
3836 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3837 *
3838 * @return the newly allocated buffer state object.
3839 */
3840YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
3841{
3842 YY_BUFFER_STATE b;
3843 char *buf;
3844 yy_size_t n;
3845 int i;
3846
3847 /* Get memory for full buffer, including space for trailing EOB's. */
3848 n = (yy_size_t) (_yybytes_len + 2);
3849 buf = (char *) yyalloc( n );
3850 if ( ! buf )
3851 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3852
3853 for ( i = 0; i < _yybytes_len; ++i )
3854 buf[i] = yybytes[i];
3855
3856 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3857
3858 b = yy_scan_buffer( buf, n );
3859 if ( ! b )
3860 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3861
3862 /* It's okay to grow etc. this buffer, and we should throw it
3863 * away when we're done.
3864 */
3865 b->yy_is_our_buffer = 1;
3866
3867 return b;
3868}
3869/* %endif */
3870
3871#ifndef YY_EXIT_FAILURE
3872#define YY_EXIT_FAILURE 2
3873#endif
3874
3875/* %if-c-only */
3876static void yynoreturn yy_fatal_error (const char* msg )
3877{
3878 fprintf( stderr, "%s\n", msg );
3879 exit( YY_EXIT_FAILURE );
3880}
3881/* %endif */
3882/* %if-c++-only */
3883/* %endif */
3884
3885/* Redefine yyless() so it works in section 3 code. */
3886
3887#undef yyless
3888#define yyless(n) \
3889 do \
3890 { \
3891 /* Undo effects of setting up yytext. */ \
3892 int yyless_macro_arg = (n); \
3893 YY_LESS_LINENO(yyless_macro_arg);\
3894 yytext[yyleng] = (yy_hold_char); \
3895 (yy_c_buf_p) = yytext + yyless_macro_arg; \
3896 (yy_hold_char) = *(yy_c_buf_p); \
3897 *(yy_c_buf_p) = '\0'; \
3898 yyleng = yyless_macro_arg; \
3899 } \
3900 while ( 0 )
3901
3902/* Accessor methods (get/set functions) to struct members. */
3903
3904/* %if-c-only */
3905/* %if-reentrant */
3906/* %endif */
3907
3908/** Get the current line number.
3909 *
3910 */
3911int yyget_lineno (void)
3912{
3913
3914 return yylineno;
3915}
3916
3917/** Get the input stream.
3918 *
3919 */
3920FILE *yyget_in (void)
3921{
3922 return yyin;
3923}
3924
3925/** Get the output stream.
3926 *
3927 */
3928FILE *yyget_out (void)
3929{
3930 return yyout;
3931}
3932
3933/** Get the length of the current token.
3934 *
3935 */
3936int yyget_leng (void)
3937{
3938 return yyleng;
3939}
3940
3941/** Get the current token.
3942 *
3943 */
3944
3945char *yyget_text (void)
3946{
3947 return yytext;
3948}
3949
3950/* %if-reentrant */
3951/* %endif */
3952
3953/** Set the current line number.
3954 * @param _line_number line number
3955 *
3956 */
3957void yyset_lineno (int _line_number )
3958{
3959
3960 yylineno = _line_number;
3961}
3962
3963/** Set the input stream. This does not discard the current
3964 * input buffer.
3965 * @param _in_str A readable stream.
3966 *
3967 * @see yy_switch_to_buffer
3968 */
3969void yyset_in (FILE * _in_str )
3970{
3971 yyin = _in_str ;
3972}
3973
3974void yyset_out (FILE * _out_str )
3975{
3976 yyout = _out_str ;
3977}
3978
3979int yyget_debug (void)
3980{
3981 return yy_flex_debug;
3982}
3983
3984void yyset_debug (int _bdebug )
3985{
3986 yy_flex_debug = _bdebug ;
3987}
3988
3989/* %endif */
3990
3991/* %if-reentrant */
3992/* %if-bison-bridge */
3993/* %endif */
3994/* %endif if-c-only */
3995
3996/* %if-c-only */
3997static int yy_init_globals (void)
3998{
3999 /* Initialization is the same as for the non-reentrant scanner.
4000 * This function is called from yylex_destroy(), so don't allocate here.
4001 */
4002
4003 (yy_buffer_stack) = NULL;
4004 (yy_buffer_stack_top) = 0;
4005 (yy_buffer_stack_max) = 0;
4006 (yy_c_buf_p) = NULL;
4007 (yy_init) = 0;
4008 (yy_start) = 0;
4009
4010/* Defined in main.c */
4011#ifdef YY_STDINIT
4012 yyin = stdin;
4013 yyout = stdout;
4014#else
4015 yyin = NULL;
4016 yyout = NULL;
4017#endif
4018
4019 /* For future reference: Set errno on error, since we are called by
4020 * yylex_init()
4021 */
4022 return 0;
4023}
4024/* %endif */
4025
4026/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
4027/* yylex_destroy is for both reentrant and non-reentrant scanners. */
4028int yylex_destroy (void)
4029{
4030
4031 /* Pop the buffer stack, destroying each element. */
4032 while(YY_CURRENT_BUFFER){
4033 yy_delete_buffer( YY_CURRENT_BUFFER );
4034 YY_CURRENT_BUFFER_LVALUE = NULL;
4035 yypop_buffer_state();
4036 }
4037
4038 /* Destroy the stack itself. */
4039 yyfree((yy_buffer_stack) );
4040 (yy_buffer_stack) = NULL;
4041
4042 /* Reset the globals. This is important in a non-reentrant scanner so the next time
4043 * yylex() is called, initialization will occur. */
4044 yy_init_globals( );
4045
4046/* %if-reentrant */
4047/* %endif */
4048 return 0;
4049}
4050/* %endif */
4051
4052/*
4053 * Internal utility routines.
4054 */
4055
4056#ifndef yytext_ptr
4057static void yy_flex_strncpy (char* s1, const char * s2, int n )
4058{
4059
4060 int i;
4061 for ( i = 0; i < n; ++i )
4062 s1[i] = s2[i];
4063}
4064#endif
4065
4066#ifdef YY_NEED_STRLEN
4067static int yy_flex_strlen (const char * s )
4068{
4069 int n;
4070 for ( n = 0; s[n]; ++n )
4071 ;
4072
4073 return n;
4074}
4075#endif
4076
4077void *yyalloc (yy_size_t size )
4078{
4079 return malloc(size);
4080}
4081
4082void *yyrealloc (void * ptr, yy_size_t size )
4083{
4084
4085 /* The cast to (char *) in the following accommodates both
4086 * implementations that use char* generic pointers, and those
4087 * that use void* generic pointers. It works with the latter
4088 * because both ANSI C and C++ allow castless assignment from
4089 * any pointer type to void*, and deal with argument conversions
4090 * as though doing an assignment.
4091 */
4092 return realloc(ptr, size);
4093}
4094
4095void yyfree (void * ptr )
4096{
4097 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
4098}
4099
4100/* %if-tables-serialization definitions */
4101/* %define-yytables The name for this specific scanner's tables. */
4102#define YYTABLES_NAME "yytables"
4103/* %endif */
4104
4105/* %ok-for-header */
4106
4107#line 811 "/Users/akim/src/gnu/bison/src/scan-gram.l"
4108
4109
4110/* Read bytes from FP into buffer BUF of size SIZE. Return the
4111 number of bytes read. Remove '\r' from input, treating \r\n
4112 and isolated \r as \n. */
4113
4114static size_t
4115no_cr_read (FILE *fp, char *buf, size_t size)
4116{
4117 size_t bytes_read = fread (buf, 1, size, fp);
4118 if (bytes_read)
4119 {
4120 char *w = memchr (buf, '\r', bytes_read);
4121 if (w)
4122 {
4123 char const *r = ++w;
4124 char const *lim = buf + bytes_read;
4125
4126 for (;;)
4127 {
4128 /* Found an '\r'. Treat it like '\n', but ignore any
4129 '\n' that immediately follows. */
4130 w[-1] = '\n';
4131 if (r == lim)
4132 {
4133 int ch = getc (fp);
4134 if (ch != '\n' && ungetc (ch, fp) != ch)
4135 break;
4136 }
4137 else if (*r == '\n')
4138 r++;
4139
4140 /* Copy until the next '\r'. */
4141 do
4142 {
4143 if (r == lim)
4144 return w - buf;
4145 }
4146 while ((*w++ = *r++) != '\r');
4147 }
4148
4149 return w - buf;
4150 }
4151 }
4152
4153 return bytes_read;
4154}
4155
4156
4157
4158/*------------------------------------------------------.
4159| Scan NUMBER for a base-BASE integer at location LOC. |
4160`------------------------------------------------------*/
4161
4162static unsigned long
4163scan_integer (char const *number, int base, location loc)
4164{
4165 verify (INT_MAX < ULONG_MAX);
4166 if (base == 16)
4167 complain (&loc, Wyacc,
4168 _("POSIX Yacc does not support hexadecimal literals"));
4169
4170 unsigned long num = strtoul (number, NULL, base);
4171
4172 if (INT_MAX < num)
4173 {
4174 complain (&loc, complaint, _("integer out of range: %s"),
4175 quote (number));
4176 num = INT_MAX;
4177 }
4178
4179 return num;
4180}
4181
4182
4183/*------------------------------------------------------------------.
4184| Convert universal character name UCN to a single-byte character, |
4185| and return that character. Return -1 if UCN does not correspond |
4186| to a single-byte character. |
4187`------------------------------------------------------------------*/
4188
4189static int
4190convert_ucn_to_byte (char const *ucn)
4191{
4192 verify (UCHAR_MAX <= INT_MAX);
4193 unsigned long code = strtoul (ucn + 2, NULL, 16);
4194
4195 /* FIXME: Currently we assume Unicode-compatible unibyte characters
4196 on ASCII hosts (i.e., Latin-1 on hosts with 8-bit bytes). On
4197 non-ASCII hosts we support only the portable C character set.
4198 These limitations should be removed once we add support for
4199 multibyte characters. */
4200
4201 if (UCHAR_MAX < code)
4202 return -1;
4203
4204#if ! ('$' == 0x24 && '@' == 0x40 && '`' == 0x60 && '~' == 0x7e)
4205 {
4206 /* A non-ASCII host. Use CODE to index into a table of the C
4207 basic execution character set, which is guaranteed to exist on
4208 all Standard C platforms. This table also includes '$', '@',
4209 and '`', which are not in the basic execution character set but
4210 which are unibyte characters on all the platforms that we know
4211 about. */
4212 static signed char const table[] =
4213 {
4214 '\0', -1, -1, -1, -1, -1, -1, '\a',
4215 '\b', '\t', '\n', '\v', '\f', '\r', -1, -1,
4216 -1, -1, -1, -1, -1, -1, -1, -1,
4217 -1, -1, -1, -1, -1, -1, -1, -1,
4218 ' ', '!', '"', '#', '$', '%', '&', '\'',
4219 '(', ')', '*', '+', ',', '-', '.', '/',
4220 '0', '1', '2', '3', '4', '5', '6', '7',
4221 '8', '9', ':', ';', '<', '=', '>', '?',
4222 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
4223 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
4224 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
4225 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
4226 '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
4227 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
4228 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
4229 'x', 'y', 'z', '{', '|', '}', '~'
4230 };
4231
4232 code = code < sizeof table ? table[code] : -1;
4233 }
4234#endif
4235
4236 return code;
4237}
4238
4239
4240/*---------------------------------------------------------------------.
4241| Handle '#line INT( "FILE")?\n'. ARGS has already skipped '#line '. |
4242`---------------------------------------------------------------------*/
4243
4244static void
4245handle_syncline (char *args, location loc)
4246{
4247 char *file;
4248 unsigned long lineno = strtoul (args, &file, 10);
4249 if (INT_MAX <= lineno)
4250 {
4251 complain (&loc, Wother, _("line number overflow"));
4252 lineno = INT_MAX;
4253 }
4254
4255 file = strchr (file, '"');
4256 if (file)
4257 {
4258 *strchr (file + 1, '"') = '\0';
4259 current_file = uniqstr_new (file + 1);
4260 }
4261 boundary_set (&scanner_cursor, current_file, lineno, 1, 1);
4262}
4263
4264
4265/*----------------------------------------------------------------.
4266| For a token or comment starting at START, report message MSGID, |
4267| which should say that an end marker was found before the |
4268| expected TOKEN_END. Then, pretend that TOKEN_END was found. |
4269`----------------------------------------------------------------*/
4270
4271static void
4272unexpected_end (boundary start, char const *msgid, char const *token_end)
4273{
4274 location loc;
4275 loc.start = start;
4276 loc.end = scanner_cursor;
4277 size_t i = strlen (token_end);
4278
4279 /* Adjust scanner cursor so that any later message does not count
4280 the characters about to be inserted. */
4281 scanner_cursor.column -= i;
4282 scanner_cursor.byte -= i;
4283
4284 while (i != 0)
4285 unput (token_end[--i]);
4286
4287 token_end = quote (token_end);
4288 /* Instead of '\'', display "'". */
4289 if (STREQ (token_end, "'\\''"))
4290 token_end = "\"'\"";
4291 complain (&loc, complaint, msgid, token_end);
4292}
4293
4294
4295/*------------------------------------------------------------------------.
4296| Report an unexpected EOF in a token or comment starting at START. |
4297| An end of file was encountered and the expected TOKEN_END was missing. |
4298| After reporting the problem, pretend that TOKEN_END was found. |
4299`------------------------------------------------------------------------*/
4300
4301static void
4302unexpected_eof (boundary start, char const *token_end)
4303{
4304 unexpected_end (start, _("missing %s at end of file"), token_end);
4305}
4306
4307
4308/*----------------------------------------.
4309| Likewise, but for unexpected newlines. |
4310`----------------------------------------*/
4311
4312static void
4313unexpected_newline (boundary start, char const *token_end)
4314{
4315 unexpected_end (start, _("missing %s at end of line"), token_end);
4316}
4317
4318
4319/*-------------------------.
4320| Initialize the scanner. |
4321`-------------------------*/
4322
4323void
4324gram_scanner_initialize (void)
4325{
4326 obstack_init (&obstack_for_string);
4327}
4328
4329
4330/*-----------------------------------------------.
4331| Free all the memory allocated to the scanner. |
4332`-----------------------------------------------*/
4333
4334void
4335gram_scanner_free (void)
4336{
4337 obstack_free (&obstack_for_string, 0);
4338 /* Reclaim Flex's buffers. */
4339 yylex_destroy ();
4340}
4341
4342