Kea 3.1.9
netconf_lexer.cc
Go to the documentation of this file.
1#line 1 "netconf_lexer.cc"
2
3#line 3 "netconf_lexer.cc"
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 netconf__create_buffer
13#define yy_delete_buffer netconf__delete_buffer
14#define yy_scan_buffer netconf__scan_buffer
15#define yy_scan_string netconf__scan_string
16#define yy_scan_bytes netconf__scan_bytes
17#define yy_init_buffer netconf__init_buffer
18#define yy_flush_buffer netconf__flush_buffer
19#define yy_load_buffer_state netconf__load_buffer_state
20#define yy_switch_to_buffer netconf__switch_to_buffer
21#define yypush_buffer_state netconf_push_buffer_state
22#define yypop_buffer_state netconf_pop_buffer_state
23#define yyensure_buffer_stack netconf_ensure_buffer_stack
24#define yy_flex_debug netconf__flex_debug
25#define yyin netconf_in
26#define yyleng netconf_leng
27#define yylex netconf_lex
28#define yylineno netconf_lineno
29#define yyout netconf_out
30#define yyrestart netconf_restart
31#define yytext netconf_text
32#define yywrap netconf_wrap
33#define yyalloc netconf_alloc
34#define yyrealloc netconf_realloc
35#define yyfree netconf_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 netconf__create_buffer_ALREADY_DEFINED
55#else
56#define yy_create_buffer netconf__create_buffer
57#endif
58
59#ifdef yy_delete_buffer
60#define netconf__delete_buffer_ALREADY_DEFINED
61#else
62#define yy_delete_buffer netconf__delete_buffer
63#endif
64
65#ifdef yy_scan_buffer
66#define netconf__scan_buffer_ALREADY_DEFINED
67#else
68#define yy_scan_buffer netconf__scan_buffer
69#endif
70
71#ifdef yy_scan_string
72#define netconf__scan_string_ALREADY_DEFINED
73#else
74#define yy_scan_string netconf__scan_string
75#endif
76
77#ifdef yy_scan_bytes
78#define netconf__scan_bytes_ALREADY_DEFINED
79#else
80#define yy_scan_bytes netconf__scan_bytes
81#endif
82
83#ifdef yy_init_buffer
84#define netconf__init_buffer_ALREADY_DEFINED
85#else
86#define yy_init_buffer netconf__init_buffer
87#endif
88
89#ifdef yy_flush_buffer
90#define netconf__flush_buffer_ALREADY_DEFINED
91#else
92#define yy_flush_buffer netconf__flush_buffer
93#endif
94
95#ifdef yy_load_buffer_state
96#define netconf__load_buffer_state_ALREADY_DEFINED
97#else
98#define yy_load_buffer_state netconf__load_buffer_state
99#endif
100
101#ifdef yy_switch_to_buffer
102#define netconf__switch_to_buffer_ALREADY_DEFINED
103#else
104#define yy_switch_to_buffer netconf__switch_to_buffer
105#endif
106
107#ifdef yypush_buffer_state
108#define netconf_push_buffer_state_ALREADY_DEFINED
109#else
110#define yypush_buffer_state netconf_push_buffer_state
111#endif
112
113#ifdef yypop_buffer_state
114#define netconf_pop_buffer_state_ALREADY_DEFINED
115#else
116#define yypop_buffer_state netconf_pop_buffer_state
117#endif
118
119#ifdef yyensure_buffer_stack
120#define netconf_ensure_buffer_stack_ALREADY_DEFINED
121#else
122#define yyensure_buffer_stack netconf_ensure_buffer_stack
123#endif
124
125#ifdef yylex
126#define netconf_lex_ALREADY_DEFINED
127#else
128#define yylex netconf_lex
129#endif
130
131#ifdef yyrestart
132#define netconf_restart_ALREADY_DEFINED
133#else
134#define yyrestart netconf_restart
135#endif
136
137#ifdef yylex_init
138#define netconf_lex_init_ALREADY_DEFINED
139#else
140#define yylex_init netconf_lex_init
141#endif
142
143#ifdef yylex_init_extra
144#define netconf_lex_init_extra_ALREADY_DEFINED
145#else
146#define yylex_init_extra netconf_lex_init_extra
147#endif
148
149#ifdef yylex_destroy
150#define netconf_lex_destroy_ALREADY_DEFINED
151#else
152#define yylex_destroy netconf_lex_destroy
153#endif
154
155#ifdef yyget_debug
156#define netconf_get_debug_ALREADY_DEFINED
157#else
158#define yyget_debug netconf_get_debug
159#endif
160
161#ifdef yyset_debug
162#define netconf_set_debug_ALREADY_DEFINED
163#else
164#define yyset_debug netconf_set_debug
165#endif
166
167#ifdef yyget_extra
168#define netconf_get_extra_ALREADY_DEFINED
169#else
170#define yyget_extra netconf_get_extra
171#endif
172
173#ifdef yyset_extra
174#define netconf_set_extra_ALREADY_DEFINED
175#else
176#define yyset_extra netconf_set_extra
177#endif
178
179#ifdef yyget_in
180#define netconf_get_in_ALREADY_DEFINED
181#else
182#define yyget_in netconf_get_in
183#endif
184
185#ifdef yyset_in
186#define netconf_set_in_ALREADY_DEFINED
187#else
188#define yyset_in netconf_set_in
189#endif
190
191#ifdef yyget_out
192#define netconf_get_out_ALREADY_DEFINED
193#else
194#define yyget_out netconf_get_out
195#endif
196
197#ifdef yyset_out
198#define netconf_set_out_ALREADY_DEFINED
199#else
200#define yyset_out netconf_set_out
201#endif
202
203#ifdef yyget_leng
204#define netconf_get_leng_ALREADY_DEFINED
205#else
206#define yyget_leng netconf_get_leng
207#endif
208
209#ifdef yyget_text
210#define netconf_get_text_ALREADY_DEFINED
211#else
212#define yyget_text netconf_get_text
213#endif
214
215#ifdef yyget_lineno
216#define netconf_get_lineno_ALREADY_DEFINED
217#else
218#define yyget_lineno netconf_get_lineno
219#endif
220
221#ifdef yyset_lineno
222#define netconf_set_lineno_ALREADY_DEFINED
223#else
224#define yyset_lineno netconf_set_lineno
225#endif
226
227#ifdef yywrap
228#define netconf_wrap_ALREADY_DEFINED
229#else
230#define yywrap netconf_wrap
231#endif
232
233/* %endif */
234
235#ifdef yyalloc
236#define netconf_alloc_ALREADY_DEFINED
237#else
238#define yyalloc netconf_alloc
239#endif
240
241#ifdef yyrealloc
242#define netconf_realloc_ALREADY_DEFINED
243#else
244#define yyrealloc netconf_realloc
245#endif
246
247#ifdef yyfree
248#define netconf_free_ALREADY_DEFINED
249#else
250#define yyfree netconf_free
251#endif
252
253/* %if-c-only */
254
255#ifdef yytext
256#define netconf_text_ALREADY_DEFINED
257#else
258#define yytext netconf_text
259#endif
260
261#ifdef yyleng
262#define netconf_leng_ALREADY_DEFINED
263#else
264#define yyleng netconf_leng
265#endif
266
267#ifdef yyin
268#define netconf_in_ALREADY_DEFINED
269#else
270#define yyin netconf_in
271#endif
272
273#ifdef yyout
274#define netconf_out_ALREADY_DEFINED
275#else
276#define yyout netconf_out
277#endif
278
279#ifdef yy_flex_debug
280#define netconf__flex_debug_ALREADY_DEFINED
281#else
282#define yy_flex_debug netconf__flex_debug
283#endif
284
285#ifdef yylineno
286#define netconf_lineno_ALREADY_DEFINED
287#else
288#define yylineno netconf_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
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 */
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 */
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;
530 int yy_bs_column;
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
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;
562static size_t yy_buffer_stack_max = 0;
563static YY_BUFFER_STATE * yy_buffer_stack = NULL;
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 */
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 );
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 netconf_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 64
695#define YY_END_OF_BUFFER 65
696/* This struct is not used in this scanner,
697 but its presence is necessary. */
698struct yy_trans_info
699 {
701 flex_int32_t yy_nxt;
702 };
703static const flex_int16_t yy_accept[373] =
704 { 0,
705 57, 57, 0, 0, 0, 0, 0, 0, 0, 0,
706 65, 63, 10, 11, 63, 1, 57, 53, 57, 57,
707 63, 56, 56, 54, 63, 63, 63, 63, 63, 49,
708 50, 63, 63, 63, 51, 52, 5, 5, 5, 63,
709 63, 63, 10, 11, 0, 0, 44, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 1, 57, 57, 0, 56, 56, 57, 3,
712 2, 55, 56, 6, 0, 57, 0, 0, 0, 0,
713 0, 0, 4, 0, 0, 9, 0, 45, 0, 0,
714 0, 47, 0, 0, 0, 0, 0, 0, 0, 0,
715
716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
718 0, 0, 0, 8, 0, 0, 46, 48, 0, 0,
719 0, 0, 21, 0, 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 62, 60, 0, 59, 58,
722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724 0, 0, 0, 0, 0, 0, 0, 0, 61, 58,
725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726
727 0, 25, 0, 0, 0, 0, 0, 0, 34, 0,
728 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
729 0, 0, 0, 0, 0, 19, 20, 38, 0, 0,
730 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 40, 37, 0, 0, 0,
733 0, 0, 0, 26, 0, 0, 0, 12, 0, 14,
734 0, 0, 0, 31, 33, 0, 39, 0, 0, 0,
735 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 0, 43, 0, 0, 0,
737
738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,
740 0, 0, 0, 0, 32, 0, 0, 29, 0, 0,
741 0, 15, 0, 0, 0, 0, 0, 28, 27, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
743 0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
744 36, 35, 0, 0, 30, 18, 0, 0, 0, 17,
745 16, 0
746 } ;
747
748static const YY_CHAR yy_ec[256] =
749 { 0,
750 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
751 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
752 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
753 1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
754 5, 8, 9, 10, 11, 12, 13, 14, 15, 16,
755 15, 17, 15, 18, 15, 15, 15, 19, 5, 20,
756 5, 21, 22, 5, 23, 24, 24, 24, 25, 26,
757 5, 5, 5, 5, 5, 27, 5, 28, 5, 5,
758 5, 29, 30, 31, 32, 5, 5, 5, 5, 5,
759 33, 34, 35, 5, 36, 5, 37, 38, 39, 40,
760
761 41, 42, 43, 44, 45, 5, 46, 47, 48, 49,
762 50, 51, 5, 52, 53, 54, 55, 56, 5, 57,
763 58, 59, 60, 5, 61, 5, 5, 5, 5, 5,
764 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
765 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
766 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
767 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
768 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
769 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
770 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
771
772 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
773 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
774 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
775 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
776 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
777 5, 5, 5, 5, 5
778 } ;
779
780static const YY_CHAR yy_meta[62] =
781 { 0,
782 1, 1, 2, 1, 1, 3, 1, 1, 1, 1,
783 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
784 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
785 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
786 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
787 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
788 1
789 } ;
790
791static const flex_int16_t yy_base[381] =
792 { 0,
793 0, 0, 60, 63, 66, 0, 64, 68, 65, 67,
794 288, 2551, 86, 281, 127, 0, 107, 2551, 122, 127,
795 85, 172, 184, 2551, 259, 142, 77, 63, 102, 2551,
796 2551, 79, 117, 121, 2551, 2551, 2551, 101, 265, 221,
797 0, 228, 102, 236, 158, 202, 2551, 209, 210, 226,
798 232, 239, 255, 266, 284, 290, 302, 308, 320, 342,
799 350, 364, 0, 344, 363, 391, 398, 410, 415, 2551,
800 0, 429, 443, 2551, 203, 403, 167, 179, 130, 204,
801 227, 138, 2551, 183, 189, 2551, 173, 2551, 456, 447,
802 185, 470, 506, 485, 535, 494, 548, 554, 560, 569,
803
804 575, 589, 596, 604, 610, 630, 639, 645, 653, 664,
805 674, 682, 688, 704, 722, 0, 194, 248, 205, 241,
806 250, 212, 134, 2551, 728, 140, 2551, 2551, 756, 734,
807 741, 749, 2551, 757, 784, 798, 804, 813, 819, 825,
808 838, 854, 860, 875, 881, 889, 896, 902, 911, 918,
809 932, 938, 945, 953, 238, 2551, 2551, 274, 2551, 2551,
810 80, 959, 996, 972, 998, 1022, 1039, 1045, 1051, 1058,
811 1064, 1075, 1085, 1098, 1104, 1112, 1121, 1127, 1133, 1141,
812 1156, 1168, 1175, 1181, 1190, 1197, 1211, 1204, 2551, 2551,
813 77, 1224, 1260, 1248, 1231, 1254, 1260, 1289, 1307, 1313,
814
815 1319, 2551, 1325, 1331, 1337, 1348, 1354, 1360, 2551, 1366,
816 1378, 1384, 1390, 1396, 1407, 1420, 2551, 1426, 1436, 55,
817 1442, 1456, 1465, 1476, 1486, 2551, 2551, 2551, 1492, 1499,
818 1510, 1528, 1535, 1544, 2551, 1550, 1564, 1571, 1579, 1588,
819 1594, 1600, 1606, 1613, 2551, 1623, 1629, 1636, 1647, 1658,
820 1670, 1676, 1682, 1688, 1694, 2551, 2551, 1700, 1706, 1717,
821 1723, 1729, 1735, 2551, 1741, 1758, 1764, 2551, 1775, 2551,
822 1793, 1800, 1813, 2551, 2551, 1819, 2551, 1827, 1834, 1842,
823 2551, 1853, 1861, 1868, 1878, 1887, 1898, 1904, 1916, 1933,
824 1939, 1945, 1953, 1959, 1974, 1989, 2551, 1997, 2003, 2009,
825
826 2015, 2032, 2038, 2045, 2056, 2062, 2068, 2079, 2091, 2098,
827 2105, 2113, 2121, 2127, 2139, 2147, 2157, 2163, 2169, 2551,
828 2182, 2192, 2204, 2211, 2551, 2217, 2226, 2551, 2234, 2240,
829 2256, 2551, 2263, 2269, 2278, 2286, 2299, 2551, 2551, 2305,
830 2315, 2321, 2328, 2335, 2344, 2350, 2357, 2365, 2551, 2384,
831 2371, 2391, 2405, 2414, 2420, 2427, 2434, 2551, 2440, 2449,
832 2551, 2551, 2461, 2470, 2551, 2551, 2476, 2483, 2490, 2551,
833 2551, 2551, 2529, 2532, 2535, 68, 2538, 2541, 2544, 2547
834 } ;
835
836static const flex_int16_t yy_def[381] =
837 { 0,
838 372, 1, 373, 373, 1, 5, 5, 5, 5, 5,
839 372, 372, 372, 372, 374, 375, 372, 372, 372, 372,
840 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
841 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
842 376, 372, 372, 372, 377, 374, 372, 374, 378, 374,
843 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
844 374, 374, 375, 372, 372, 372, 372, 372, 372, 372,
845 379, 372, 372, 372, 372, 372, 372, 372, 372, 372,
846 372, 372, 372, 372, 376, 372, 377, 372, 372, 374,
847 380, 374, 378, 374, 374, 374, 374, 374, 374, 374,
848
849 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
850 374, 374, 374, 374, 374, 379, 372, 372, 372, 372,
851 372, 372, 372, 372, 374, 380, 372, 372, 93, 374,
852 374, 374, 372, 374, 374, 374, 374, 374, 374, 374,
853 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
854 374, 374, 374, 374, 372, 372, 372, 372, 372, 372,
855 372, 374, 93, 374, 374, 374, 374, 374, 374, 374,
856 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
857 374, 374, 374, 374, 374, 374, 374, 374, 372, 372,
858 372, 374, 93, 374, 374, 374, 374, 374, 374, 374,
859
860 374, 372, 374, 374, 374, 374, 374, 374, 372, 374,
861 374, 374, 374, 374, 374, 374, 372, 374, 374, 372,
862 374, 374, 374, 374, 374, 372, 372, 372, 374, 374,
863 374, 374, 374, 374, 372, 374, 374, 374, 374, 374,
864 374, 374, 374, 374, 372, 374, 374, 374, 374, 374,
865 374, 374, 374, 374, 374, 372, 372, 374, 374, 374,
866 374, 374, 374, 372, 374, 374, 374, 372, 374, 372,
867 374, 374, 374, 372, 372, 374, 372, 374, 374, 374,
868 372, 374, 374, 374, 374, 374, 374, 374, 374, 374,
869 374, 374, 374, 374, 374, 374, 372, 374, 374, 374,
870
871 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
872 374, 374, 374, 374, 374, 374, 374, 374, 374, 372,
873 374, 374, 374, 374, 372, 374, 374, 372, 374, 374,
874 374, 372, 374, 374, 374, 374, 374, 372, 372, 374,
875 374, 374, 374, 374, 374, 374, 374, 374, 372, 374,
876 374, 374, 374, 374, 374, 374, 374, 372, 374, 374,
877 372, 372, 374, 374, 372, 372, 374, 374, 374, 372,
878 372, 0, 372, 372, 372, 372, 372, 372, 372, 372
879 } ;
880
881static const flex_int16_t yy_nxt[2613] =
882 { 0,
883 12, 13, 14, 13, 12, 15, 16, 12, 17, 18,
884 19, 20, 21, 22, 23, 23, 23, 23, 24, 25,
885 12, 12, 12, 12, 26, 27, 12, 28, 12, 12,
886 29, 12, 30, 12, 31, 12, 12, 12, 12, 12,
887 26, 32, 12, 12, 12, 12, 12, 12, 33, 12,
888 12, 12, 12, 34, 12, 12, 12, 12, 12, 35,
889 36, 38, 14, 38, 38, 14, 38, 39, 85, 41,
890 39, 12, 12, 41, 12, 12, 12, 12, 12, 12,
891 12, 12, 12, 12, 12, 12, 42, 43, 42, 43,
892 12, 12, 70, 12, 78, 245, 12, 71, 12, 77,
893
894 12, 77, 43, 43, 43, 43, 12, 12, 12, 12,
895 40, 12, 12, 77, 12, 80, 220, 78, 64, 12,
896 65, 65, 65, 65, 65, 12, 12, 45, 45, 45,
897 79, 66, 47, 64, 191, 67, 68, 68, 68, 68,
898 69, 69, 69, 69, 69, 127, 66, 66, 78, 79,
899 75, 66, 75, 79, 48, 76, 76, 76, 76, 76,
900 49, 119, 66, 88, 50, 51, 52, 66, 53, 119,
901 54, 81, 82, 55, 56, 57, 58, 59, 88, 60,
902 161, 61, 62, 64, 119, 72, 72, 72, 72, 72,
903 127, 89, 122, 117, 124, 64, 66, 73, 73, 73,
904
905 73, 73, 45, 45, 45, 118, 89, 47, 66, 45,
906 45, 45, 66, 117, 47, 92, 76, 76, 76, 76,
907 76, 123, 46, 155, 66, 118, 45, 45, 45, 157,
908 117, 47, 45, 45, 45, 49, 157, 47, 44, 45,
909 45, 45, 49, 46, 47, 157, 155, 46, 86, 90,
910 120, 46, 160, 118, 96, 45, 45, 45, 46, 49,
911 47, 46, 189, 46, 93, 49, 45, 45, 45, 84,
912 155, 47, 49, 121, 156, 94, 156, 83, 189, 97,
913 74, 95, 98, 44, 45, 45, 45, 372, 49, 47,
914 45, 45, 45, 158, 156, 47, 159, 372, 189, 49,
915
916 372, 99, 45, 45, 45, 372, 372, 47, 45, 45,
917 45, 372, 372, 47, 190, 100, 372, 49, 372, 101,
918 45, 45, 45, 49, 372, 47, 104, 372, 102, 372,
919 372, 372, 372, 103, 372, 49, 372, 372, 106, 105,
920 372, 49, 45, 45, 45, 372, 372, 47, 372, 372,
921 45, 45, 45, 49, 372, 47, 108, 69, 69, 69,
922 69, 69, 107, 372, 45, 45, 45, 372, 66, 47,
923 372, 372, 372, 372, 64, 49, 65, 65, 65, 65,
924 65, 372, 109, 49, 66, 372, 372, 66, 372, 372,
925 372, 110, 372, 372, 372, 111, 112, 49, 113, 75,
926
927 115, 75, 114, 66, 76, 76, 76, 76, 76, 64,
928 372, 72, 72, 72, 72, 72, 76, 76, 76, 76,
929 76, 64, 66, 73, 73, 73, 73, 73, 69, 69,
930 69, 69, 69, 372, 66, 372, 372, 372, 66, 66,
931 64, 372, 72, 72, 72, 72, 72, 45, 45, 45,
932 66, 372, 47, 66, 64, 66, 73, 73, 73, 73,
933 73, 87, 372, 372, 372, 372, 372, 66, 87, 66,
934 45, 45, 45, 372, 372, 47, 372, 372, 372, 372,
935 49, 372, 372, 66, 372, 45, 45, 45, 372, 87,
936 47, 372, 372, 87, 45, 45, 45, 87, 372, 133,
937
938 125, 372, 372, 49, 87, 372, 372, 87, 372, 87,
939 87, 128, 372, 372, 372, 372, 372, 372, 49, 129,
940 129, 129, 129, 129, 372, 372, 372, 49, 129, 129,
941 129, 129, 372, 372, 130, 45, 45, 45, 372, 372,
942 47, 372, 129, 129, 129, 129, 129, 129, 45, 45,
943 45, 372, 372, 47, 45, 45, 45, 372, 372, 47,
944 45, 45, 45, 372, 372, 47, 372, 372, 49, 45,
945 45, 45, 372, 372, 47, 45, 45, 45, 372, 372,
946 47, 49, 131, 132, 372, 134, 372, 49, 372, 45,
947 45, 45, 135, 49, 47, 372, 45, 45, 45, 372,
948
949 372, 47, 49, 372, 45, 45, 45, 372, 49, 47,
950 45, 45, 45, 372, 136, 47, 372, 372, 137, 372,
951 372, 372, 49, 372, 372, 372, 139, 372, 138, 49,
952 45, 45, 45, 372, 372, 47, 372, 49, 140, 45,
953 45, 45, 372, 49, 47, 45, 45, 45, 372, 143,
954 47, 372, 141, 45, 45, 45, 372, 372, 47, 372,
955 142, 372, 372, 49, 45, 45, 45, 372, 372, 47,
956 372, 372, 49, 372, 45, 45, 45, 144, 49, 47,
957 372, 372, 45, 45, 45, 372, 49, 47, 45, 45,
958 45, 372, 145, 47, 372, 372, 146, 49, 147, 372,
959
960 372, 372, 149, 372, 45, 45, 45, 49, 148, 47,
961 372, 372, 372, 150, 372, 49, 372, 372, 372, 151,
962 372, 49, 45, 45, 45, 372, 372, 47, 45, 45,
963 45, 372, 152, 47, 45, 45, 45, 49, 372, 47,
964 372, 45, 45, 45, 153, 372, 47, 372, 372, 45,
965 45, 45, 372, 372, 47, 49, 372, 45, 45, 45,
966 372, 49, 47, 372, 372, 372, 162, 49, 154, 163,
967 163, 163, 163, 163, 49, 372, 372, 372, 163, 163,
968 163, 163, 49, 372, 45, 45, 45, 164, 165, 47,
969 49, 372, 163, 163, 163, 163, 163, 163, 45, 45,
970
971 45, 372, 166, 47, 45, 45, 45, 372, 372, 47,
972 372, 167, 372, 45, 45, 45, 372, 49, 47, 45,
973 45, 45, 372, 372, 47, 45, 45, 45, 372, 372,
974 47, 49, 372, 372, 168, 372, 372, 49, 45, 45,
975 45, 372, 372, 47, 372, 372, 49, 372, 372, 170,
976 169, 372, 49, 372, 45, 45, 45, 372, 49, 47,
977 45, 45, 45, 171, 372, 47, 372, 173, 372, 372,
978 172, 49, 372, 372, 174, 45, 45, 45, 372, 372,
979 47, 45, 45, 45, 372, 372, 47, 49, 372, 45,
980 45, 45, 372, 49, 47, 372, 45, 45, 45, 372,
981
982 177, 47, 45, 45, 45, 372, 175, 47, 49, 176,
983 372, 45, 45, 45, 49, 178, 47, 372, 45, 45,
984 45, 372, 49, 47, 372, 180, 372, 372, 372, 49,
985 372, 179, 45, 45, 45, 49, 372, 47, 45, 45,
986 45, 372, 182, 47, 49, 45, 45, 45, 372, 181,
987 47, 49, 372, 45, 45, 45, 183, 372, 47, 45,
988 45, 45, 372, 372, 47, 49, 372, 184, 372, 372,
989 372, 49, 45, 45, 45, 372, 372, 47, 49, 372,
990 372, 372, 194, 372, 185, 372, 49, 372, 372, 372,
991 372, 372, 49, 372, 186, 372, 187, 188, 45, 45,
992
993 45, 372, 372, 47, 372, 49, 372, 372, 192, 193,
994 193, 193, 193, 193, 372, 372, 372, 372, 193, 193,
995 193, 193, 45, 45, 45, 372, 372, 47, 372, 372,
996 372, 49, 193, 193, 193, 193, 193, 193, 195, 45,
997 45, 45, 372, 372, 47, 45, 45, 45, 372, 372,
998 47, 45, 45, 45, 372, 49, 47, 372, 45, 45,
999 45, 198, 199, 47, 45, 45, 45, 372, 372, 202,
1000 372, 372, 49, 196, 372, 45, 45, 45, 49, 372,
1001 47, 197, 372, 372, 49, 45, 45, 45, 372, 372,
1002 47, 49, 372, 372, 200, 372, 372, 49, 45, 45,
1003
1004 45, 372, 372, 47, 45, 45, 45, 372, 49, 47,
1005 201, 203, 45, 45, 45, 372, 372, 47, 49, 372,
1006 372, 45, 45, 45, 372, 204, 47, 45, 45, 45,
1007 372, 49, 209, 45, 45, 45, 372, 49, 47, 372,
1008 205, 45, 45, 45, 372, 49, 47, 372, 206, 372,
1009 372, 372, 207, 372, 49, 372, 45, 45, 45, 372,
1010 49, 47, 372, 372, 372, 372, 49, 208, 45, 45,
1011 45, 372, 372, 47, 49, 45, 45, 45, 372, 372,
1012 47, 45, 45, 45, 372, 372, 47, 210, 211, 49,
1013 45, 45, 45, 372, 372, 47, 212, 45, 45, 45,
1014
1015 372, 49, 217, 372, 45, 45, 45, 372, 49, 47,
1016 372, 45, 45, 45, 49, 214, 47, 372, 372, 213,
1017 372, 218, 372, 49, 45, 45, 45, 372, 216, 47,
1018 49, 45, 45, 45, 372, 215, 47, 49, 372, 372,
1019 372, 372, 372, 219, 49, 372, 372, 372, 45, 45,
1020 45, 372, 372, 47, 45, 45, 45, 49, 372, 47,
1021 45, 45, 45, 372, 49, 47, 372, 372, 372, 372,
1022 372, 372, 221, 46, 46, 46, 46, 46, 372, 223,
1023 372, 49, 46, 46, 46, 46, 372, 49, 372, 45,
1024 45, 45, 372, 49, 226, 372, 46, 46, 46, 46,
1025
1026 46, 46, 222, 224, 372, 372, 225, 45, 45, 45,
1027 372, 372, 227, 45, 45, 45, 372, 372, 228, 45,
1028 45, 45, 49, 372, 47, 45, 45, 45, 372, 229,
1029 47, 45, 45, 45, 372, 372, 47, 45, 45, 45,
1030 49, 372, 47, 372, 372, 372, 49, 372, 45, 45,
1031 45, 372, 49, 47, 45, 45, 45, 372, 49, 47,
1032 45, 45, 45, 372, 49, 235, 45, 45, 45, 372,
1033 49, 47, 372, 372, 372, 372, 230, 232, 45, 45,
1034 45, 49, 231, 47, 45, 45, 45, 49, 372, 47,
1035 45, 45, 45, 49, 372, 47, 45, 45, 45, 49,
1036
1037 372, 47, 372, 372, 372, 234, 233, 45, 45, 45,
1038 372, 49, 47, 372, 372, 372, 372, 49, 237, 236,
1039 45, 45, 45, 49, 372, 47, 45, 45, 45, 49,
1040 372, 47, 372, 372, 239, 238, 45, 45, 45, 372,
1041 49, 47, 45, 45, 45, 372, 372, 47, 372, 240,
1042 372, 372, 372, 49, 372, 372, 45, 45, 45, 49,
1043 241, 47, 372, 372, 243, 45, 45, 45, 372, 49,
1044 47, 242, 244, 372, 372, 49, 45, 45, 45, 372,
1045 372, 47, 372, 246, 372, 372, 45, 45, 45, 49,
1046 372, 47, 45, 45, 45, 372, 372, 47, 49, 45,
1047
1048 45, 45, 372, 372, 47, 372, 247, 372, 372, 49,
1049 45, 45, 45, 372, 372, 47, 372, 372, 248, 49,
1050 372, 372, 249, 372, 372, 49, 250, 372, 45, 45,
1051 45, 372, 49, 47, 372, 45, 45, 45, 251, 372,
1052 47, 372, 372, 49, 45, 45, 45, 372, 372, 256,
1053 45, 45, 45, 372, 372, 257, 252, 372, 372, 372,
1054 258, 49, 253, 372, 45, 45, 45, 254, 49, 47,
1055 372, 45, 45, 45, 372, 255, 47, 49, 372, 45,
1056 45, 45, 372, 49, 47, 259, 372, 372, 45, 45,
1057 45, 372, 372, 47, 45, 45, 45, 49, 263, 264,
1058
1059 45, 45, 45, 372, 49, 47, 45, 45, 45, 372,
1060 372, 47, 49, 45, 45, 45, 372, 260, 47, 261,
1061 372, 49, 372, 45, 45, 45, 372, 49, 268, 45,
1062 45, 45, 262, 49, 47, 372, 45, 45, 45, 49,
1063 372, 270, 372, 372, 265, 372, 49, 45, 45, 45,
1064 372, 372, 47, 372, 372, 266, 49, 271, 45, 45,
1065 45, 372, 49, 47, 372, 372, 267, 372, 269, 49,
1066 45, 45, 45, 372, 372, 47, 45, 45, 45, 372,
1067 49, 274, 45, 45, 45, 372, 372, 275, 45, 45,
1068 45, 49, 372, 47, 45, 45, 45, 372, 276, 277,
1069
1070 45, 45, 45, 49, 372, 47, 45, 45, 45, 49,
1071 372, 47, 372, 272, 273, 49, 372, 45, 45, 45,
1072 372, 49, 47, 45, 45, 45, 372, 49, 281, 45,
1073 45, 45, 372, 49, 47, 45, 45, 45, 372, 49,
1074 47, 45, 45, 45, 372, 372, 47, 372, 372, 278,
1075 49, 372, 372, 372, 372, 279, 49, 280, 45, 45,
1076 45, 372, 49, 47, 45, 45, 45, 372, 49, 47,
1077 372, 372, 372, 372, 49, 45, 45, 45, 286, 372,
1078 47, 372, 372, 283, 372, 372, 282, 372, 284, 285,
1079 372, 49, 372, 45, 45, 45, 372, 49, 47, 372,
1080
1081 45, 45, 45, 372, 288, 47, 287, 372, 49, 372,
1082 372, 289, 372, 45, 45, 45, 372, 372, 47, 45,
1083 45, 45, 372, 372, 47, 372, 49, 45, 45, 45,
1084 372, 372, 47, 49, 45, 45, 45, 372, 372, 47,
1085 291, 372, 45, 45, 45, 290, 49, 47, 372, 372,
1086 292, 372, 49, 45, 45, 45, 372, 372, 297, 372,
1087 49, 45, 45, 45, 372, 372, 47, 49, 45, 45,
1088 45, 293, 372, 47, 372, 49, 372, 294, 45, 45,
1089 45, 372, 372, 47, 295, 372, 49, 45, 45, 45,
1090 372, 372, 47, 296, 49, 372, 372, 298, 45, 45,
1091
1092 45, 49, 372, 47, 45, 45, 45, 372, 372, 47,
1093 372, 49, 372, 372, 303, 372, 45, 45, 45, 372,
1094 49, 47, 372, 372, 372, 299, 372, 301, 372, 300,
1095 372, 49, 372, 45, 45, 45, 372, 49, 47, 45,
1096 45, 45, 372, 372, 47, 45, 45, 45, 372, 49,
1097 47, 302, 372, 45, 45, 45, 372, 372, 47, 45,
1098 45, 45, 372, 372, 47, 372, 49, 372, 372, 304,
1099 372, 372, 49, 372, 45, 45, 45, 372, 49, 47,
1100 372, 372, 305, 372, 372, 306, 49, 372, 372, 45,
1101 45, 45, 49, 308, 47, 372, 307, 45, 45, 45,
1102
1103 372, 372, 47, 45, 45, 45, 372, 49, 47, 45,
1104 45, 45, 309, 372, 47, 45, 45, 45, 372, 372,
1105 47, 372, 49, 372, 372, 315, 372, 310, 372, 372,
1106 49, 372, 45, 45, 45, 372, 49, 47, 45, 45,
1107 45, 311, 49, 47, 312, 45, 45, 45, 49, 372,
1108 47, 372, 372, 313, 372, 314, 45, 45, 45, 372,
1109 372, 47, 45, 45, 45, 49, 372, 320, 45, 45,
1110 45, 49, 316, 47, 372, 372, 317, 372, 49, 45,
1111 45, 45, 372, 372, 47, 318, 372, 372, 372, 49,
1112 372, 45, 45, 45, 319, 49, 47, 372, 45, 45,
1113
1114 45, 49, 372, 47, 321, 45, 45, 45, 372, 372,
1115 325, 372, 49, 45, 45, 45, 372, 372, 47, 372,
1116 372, 45, 45, 45, 49, 372, 47, 45, 45, 45,
1117 322, 49, 328, 372, 372, 323, 372, 372, 49, 45,
1118 45, 45, 324, 372, 47, 372, 49, 45, 45, 45,
1119 372, 372, 47, 326, 49, 372, 372, 45, 45, 45,
1120 49, 327, 47, 45, 45, 45, 372, 372, 332, 45,
1121 45, 45, 49, 372, 47, 372, 372, 329, 372, 372,
1122 49, 372, 45, 45, 45, 372, 372, 47, 372, 372,
1123 49, 372, 45, 45, 45, 372, 49, 47, 372, 372,
1124
1125 331, 372, 49, 330, 45, 45, 45, 372, 372, 47,
1126 372, 45, 45, 45, 333, 49, 47, 45, 45, 45,
1127 372, 372, 338, 372, 372, 49, 45, 45, 45, 372,
1128 372, 339, 372, 334, 45, 45, 45, 49, 372, 47,
1129 45, 45, 45, 372, 49, 47, 372, 335, 372, 372,
1130 49, 372, 372, 336, 372, 372, 45, 45, 45, 49,
1131 337, 47, 372, 45, 45, 45, 372, 49, 47, 45,
1132 45, 45, 372, 49, 47, 372, 372, 340, 45, 45,
1133 45, 372, 372, 47, 372, 372, 45, 45, 45, 49,
1134 372, 47, 342, 341, 372, 372, 49, 372, 372, 45,
1135
1136 45, 45, 49, 343, 47, 45, 45, 45, 372, 372,
1137 47, 49, 372, 344, 372, 45, 45, 45, 345, 49,
1138 349, 45, 45, 45, 372, 372, 47, 372, 45, 45,
1139 45, 372, 49, 47, 346, 45, 45, 45, 49, 372,
1140 47, 348, 372, 372, 45, 45, 45, 347, 49, 47,
1141 45, 45, 45, 372, 49, 47, 372, 45, 45, 45,
1142 372, 49, 47, 372, 372, 45, 45, 45, 49, 350,
1143 47, 45, 45, 45, 372, 352, 358, 49, 372, 372,
1144 372, 351, 372, 49, 45, 45, 45, 372, 372, 47,
1145 49, 45, 45, 45, 372, 353, 47, 372, 49, 372,
1146
1147 372, 372, 354, 372, 49, 45, 45, 45, 372, 355,
1148 47, 372, 372, 356, 45, 45, 45, 49, 372, 361,
1149 45, 45, 45, 372, 49, 362, 357, 45, 45, 45,
1150 372, 372, 47, 372, 45, 45, 45, 372, 49, 47,
1151 45, 45, 45, 359, 372, 365, 372, 49, 372, 45,
1152 45, 45, 372, 49, 366, 372, 372, 360, 372, 372,
1153 49, 45, 45, 45, 372, 372, 47, 49, 372, 363,
1154 45, 45, 45, 49, 364, 47, 45, 45, 45, 372,
1155 372, 47, 49, 45, 45, 45, 372, 372, 370, 372,
1156 45, 45, 45, 372, 49, 371, 372, 372, 372, 372,
1157
1158 372, 367, 372, 49, 372, 372, 372, 372, 372, 49,
1159 372, 372, 372, 372, 372, 372, 49, 372, 372, 372,
1160 372, 372, 368, 49, 372, 372, 372, 372, 369, 37,
1161 37, 37, 46, 46, 46, 63, 372, 63, 87, 87,
1162 87, 91, 91, 91, 116, 372, 116, 126, 126, 126,
1163 11, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1164 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1165 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1166 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1167 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1168
1169 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1170 372, 372
1171 } ;
1172
1173static const flex_int16_t yy_chk[2613] =
1174 { 0,
1175 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1176 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1177 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1178 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1179 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1180 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1181 1, 3, 3, 3, 4, 4, 4, 3, 376, 7,
1182 4, 5, 5, 8, 5, 5, 5, 5, 5, 5,
1183 5, 5, 5, 5, 5, 5, 9, 13, 10, 13,
1184 5, 5, 21, 5, 28, 220, 5, 21, 5, 27,
1185
1186 5, 32, 38, 43, 38, 43, 5, 5, 7, 9,
1187 5, 10, 8, 27, 5, 32, 191, 28, 17, 5,
1188 17, 17, 17, 17, 17, 5, 5, 15, 15, 15,
1189 29, 17, 15, 19, 161, 19, 19, 19, 19, 19,
1190 20, 20, 20, 20, 20, 126, 19, 17, 33, 34,
1191 26, 20, 26, 29, 15, 26, 26, 26, 26, 26,
1192 15, 79, 19, 45, 15, 15, 15, 20, 15, 82,
1193 15, 33, 34, 15, 15, 15, 15, 15, 87, 15,
1194 123, 15, 15, 22, 79, 22, 22, 22, 22, 22,
1195 91, 45, 82, 77, 85, 23, 22, 23, 23, 23,
1196
1197 23, 23, 46, 46, 46, 78, 87, 46, 23, 48,
1198 48, 48, 22, 77, 48, 49, 75, 75, 75, 75,
1199 75, 84, 49, 117, 23, 78, 50, 50, 50, 119,
1200 80, 50, 51, 51, 51, 46, 122, 51, 44, 52,
1201 52, 52, 48, 49, 52, 119, 117, 49, 42, 48,
1202 80, 49, 122, 81, 52, 53, 53, 53, 49, 50,
1203 53, 49, 155, 49, 49, 51, 54, 54, 54, 40,
1204 120, 54, 52, 81, 118, 50, 121, 39, 155, 52,
1205 25, 51, 52, 14, 55, 55, 55, 11, 53, 55,
1206 56, 56, 56, 120, 118, 56, 121, 0, 158, 54,
1207
1208 0, 53, 57, 57, 57, 0, 0, 57, 58, 58,
1209 58, 0, 0, 58, 158, 54, 0, 55, 0, 54,
1210 59, 59, 59, 56, 0, 59, 56, 0, 55, 0,
1211 0, 0, 0, 55, 0, 57, 0, 0, 57, 56,
1212 0, 58, 60, 60, 60, 0, 0, 60, 0, 0,
1213 61, 61, 61, 59, 0, 61, 59, 64, 64, 64,
1214 64, 64, 58, 0, 62, 62, 62, 0, 64, 62,
1215 0, 0, 0, 0, 65, 60, 65, 65, 65, 65,
1216 65, 0, 60, 61, 64, 0, 0, 65, 0, 0,
1217 0, 60, 0, 0, 0, 60, 60, 62, 61, 66,
1218
1219 62, 66, 61, 65, 66, 66, 66, 66, 66, 67,
1220 0, 67, 67, 67, 67, 67, 76, 76, 76, 76,
1221 76, 68, 67, 68, 68, 68, 68, 68, 69, 69,
1222 69, 69, 69, 0, 68, 0, 0, 0, 67, 69,
1223 72, 0, 72, 72, 72, 72, 72, 90, 90, 90,
1224 68, 0, 90, 72, 73, 69, 73, 73, 73, 73,
1225 73, 89, 0, 0, 0, 0, 0, 73, 89, 72,
1226 92, 92, 92, 0, 0, 92, 0, 0, 0, 0,
1227 90, 0, 0, 73, 0, 94, 94, 94, 0, 89,
1228 94, 0, 0, 89, 96, 96, 96, 89, 0, 96,
1229
1230 90, 0, 0, 92, 89, 0, 0, 89, 0, 89,
1231 89, 93, 0, 0, 0, 0, 0, 0, 94, 93,
1232 93, 93, 93, 93, 0, 0, 0, 96, 93, 93,
1233 93, 93, 0, 0, 94, 95, 95, 95, 0, 0,
1234 95, 0, 93, 93, 93, 93, 93, 93, 97, 97,
1235 97, 0, 0, 97, 98, 98, 98, 0, 0, 98,
1236 99, 99, 99, 0, 0, 99, 0, 0, 95, 100,
1237 100, 100, 0, 0, 100, 101, 101, 101, 0, 0,
1238 101, 97, 95, 95, 0, 97, 0, 98, 0, 102,
1239 102, 102, 98, 99, 102, 0, 103, 103, 103, 0,
1240
1241 0, 103, 100, 0, 104, 104, 104, 0, 101, 104,
1242 105, 105, 105, 0, 99, 105, 0, 0, 100, 0,
1243 0, 0, 102, 0, 0, 0, 102, 0, 101, 103,
1244 106, 106, 106, 0, 0, 106, 0, 104, 103, 107,
1245 107, 107, 0, 105, 107, 108, 108, 108, 0, 105,
1246 108, 0, 104, 109, 109, 109, 0, 0, 109, 0,
1247 104, 0, 0, 106, 110, 110, 110, 0, 0, 110,
1248 0, 0, 107, 0, 111, 111, 111, 106, 108, 111,
1249 0, 0, 112, 112, 112, 0, 109, 112, 113, 113,
1250 113, 0, 107, 113, 0, 0, 108, 110, 108, 0,
1251
1252 0, 0, 110, 0, 114, 114, 114, 111, 109, 114,
1253 0, 0, 0, 111, 0, 112, 0, 0, 0, 112,
1254 0, 113, 115, 115, 115, 0, 0, 115, 125, 125,
1255 125, 0, 113, 125, 130, 130, 130, 114, 0, 130,
1256 0, 131, 131, 131, 114, 0, 131, 0, 0, 132,
1257 132, 132, 0, 0, 132, 115, 0, 134, 134, 134,
1258 0, 125, 134, 0, 0, 0, 125, 130, 115, 129,
1259 129, 129, 129, 129, 131, 0, 0, 0, 129, 129,
1260 129, 129, 132, 0, 135, 135, 135, 130, 131, 135,
1261 134, 0, 129, 129, 129, 129, 129, 129, 136, 136,
1262
1263 136, 0, 132, 136, 137, 137, 137, 0, 0, 137,
1264 0, 134, 0, 138, 138, 138, 0, 135, 138, 139,
1265 139, 139, 0, 0, 139, 140, 140, 140, 0, 0,
1266 140, 136, 0, 0, 135, 0, 0, 137, 141, 141,
1267 141, 0, 0, 141, 0, 0, 138, 0, 0, 137,
1268 136, 0, 139, 0, 142, 142, 142, 0, 140, 142,
1269 143, 143, 143, 138, 0, 143, 0, 140, 0, 0,
1270 139, 141, 0, 0, 141, 144, 144, 144, 0, 0,
1271 144, 145, 145, 145, 0, 0, 145, 142, 0, 146,
1272 146, 146, 0, 143, 146, 0, 147, 147, 147, 0,
1273
1274 143, 147, 148, 148, 148, 0, 142, 148, 144, 142,
1275 0, 149, 149, 149, 145, 144, 149, 0, 150, 150,
1276 150, 0, 146, 150, 0, 146, 0, 0, 0, 147,
1277 0, 145, 151, 151, 151, 148, 0, 151, 152, 152,
1278 152, 0, 148, 152, 149, 153, 153, 153, 0, 147,
1279 153, 150, 0, 154, 154, 154, 149, 0, 154, 162,
1280 162, 162, 0, 0, 162, 151, 0, 150, 0, 0,
1281 0, 152, 164, 164, 164, 0, 0, 164, 153, 0,
1282 0, 0, 164, 0, 151, 0, 154, 0, 0, 0,
1283 0, 0, 162, 0, 152, 0, 153, 154, 165, 165,
1284
1285 165, 0, 0, 165, 0, 164, 0, 0, 162, 163,
1286 163, 163, 163, 163, 0, 0, 0, 0, 163, 163,
1287 163, 163, 166, 166, 166, 0, 0, 166, 0, 0,
1288 0, 165, 163, 163, 163, 163, 163, 163, 165, 167,
1289 167, 167, 0, 0, 167, 168, 168, 168, 0, 0,
1290 168, 169, 169, 169, 0, 166, 169, 0, 170, 170,
1291 170, 168, 168, 170, 171, 171, 171, 0, 0, 171,
1292 0, 0, 167, 166, 0, 172, 172, 172, 168, 0,
1293 172, 167, 0, 0, 169, 173, 173, 173, 0, 0,
1294 173, 170, 0, 0, 169, 0, 0, 171, 174, 174,
1295
1296 174, 0, 0, 174, 175, 175, 175, 0, 172, 175,
1297 170, 172, 176, 176, 176, 0, 0, 176, 173, 0,
1298 0, 177, 177, 177, 0, 173, 177, 178, 178, 178,
1299 0, 174, 178, 179, 179, 179, 0, 175, 179, 0,
1300 174, 180, 180, 180, 0, 176, 180, 0, 175, 0,
1301 0, 0, 176, 0, 177, 0, 181, 181, 181, 0,
1302 178, 181, 0, 0, 0, 0, 179, 177, 182, 182,
1303 182, 0, 0, 182, 180, 183, 183, 183, 0, 0,
1304 183, 184, 184, 184, 0, 0, 184, 179, 180, 181,
1305 185, 185, 185, 0, 0, 185, 181, 186, 186, 186,
1306
1307 0, 182, 186, 0, 188, 188, 188, 0, 183, 188,
1308 0, 187, 187, 187, 184, 183, 187, 0, 0, 182,
1309 0, 187, 0, 185, 192, 192, 192, 0, 185, 192,
1310 186, 195, 195, 195, 0, 184, 195, 188, 0, 0,
1311 0, 0, 0, 188, 187, 0, 0, 0, 194, 194,
1312 194, 0, 0, 194, 196, 196, 196, 192, 0, 196,
1313 197, 197, 197, 0, 195, 197, 0, 0, 0, 0,
1314 0, 0, 192, 193, 193, 193, 193, 193, 0, 195,
1315 0, 194, 193, 193, 193, 193, 0, 196, 0, 198,
1316 198, 198, 0, 197, 198, 0, 193, 193, 193, 193,
1317
1318 193, 193, 194, 196, 0, 0, 197, 199, 199, 199,
1319 0, 0, 199, 200, 200, 200, 0, 0, 200, 201,
1320 201, 201, 198, 0, 201, 203, 203, 203, 0, 201,
1321 203, 204, 204, 204, 0, 0, 204, 205, 205, 205,
1322 199, 0, 205, 0, 0, 0, 200, 0, 206, 206,
1323 206, 0, 201, 206, 207, 207, 207, 0, 203, 207,
1324 208, 208, 208, 0, 204, 208, 210, 210, 210, 0,
1325 205, 210, 0, 0, 0, 0, 203, 205, 211, 211,
1326 211, 206, 204, 211, 212, 212, 212, 207, 0, 212,
1327 213, 213, 213, 208, 0, 213, 214, 214, 214, 210,
1328
1329 0, 214, 0, 0, 0, 207, 206, 215, 215, 215,
1330 0, 211, 215, 0, 0, 0, 0, 212, 211, 210,
1331 216, 216, 216, 213, 0, 216, 218, 218, 218, 214,
1332 0, 218, 0, 0, 213, 212, 219, 219, 219, 0,
1333 215, 219, 221, 221, 221, 0, 0, 221, 0, 214,
1334 0, 0, 0, 216, 0, 0, 222, 222, 222, 218,
1335 215, 222, 0, 0, 218, 223, 223, 223, 0, 219,
1336 223, 216, 219, 0, 0, 221, 224, 224, 224, 0,
1337 0, 224, 0, 221, 0, 0, 225, 225, 225, 222,
1338 0, 225, 229, 229, 229, 0, 0, 229, 223, 230,
1339
1340 230, 230, 0, 0, 230, 0, 222, 0, 0, 224,
1341 231, 231, 231, 0, 0, 231, 0, 0, 223, 225,
1342 0, 0, 224, 0, 0, 229, 225, 0, 232, 232,
1343 232, 0, 230, 232, 0, 233, 233, 233, 229, 0,
1344 233, 0, 0, 231, 234, 234, 234, 0, 0, 234,
1345 236, 236, 236, 0, 0, 236, 230, 0, 0, 0,
1346 236, 232, 231, 0, 237, 237, 237, 232, 233, 237,
1347 0, 238, 238, 238, 0, 233, 238, 234, 0, 239,
1348 239, 239, 0, 236, 239, 236, 0, 0, 240, 240,
1349 240, 0, 0, 240, 241, 241, 241, 237, 240, 241,
1350
1351 242, 242, 242, 0, 238, 242, 243, 243, 243, 0,
1352 0, 243, 239, 244, 244, 244, 0, 237, 244, 238,
1353 0, 240, 0, 246, 246, 246, 0, 241, 246, 247,
1354 247, 247, 239, 242, 247, 0, 248, 248, 248, 243,
1355 0, 248, 0, 0, 242, 0, 244, 249, 249, 249,
1356 0, 0, 249, 0, 0, 243, 246, 249, 250, 250,
1357 250, 0, 247, 250, 0, 0, 244, 0, 247, 248,
1358 251, 251, 251, 0, 0, 251, 252, 252, 252, 0,
1359 249, 252, 253, 253, 253, 0, 0, 253, 254, 254,
1360 254, 250, 0, 254, 255, 255, 255, 0, 254, 255,
1361
1362 258, 258, 258, 251, 0, 258, 259, 259, 259, 252,
1363 0, 259, 0, 250, 251, 253, 0, 260, 260, 260,
1364 0, 254, 260, 261, 261, 261, 0, 255, 261, 262,
1365 262, 262, 0, 258, 262, 263, 263, 263, 0, 259,
1366 263, 265, 265, 265, 0, 0, 265, 0, 0, 258,
1367 260, 0, 0, 0, 0, 259, 261, 260, 266, 266,
1368 266, 0, 262, 266, 267, 267, 267, 0, 263, 267,
1369 0, 0, 0, 0, 265, 269, 269, 269, 265, 0,
1370 269, 0, 0, 263, 0, 0, 262, 0, 263, 263,
1371 0, 266, 0, 271, 271, 271, 0, 267, 271, 0,
1372
1373 272, 272, 272, 0, 267, 272, 266, 0, 269, 0,
1374 0, 269, 0, 273, 273, 273, 0, 0, 273, 276,
1375 276, 276, 0, 0, 276, 0, 271, 278, 278, 278,
1376 0, 0, 278, 272, 279, 279, 279, 0, 0, 279,
1377 272, 0, 280, 280, 280, 271, 273, 280, 0, 0,
1378 273, 0, 276, 282, 282, 282, 0, 0, 282, 0,
1379 278, 283, 283, 283, 0, 0, 283, 279, 284, 284,
1380 284, 276, 0, 284, 0, 280, 0, 278, 285, 285,
1381 285, 0, 0, 285, 279, 0, 282, 286, 286, 286,
1382 0, 0, 286, 280, 283, 0, 0, 283, 287, 287,
1383
1384 287, 284, 0, 287, 288, 288, 288, 0, 0, 288,
1385 0, 285, 0, 0, 288, 0, 289, 289, 289, 0,
1386 286, 289, 0, 0, 0, 284, 0, 286, 0, 285,
1387 0, 287, 0, 290, 290, 290, 0, 288, 290, 291,
1388 291, 291, 0, 0, 291, 292, 292, 292, 0, 289,
1389 292, 287, 0, 293, 293, 293, 0, 0, 293, 294,
1390 294, 294, 0, 0, 294, 0, 290, 0, 0, 289,
1391 0, 0, 291, 0, 295, 295, 295, 0, 292, 295,
1392 0, 0, 290, 0, 0, 291, 293, 0, 0, 296,
1393 296, 296, 294, 293, 296, 0, 292, 298, 298, 298,
1394
1395 0, 0, 298, 299, 299, 299, 0, 295, 299, 300,
1396 300, 300, 294, 0, 300, 301, 301, 301, 0, 0,
1397 301, 0, 296, 0, 0, 301, 0, 295, 0, 0,
1398 298, 0, 302, 302, 302, 0, 299, 302, 303, 303,
1399 303, 296, 300, 303, 298, 304, 304, 304, 301, 0,
1400 304, 0, 0, 299, 0, 300, 305, 305, 305, 0,
1401 0, 305, 306, 306, 306, 302, 0, 306, 307, 307,
1402 307, 303, 302, 307, 0, 0, 303, 0, 304, 308,
1403 308, 308, 0, 0, 308, 304, 0, 0, 0, 305,
1404 0, 309, 309, 309, 305, 306, 309, 0, 310, 310,
1405
1406 310, 307, 0, 310, 307, 311, 311, 311, 0, 0,
1407 311, 0, 308, 312, 312, 312, 0, 0, 312, 0,
1408 0, 313, 313, 313, 309, 0, 313, 314, 314, 314,
1409 308, 310, 314, 0, 0, 309, 0, 0, 311, 315,
1410 315, 315, 310, 0, 315, 0, 312, 316, 316, 316,
1411 0, 0, 316, 312, 313, 0, 0, 317, 317, 317,
1412 314, 313, 317, 318, 318, 318, 0, 0, 318, 319,
1413 319, 319, 315, 0, 319, 0, 0, 315, 0, 0,
1414 316, 0, 321, 321, 321, 0, 0, 321, 0, 0,
1415 317, 0, 322, 322, 322, 0, 318, 322, 0, 0,
1416
1417 317, 0, 319, 316, 323, 323, 323, 0, 0, 323,
1418 0, 324, 324, 324, 319, 321, 324, 326, 326, 326,
1419 0, 0, 326, 0, 0, 322, 327, 327, 327, 0,
1420 0, 327, 0, 321, 329, 329, 329, 323, 0, 329,
1421 330, 330, 330, 0, 324, 330, 0, 322, 0, 0,
1422 326, 0, 0, 323, 0, 0, 331, 331, 331, 327,
1423 324, 331, 0, 333, 333, 333, 0, 329, 333, 334,
1424 334, 334, 0, 330, 334, 0, 0, 329, 335, 335,
1425 335, 0, 0, 335, 0, 0, 336, 336, 336, 331,
1426 0, 336, 331, 330, 0, 0, 333, 0, 0, 337,
1427
1428 337, 337, 334, 333, 337, 340, 340, 340, 0, 0,
1429 340, 335, 0, 334, 0, 341, 341, 341, 335, 336,
1430 341, 342, 342, 342, 0, 0, 342, 0, 343, 343,
1431 343, 0, 337, 343, 336, 344, 344, 344, 340, 0,
1432 344, 340, 0, 0, 345, 345, 345, 337, 341, 345,
1433 346, 346, 346, 0, 342, 346, 0, 347, 347, 347,
1434 0, 343, 347, 0, 0, 348, 348, 348, 344, 342,
1435 348, 351, 351, 351, 0, 344, 351, 345, 0, 0,
1436 0, 343, 0, 346, 350, 350, 350, 0, 0, 350,
1437 347, 352, 352, 352, 0, 345, 352, 0, 348, 0,
1438
1439 0, 0, 346, 0, 351, 353, 353, 353, 0, 347,
1440 353, 0, 0, 348, 354, 354, 354, 350, 0, 354,
1441 355, 355, 355, 0, 352, 355, 350, 356, 356, 356,
1442 0, 0, 356, 0, 357, 357, 357, 0, 353, 357,
1443 359, 359, 359, 352, 0, 359, 0, 354, 0, 360,
1444 360, 360, 0, 355, 360, 0, 0, 353, 0, 0,
1445 356, 363, 363, 363, 0, 0, 363, 357, 0, 356,
1446 364, 364, 364, 359, 357, 364, 367, 367, 367, 0,
1447 0, 367, 360, 368, 368, 368, 0, 0, 368, 0,
1448 369, 369, 369, 0, 363, 369, 0, 0, 0, 0,
1449
1450 0, 363, 0, 364, 0, 0, 0, 0, 0, 367,
1451 0, 0, 0, 0, 0, 0, 368, 0, 0, 0,
1452 0, 0, 364, 369, 0, 0, 0, 0, 367, 373,
1453 373, 373, 374, 374, 374, 375, 0, 375, 377, 377,
1454 377, 378, 378, 378, 379, 0, 379, 380, 380, 380,
1455 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1456 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1457 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1458 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1459 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1460
1461 372, 372, 372, 372, 372, 372, 372, 372, 372, 372,
1462 372, 372
1463 } ;
1464
1465static yy_state_type yy_last_accepting_state;
1466static char *yy_last_accepting_cpos;
1467
1468extern int yy_flex_debug;
1470
1471static const flex_int16_t yy_rule_linenum[64] =
1472 { 0,
1473 135, 137, 139, 144, 145, 150, 151, 152, 164, 167,
1474 172, 179, 188, 200, 212, 222, 232, 242, 251, 260,
1475 269, 278, 287, 296, 305, 314, 323, 332, 341, 350,
1476 359, 368, 377, 386, 395, 404, 413, 422, 431, 440,
1477 449, 458, 467, 476, 577, 593, 642, 650, 665, 666,
1478 667, 668, 669, 670, 672, 691, 708, 721, 726, 730,
1479 732, 734, 736
1480 } ;
1481
1482/* The intent behind this definition is that it'll catch
1483 * any uses of REJECT which flex missed.
1484 */
1485#define REJECT reject_used_but_not_detected
1486#define yymore() yymore_used_but_not_detected
1487#define YY_MORE_ADJ 0
1488#define YY_RESTORE_YY_MORE_OFFSET
1490#line 1 "netconf_lexer.ll"
1491/* Copyright (C) 2018-2026 Internet Systems Consortium, Inc. ("ISC")
1492
1493 This Source Code Form is subject to the terms of the Mozilla Public
1494 License, v. 2.0. If a copy of the MPL was not distributed with this
1495 file, You can obtain one at http://mozilla.org/MPL/2.0/. */
1496#line 8 "netconf_lexer.ll"
1497
1498/* Generated files do not make clang static analyser so happy */
1499#ifndef __clang_analyzer__
1500
1501#include <cctype>
1502#include <cerrno>
1503#include <climits>
1504#include <cstdint>
1505#include <cstdlib>
1506#include <string>
1507#include <netconf/parser_context.h>
1508#include <asiolink/io_address.h>
1509#include <boost/lexical_cast.hpp>
1510#include <exceptions/exceptions.h>
1511#include <cc/dhcp_config_error.h>
1512
1513/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */
1514
1515/* Work around an incompatibility in flex (at least versions
1516 2.5.31 through 2.5.33): it generates code that does
1517 not conform to C89. See Debian bug 333231
1518 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
1519# undef yywrap
1520# define yywrap() 1
1521
1522namespace {
1523
1524bool start_token_flag = false;
1525
1527unsigned int comment_start_line = 0;
1528
1529using namespace isc;
1531
1532};
1533
1534/* To avoid the call to exit... oops! */
1535#define YY_FATAL_ERROR(msg) isc::netconf::ParserContext::fatal(msg)
1536#line 1536 "netconf_lexer.cc"
1537/* noyywrap disables automatic rewinding for the next file to parse. Since we
1538 always parse only a single string, there's no need to do any wraps. And
1539 using yywrap requires linking with -lfl, which provides the default yywrap
1540 implementation that always returns 1 anyway. */
1541/* nounput simplifies the lexer, by removing support for putting a character
1542 back into the input stream. We never use such capability anyway. */
1543/* batch means that we'll never use the generated lexer interactively. */
1544/* avoid to get static global variables to remain with C++. */
1545/* in last resort %option reentrant */
1546/* Enables debug mode. To see the debug messages, one needs to also set
1547 yy_flex_debug to 1, then the debug messages will be printed on stderr. */
1548/* I have no idea what this option does, except it was specified in the bison
1549 examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
1550 be on the safe side and keep it. */
1551#define YY_NO_INPUT 1
1552
1553/* These are not token expressions yet, just convenience expressions that
1554 can be used during actual token definitions. Note some can match
1555 incorrect inputs (e.g., IP addresses) which must be checked. */
1556/* for errors */
1557#line 98 "netconf_lexer.ll"
1558/* This code run each time a pattern is matched. It updates the location
1559 by moving it ahead by yyleng bytes. yyleng specifies the length of the
1560 currently matched token. */
1561#define YY_USER_ACTION driver.loc_.columns(yyleng);
1562#line 1562 "netconf_lexer.cc"
1563#line 1563 "netconf_lexer.cc"
1564
1565#define INITIAL 0
1566#define COMMENT 1
1567#define DIR_ENTER 2
1568#define DIR_INCLUDE 3
1569#define DIR_EXIT 4
1570
1571#ifndef YY_NO_UNISTD_H
1572/* Special case for "unistd.h", since it is non-ANSI. We include it way
1573 * down here because we want the user's section 1 to have been scanned first.
1574 * The user has a chance to override it with an option.
1575 */
1576/* %if-c-only */
1577#include <unistd.h>
1578/* %endif */
1579/* %if-c++-only */
1580/* %endif */
1581#endif
1582
1583#ifndef YY_EXTRA_TYPE
1584#define YY_EXTRA_TYPE void *
1585#endif
1586
1587/* %if-c-only Reentrant structure and macros (non-C++). */
1588/* %if-reentrant */
1589/* %if-c-only */
1590
1591static int yy_init_globals ( void );
1592
1593/* %endif */
1594/* %if-reentrant */
1595/* %endif */
1596/* %endif End reentrant structures and macros. */
1597
1598/* Accessor methods to globals.
1599 These are made visible to non-reentrant scanners for convenience. */
1600
1601int yylex_destroy ( void );
1602
1603int yyget_debug ( void );
1604
1605void yyset_debug ( int debug_flag );
1606
1607YY_EXTRA_TYPE yyget_extra ( void );
1608
1609void yyset_extra ( YY_EXTRA_TYPE user_defined );
1610
1611FILE *yyget_in ( void );
1612
1613void yyset_in ( FILE * _in_str );
1614
1615FILE *yyget_out ( void );
1616
1617void yyset_out ( FILE * _out_str );
1618
1619 int yyget_leng ( void );
1620
1621char *yyget_text ( void );
1622
1623int yyget_lineno ( void );
1624
1625void yyset_lineno ( int _line_number );
1626
1627/* %if-bison-bridge */
1628/* %endif */
1629
1630/* Macros after this point can all be overridden by user definitions in
1631 * section 1.
1632 */
1633
1634#ifndef YY_SKIP_YYWRAP
1635#ifdef __cplusplus
1636extern "C" int yywrap ( void );
1637#else
1638extern int yywrap ( void );
1639#endif
1640#endif
1641
1642/* %not-for-header */
1643#ifndef YY_NO_UNPUT
1644
1645#endif
1646/* %ok-for-header */
1647
1648/* %endif */
1649
1650#ifndef yytext_ptr
1651static void yy_flex_strncpy ( char *, const char *, int );
1652#endif
1653
1654#ifdef YY_NEED_STRLEN
1655static int yy_flex_strlen ( const char * );
1656#endif
1657
1658#ifndef YY_NO_INPUT
1659/* %if-c-only Standard (non-C++) definition */
1660/* %not-for-header */
1661#ifdef __cplusplus
1662static int yyinput ( void );
1663#else
1664static int input ( void );
1665#endif
1666/* %ok-for-header */
1667
1668/* %endif */
1669#endif
1670
1671/* %if-c-only */
1672
1673/* %endif */
1674
1675/* Amount of stuff to slurp up with each read. */
1676#ifndef YY_READ_BUF_SIZE
1677#ifdef __ia64__
1678/* On IA-64, the buffer size is 16k, not 8k */
1679#define YY_READ_BUF_SIZE 16384
1680#else
1681#define YY_READ_BUF_SIZE 8192
1682#endif /* __ia64__ */
1683#endif
1684
1685/* Copy whatever the last rule matched to the standard output. */
1686#ifndef ECHO
1687/* %if-c-only Standard (non-C++) definition */
1688/* This used to be an fputs(), but since the string might contain NUL's,
1689 * we now use fwrite().
1690 */
1691#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1692/* %endif */
1693/* %if-c++-only C++ definition */
1694/* %endif */
1695#endif
1696
1697/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1698 * is returned in "result".
1699 */
1700#ifndef YY_INPUT
1701#define YY_INPUT(buf,result,max_size) \
1702/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1703 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1704 { \
1705 int c = '*'; \
1706 int n; \
1707 for ( n = 0; n < max_size && \
1708 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1709 buf[n] = (char) c; \
1710 if ( c == '\n' ) \
1711 buf[n++] = (char) c; \
1712 if ( c == EOF && ferror( yyin ) ) \
1713 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1714 result = n; \
1715 } \
1716 else \
1717 { \
1718 errno=0; \
1719 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1720 { \
1721 if( errno != EINTR) \
1722 { \
1723 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1724 break; \
1725 } \
1726 errno=0; \
1727 clearerr(yyin); \
1728 } \
1729 }\
1730\
1731/* %if-c++-only C++ definition \ */\
1732/* %endif */
1733
1734#endif
1735
1736/* No semi-colon after return; correct usage is to write "yyterminate();" -
1737 * we don't want an extra ';' after the "return" because that will cause
1738 * some compilers to complain about unreachable statements.
1739 */
1740#ifndef yyterminate
1741#define yyterminate() return YY_NULL
1742#endif
1743
1744/* Number of entries by which start-condition stack grows. */
1745#ifndef YY_START_STACK_INCR
1746#define YY_START_STACK_INCR 25
1747#endif
1748
1749/* Report a fatal error. */
1750#ifndef YY_FATAL_ERROR
1751/* %if-c-only */
1752#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1753/* %endif */
1754/* %if-c++-only */
1755/* %endif */
1756#endif
1757
1758/* %if-tables-serialization structures and prototypes */
1759/* %not-for-header */
1760/* %ok-for-header */
1761
1762/* %not-for-header */
1763/* %tables-yydmap generated elements */
1764/* %endif */
1765/* end tables serialization structures and prototypes */
1766
1767/* %ok-for-header */
1768
1769/* Default declaration of generated scanner - a define so the user can
1770 * easily add parameters.
1771 */
1772#ifndef YY_DECL
1773#define YY_DECL_IS_OURS 1
1774/* %if-c-only Standard (non-C++) definition */
1775
1776extern int yylex (void);
1777
1778#define YY_DECL int yylex (void)
1779/* %endif */
1780/* %if-c++-only C++ definition */
1781/* %endif */
1782#endif /* !YY_DECL */
1783
1784/* Code executed at the beginning of each rule, after yytext and yyleng
1785 * have been set up.
1786 */
1787#ifndef YY_USER_ACTION
1788#define YY_USER_ACTION
1789#endif
1790
1791/* Code executed at the end of each rule. */
1792#ifndef YY_BREAK
1793#define YY_BREAK /*LINTED*/break;
1794#endif
1795
1796/* %% [6.0] YY_RULE_SETUP definition goes here */
1797#define YY_RULE_SETUP \
1798 YY_USER_ACTION
1799
1800/* %not-for-header */
1804{
1805 yy_state_type yy_current_state;
1806 char *yy_cp, *yy_bp;
1808
1809 if ( !(yy_init) )
1810 {
1811 (yy_init) = 1;
1812
1813#ifdef YY_USER_INIT
1814 YY_USER_INIT;
1815#endif
1816
1817 if ( ! (yy_start) )
1818 (yy_start) = 1; /* first start state */
1819
1820 if ( ! yyin )
1821/* %if-c-only */
1822 yyin = stdin;
1823/* %endif */
1824/* %if-c++-only */
1825/* %endif */
1826
1827 if ( ! yyout )
1828/* %if-c-only */
1829 yyout = stdout;
1830/* %endif */
1831/* %if-c++-only */
1832/* %endif */
1833
1834 if ( ! YY_CURRENT_BUFFER ) {
1838 }
1839
1841 }
1842
1843 {
1844/* %% [7.0] user's declarations go here */
1845#line 104 "netconf_lexer.ll"
1846
1847
1848
1849#line 108 "netconf_lexer.ll"
1850 /* This part of the code is copied over to the verbatim to the top
1851 of the generated yylex function. Explanation:
1852 http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
1853
1854 /* Code run each time yylex is called. */
1855 driver.loc_.step();
1856
1857 /* We currently have 3 points of entries defined:
1858 START_JSON - which expects any valid JSON
1859 START_NETCONF - which expects full configuration (with outer map and Netconf
1860 object in it.
1861 START_SUB_NETCONF - which expects only content of the Netconf, this is
1862 primarily useful for testing. */
1863 if (start_token_flag) {
1864 start_token_flag = false;
1865 switch (start_token_value) {
1867 default:
1868 return NetconfParser::make_START_JSON(driver.loc_);
1870 return NetconfParser::make_START_NETCONF(driver.loc_);
1872 return NetconfParser::make_START_SUB_NETCONF(driver.loc_);
1873 }
1874 }
1875
1876
1877#line 1877 "netconf_lexer.cc"
1878
1879 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1880 {
1881/* %% [8.0] yymore()-related code goes here */
1882 yy_cp = (yy_c_buf_p);
1883
1884 /* Support of yytext. */
1885 *yy_cp = (yy_hold_char);
1886
1887 /* yy_bp points to the position in yy_ch_buf of the start of
1888 * the current run.
1889 */
1890 yy_bp = yy_cp;
1891
1892/* %% [9.0] code to set up and find next match goes here */
1893 yy_current_state = (yy_start);
1894yy_match:
1895 do
1896 {
1897 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1898 if ( yy_accept[yy_current_state] )
1899 {
1900 (yy_last_accepting_state) = yy_current_state;
1901 (yy_last_accepting_cpos) = yy_cp;
1902 }
1903 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1904 {
1905 yy_current_state = (int) yy_def[yy_current_state];
1906 if ( yy_current_state >= 373 )
1907 yy_c = yy_meta[yy_c];
1908 }
1909 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1910 ++yy_cp;
1911 }
1912 while ( yy_current_state != 372 );
1913 yy_cp = (yy_last_accepting_cpos);
1914 yy_current_state = (yy_last_accepting_state);
1915
1916yy_find_action:
1917/* %% [10.0] code to find the action number goes here */
1918 yy_act = yy_accept[yy_current_state];
1919
1921
1922/* %% [11.0] code for yylineno update goes here */
1923
1924do_action: /* This label is used only to access EOF actions. */
1925
1926/* %% [12.0] debug code goes here */
1927 if ( yy_flex_debug )
1928 {
1929 if ( yy_act == 0 )
1930 fprintf( stderr, "--scanner backing up\n" );
1931 else if ( yy_act < 64 )
1932 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1933 (long)yy_rule_linenum[yy_act], yytext );
1934 else if ( yy_act == 64 )
1935 fprintf( stderr, "--accepting default rule (\"%s\")\n",
1936 yytext );
1937 else if ( yy_act == 65 )
1938 fprintf( stderr, "--(end of buffer or a NUL)\n" );
1939 else
1940 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1941 }
1942
1943 switch ( yy_act )
1944 { /* beginning of action switch */
1945/* %% [13.0] actions go here */
1946 case 0: /* must back up */
1947 /* undo the effects of YY_DO_BEFORE_ACTION */
1948 *yy_cp = (yy_hold_char);
1949 yy_cp = (yy_last_accepting_cpos);
1950 yy_current_state = (yy_last_accepting_state);
1951 goto yy_find_action;
1952
1953case 1:
1955#line 135 "netconf_lexer.ll"
1956;
1957 YY_BREAK
1958case 2:
1960#line 137 "netconf_lexer.ll"
1961;
1962 YY_BREAK
1963case 3:
1965#line 139 "netconf_lexer.ll"
1966{
1967 BEGIN(COMMENT);
1968 comment_start_line = driver.loc_.end.line;;
1969}
1970 YY_BREAK
1971case 4:
1973#line 144 "netconf_lexer.ll"
1974BEGIN(INITIAL);
1975 YY_BREAK
1976case 5:
1978#line 145 "netconf_lexer.ll"
1979;
1980 YY_BREAK
1981case YY_STATE_EOF(COMMENT):
1982#line 146 "netconf_lexer.ll"
1983{
1984 isc_throw(ParseError, "Comment not closed. (/* in line " << comment_start_line);
1985}
1986 YY_BREAK
1987case 6:
1989#line 150 "netconf_lexer.ll"
1991 YY_BREAK
1992case 7:
1994#line 151 "netconf_lexer.ll"
1996 YY_BREAK
1997case 8:
1999#line 152 "netconf_lexer.ll"
2000{
2001 /* Include directive. */
2002
2003 /* Extract the filename. */
2004 std::string tmp(yytext+1);
2005 tmp.resize(tmp.size() - 1);
2006
2007 driver.includeFile(tmp);
2008}
2009 YY_BREAK
2013#line 161 "netconf_lexer.ll"
2014{
2015 isc_throw(ParseError, "Directive not closed.");
2016}
2017 YY_BREAK
2018case 9:
2020#line 164 "netconf_lexer.ll"
2021BEGIN(INITIAL);
2022 YY_BREAK
2023case 10:
2025#line 167 "netconf_lexer.ll"
2026{
2027 /* Ok, we found a with space. Let's ignore it and update loc variable. */
2028 driver.loc_.step();
2029}
2030 YY_BREAK
2031case 11:
2032/* rule 11 can match eol */
2034#line 172 "netconf_lexer.ll"
2035{
2036 /* Newline found. Let's update the location and continue. */
2037 driver.loc_.lines(yyleng);
2038 driver.loc_.step();
2039}
2040 YY_BREAK
2041case 12:
2043#line 179 "netconf_lexer.ll"
2044{
2045 switch(driver.ctx_) {
2047 return NetconfParser::make_NETCONF(driver.loc_);
2048 default:
2049 return NetconfParser::make_STRING("Netconf", driver.loc_);
2050 }
2051}
2052 YY_BREAK
2053case 13:
2055#line 188 "netconf_lexer.ll"
2056{
2057 switch(driver.ctx_) {
2062 return NetconfParser::make_USER_CONTEXT(driver.loc_);
2063 default:
2064 return NetconfParser::make_STRING("user-context", driver.loc_);
2065 }
2066}
2067 YY_BREAK
2068case 14:
2070#line 200 "netconf_lexer.ll"
2071{
2072 switch(driver.ctx_) {
2077 return NetconfParser::make_COMMENT(driver.loc_);
2078 default:
2079 return NetconfParser::make_STRING("comment", driver.loc_);
2080 }
2081}
2082 YY_BREAK
2083case 15:
2085#line 212 "netconf_lexer.ll"
2086{
2087 switch(driver.ctx_) {
2090 return NetconfParser::make_BOOT_UPDATE(driver.loc_);
2091 default:
2092 return NetconfParser::make_STRING("boot-update", driver.loc_);
2093 }
2094}
2095 YY_BREAK
2096case 16:
2098#line 222 "netconf_lexer.ll"
2099{
2100 switch(driver.ctx_) {
2103 return NetconfParser::make_SUBSCRIBE_CHANGES(driver.loc_);
2104 default:
2105 return NetconfParser::make_STRING("subscribe-changes", driver.loc_);
2106 }
2107}
2108 YY_BREAK
2109case 17:
2111#line 232 "netconf_lexer.ll"
2112{
2113 switch(driver.ctx_) {
2116 return NetconfParser::make_VALIDATE_CHANGES(driver.loc_);
2117 default:
2118 return NetconfParser::make_STRING("validate-changes", driver.loc_);
2119 }
2120}
2121 YY_BREAK
2122case 18:
2124#line 242 "netconf_lexer.ll"
2125{
2126 switch(driver.ctx_) {
2128 return NetconfParser::make_MANAGED_SERVERS(driver.loc_);
2129 default:
2130 return NetconfParser::make_STRING("managed-servers", driver.loc_);
2131 }
2132}
2133 YY_BREAK
2134case 19:
2136#line 251 "netconf_lexer.ll"
2137{
2138 switch(driver.ctx_) {
2140 return NetconfParser::make_DHCP4_SERVER(driver.loc_);
2141 default:
2142 return NetconfParser::make_STRING("dhcp4", driver.loc_);
2143 }
2144}
2145 YY_BREAK
2146case 20:
2148#line 260 "netconf_lexer.ll"
2149{
2150 switch(driver.ctx_) {
2152 return NetconfParser::make_DHCP6_SERVER(driver.loc_);
2153 default:
2154 return NetconfParser::make_STRING("dhcp6", driver.loc_);
2155 }
2156}
2157 YY_BREAK
2158case 21:
2160#line 269 "netconf_lexer.ll"
2161{
2162 switch(driver.ctx_) {
2164 return NetconfParser::make_D2_SERVER(driver.loc_);
2165 default:
2166 return NetconfParser::make_STRING("d2", driver.loc_);
2167 }
2168}
2169 YY_BREAK
2170case 22:
2172#line 278 "netconf_lexer.ll"
2173{
2174 switch(driver.ctx_) {
2176 return NetconfParser::make_MODEL(driver.loc_);
2177 default:
2178 return NetconfParser::make_STRING("model", driver.loc_);
2179 }
2180}
2181 YY_BREAK
2182case 23:
2184#line 287 "netconf_lexer.ll"
2185{
2186 switch(driver.ctx_) {
2188 return NetconfParser::make_CONTROL_SOCKET(driver.loc_);
2189 default:
2190 return NetconfParser::make_STRING("control-socket", driver.loc_);
2191 }
2192}
2193 YY_BREAK
2194case 24:
2196#line 296 "netconf_lexer.ll"
2197{
2198 switch(driver.ctx_) {
2200 return NetconfParser::make_UNIX(driver.loc_);
2201 default:
2202 return NetconfParser::make_STRING("unix", driver.loc_);
2203 }
2204}
2205 YY_BREAK
2206case 25:
2208#line 305 "netconf_lexer.ll"
2209{
2210 switch(driver.ctx_) {
2212 return NetconfParser::make_HTTP(driver.loc_);
2213 default:
2214 return NetconfParser::make_STRING("http", driver.loc_);
2215 }
2216}
2217 YY_BREAK
2218case 26:
2220#line 314 "netconf_lexer.ll"
2221{
2222 switch(driver.ctx_) {
2224 return NetconfParser::make_STDOUT(driver.loc_);
2225 default:
2226 return NetconfParser::make_STRING("stdout", driver.loc_);
2227 }
2228}
2229 YY_BREAK
2230case 27:
2232#line 323 "netconf_lexer.ll"
2233{
2234 switch(driver.ctx_) {
2236 return NetconfParser::make_SOCKET_TYPE(driver.loc_);
2237 default:
2238 return NetconfParser::make_STRING("socket-type", driver.loc_);
2239 }
2240}
2241 YY_BREAK
2242case 28:
2244#line 332 "netconf_lexer.ll"
2245{
2246 switch(driver.ctx_) {
2248 return NetconfParser::make_SOCKET_NAME(driver.loc_);
2249 default:
2250 return NetconfParser::make_STRING("socket-name", driver.loc_);
2251 }
2252}
2253 YY_BREAK
2254case 29:
2256#line 341 "netconf_lexer.ll"
2257{
2258 switch(driver.ctx_) {
2260 return NetconfParser::make_SOCKET_URL(driver.loc_);
2261 default:
2262 return NetconfParser::make_STRING("socket-url", driver.loc_);
2263 }
2264}
2265 YY_BREAK
2266case 30:
2268#line 350 "netconf_lexer.ll"
2269{
2270 switch(driver.ctx_) {
2272 return NetconfParser::make_HOOKS_LIBRARIES(driver.loc_);
2273 default:
2274 return NetconfParser::make_STRING("hooks-libraries", driver.loc_);
2275 }
2276}
2277 YY_BREAK
2278case 31:
2280#line 359 "netconf_lexer.ll"
2281{
2282 switch(driver.ctx_) {
2284 return NetconfParser::make_LIBRARY(driver.loc_);
2285 default:
2286 return NetconfParser::make_STRING("library", driver.loc_);
2287 }
2288}
2289 YY_BREAK
2290case 32:
2292#line 368 "netconf_lexer.ll"
2293{
2294 switch(driver.ctx_) {
2296 return NetconfParser::make_PARAMETERS(driver.loc_);
2297 default:
2298 return NetconfParser::make_STRING("parameters", driver.loc_);
2299 }
2300}
2301 YY_BREAK
2302case 33:
2304#line 377 "netconf_lexer.ll"
2305{
2306 switch(driver.ctx_) {
2308 return NetconfParser::make_LOGGERS(driver.loc_);
2309 default:
2310 return NetconfParser::make_STRING("loggers", driver.loc_);
2311 }
2312}
2313 YY_BREAK
2314case 34:
2316#line 386 "netconf_lexer.ll"
2317{
2318 switch(driver.ctx_) {
2320 return NetconfParser::make_NAME(driver.loc_);
2321 default:
2322 return NetconfParser::make_STRING("name", driver.loc_);
2323 }
2324}
2325 YY_BREAK
2326case 35:
2328#line 395 "netconf_lexer.ll"
2329{
2330 switch(driver.ctx_) {
2332 return NetconfParser::make_OUTPUT_OPTIONS(driver.loc_);
2333 default:
2334 return NetconfParser::make_STRING("output_options", driver.loc_);
2335 }
2336}
2337 YY_BREAK
2338case 36:
2340#line 404 "netconf_lexer.ll"
2341{
2342 switch(driver.ctx_) {
2344 return NetconfParser::make_OUTPUT_OPTIONS(driver.loc_);
2345 default:
2346 return NetconfParser::make_STRING("output-options", driver.loc_);
2347 }
2348}
2349 YY_BREAK
2350case 37:
2352#line 413 "netconf_lexer.ll"
2353{
2354 switch(driver.ctx_) {
2356 return NetconfParser::make_OUTPUT(driver.loc_);
2357 default:
2358 return NetconfParser::make_STRING("output", driver.loc_);
2359 }
2360}
2361 YY_BREAK
2362case 38:
2364#line 422 "netconf_lexer.ll"
2365{
2366 switch(driver.ctx_) {
2368 return NetconfParser::make_FLUSH(driver.loc_);
2369 default:
2370 return NetconfParser::make_STRING("flush", driver.loc_);
2371 }
2372}
2373 YY_BREAK
2374case 39:
2376#line 431 "netconf_lexer.ll"
2377{
2378 switch(driver.ctx_) {
2380 return NetconfParser::make_MAXSIZE(driver.loc_);
2381 default:
2382 return NetconfParser::make_STRING("maxsize", driver.loc_);
2383 }
2384}
2385 YY_BREAK
2386case 40:
2388#line 440 "netconf_lexer.ll"
2389{
2390 switch(driver.ctx_) {
2392 return NetconfParser::make_MAXVER(driver.loc_);
2393 default:
2394 return NetconfParser::make_STRING("maxver", driver.loc_);
2395 }
2396}
2397 YY_BREAK
2398case 41:
2400#line 449 "netconf_lexer.ll"
2401{
2402 switch(driver.ctx_) {
2404 return NetconfParser::make_PATTERN(driver.loc_);
2405 default:
2406 return NetconfParser::make_STRING("pattern", driver.loc_);
2407 }
2408}
2409 YY_BREAK
2410case 42:
2412#line 458 "netconf_lexer.ll"
2413{
2414 switch(driver.ctx_) {
2416 return NetconfParser::make_DEBUGLEVEL(driver.loc_);
2417 default:
2418 return NetconfParser::make_STRING("debuglevel", driver.loc_);
2419 }
2420}
2421 YY_BREAK
2422case 43:
2424#line 467 "netconf_lexer.ll"
2425{
2426 switch(driver.ctx_) {
2428 return NetconfParser::make_SEVERITY(driver.loc_);
2429 default:
2430 return NetconfParser::make_STRING("severity", driver.loc_);
2431 }
2432}
2433 YY_BREAK
2434case 44:
2436#line 476 "netconf_lexer.ll"
2437{
2438 /* A string has been matched. It contains the actual string and single quotes.
2439 We need to get those quotes out of the way and just use its content, e.g.
2440 for 'foo' we should get foo */
2441 std::string raw(yytext+1);
2442 size_t len = raw.size() - 1;
2443 raw.resize(len);
2444 std::string decoded;
2445 decoded.reserve(len);
2446 for (size_t pos = 0; pos < len; ++pos) {
2447 int b = 0;
2448 char c = raw[pos];
2449 switch (c) {
2450 case '"':
2451 /* impossible condition */
2452 driver.error(driver.loc_, "Bad quote in \"" + raw + "\"");
2453 break;
2454 case '\\':
2455 ++pos;
2456 if (pos >= len) {
2457 /* impossible condition */
2458 driver.error(driver.loc_, "Overflow escape in \"" + raw + "\"");
2459 }
2460 c = raw[pos];
2461 switch (c) {
2462 case '"':
2463 case '\\':
2464 case '/':
2465 decoded.push_back(c);
2466 break;
2467 case 'b':
2468 decoded.push_back('\b');
2469 break;
2470 case 'f':
2471 decoded.push_back('\f');
2472 break;
2473 case 'n':
2474 decoded.push_back('\n');
2475 break;
2476 case 'r':
2477 decoded.push_back('\r');
2478 break;
2479 case 't':
2480 decoded.push_back('\t');
2481 break;
2482 case 'u':
2483 /* support only \u0000 to \u00ff */
2484 ++pos;
2485 if (pos + 4 > len) {
2486 /* impossible condition */
2487 driver.error(driver.loc_,
2488 "Overflow unicode escape in \"" + raw + "\"");
2489 }
2490 if ((raw[pos] != '0') || (raw[pos + 1] != '0')) {
2491 driver.error(driver.loc_,
2492 "Unsupported unicode escape in \"" + raw + "\"",
2493 pos + 1);
2494 }
2495 pos += 2;
2496 c = raw[pos];
2497 if ((c >= '0') && (c <= '9')) {
2498 b = (c - '0') << 4;
2499 } else if ((c >= 'A') && (c <= 'F')) {
2500 b = (c - 'A' + 10) << 4;
2501 } else if ((c >= 'a') && (c <= 'f')) {
2502 b = (c - 'a' + 10) << 4;
2503 } else {
2504 /* impossible condition */
2505 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
2506 }
2507 pos++;
2508 c = raw[pos];
2509 if ((c >= '0') && (c <= '9')) {
2510 b |= c - '0';
2511 } else if ((c >= 'A') && (c <= 'F')) {
2512 b |= c - 'A' + 10;
2513 } else if ((c >= 'a') && (c <= 'f')) {
2514 b |= c - 'a' + 10;
2515 } else {
2516 /* impossible condition */
2517 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
2518 }
2519 decoded.push_back(static_cast<char>(b & 0xff));
2520 break;
2521 default:
2522 /* impossible condition */
2523 driver.error(driver.loc_, "Bad escape in \"" + raw + "\"");
2524 }
2525 break;
2526 default:
2527 if ((c >= 0) && (c < 0x20)) {
2528 /* impossible condition */
2529 driver.error(driver.loc_, "Invalid control in \"" + raw + "\"");
2530 }
2531 decoded.push_back(c);
2532 }
2533 }
2534
2535 return NetconfParser::make_STRING(decoded, driver.loc_);
2536}
2537 YY_BREAK
2538case 45:
2539/* rule 45 can match eol */
2541#line 577 "netconf_lexer.ll"
2542{
2543 /* Bad string with a forbidden control character inside */
2544 std::string raw(yytext+1);
2545 size_t len = raw.size() - 1;
2546 size_t pos = 0;
2547 for (; pos < len; ++pos) {
2548 char c = raw[pos];
2549 if ((c >= 0) && (c < 0x20)) {
2550 break;
2551 }
2552 }
2553 driver.error(driver.loc_,
2554 "Invalid control in " + std::string(yytext),
2555 pos + 1);
2556}
2557 YY_BREAK
2558case 46:
2559/* rule 46 can match eol */
2561#line 593 "netconf_lexer.ll"
2562{
2563 /* Bad string with a bad escape inside */
2564 std::string raw(yytext+1);
2565 size_t len = raw.size() - 1;
2566 size_t pos = 0;
2567 bool found = false;
2568 for (; pos < len; ++pos) {
2569 if (found) {
2570 break;
2571 }
2572 char c = raw[pos];
2573 if (c == '\\') {
2574 ++pos;
2575 c = raw[pos];
2576 switch (c) {
2577 case '"':
2578 case '\\':
2579 case '/':
2580 case 'b':
2581 case 'f':
2582 case 'n':
2583 case 'r':
2584 case 't':
2585 break;
2586 case 'u':
2587 if ((pos + 4 > len) ||
2588 !std::isxdigit(raw[pos + 1]) ||
2589 !std::isxdigit(raw[pos + 2]) ||
2590 !std::isxdigit(raw[pos + 3]) ||
2591 !std::isxdigit(raw[pos + 4])) {
2592 found = true;
2593 }
2594 break;
2595 default:
2596 found = true;
2597 break;
2598 }
2599 }
2600 }
2601 /* The rule stops on the first " including on \" so add ... in this case */
2602 std::string trailer = "";
2603 if (raw[len - 1] == '\\') {
2604 trailer = "...";
2605 }
2606 driver.error(driver.loc_,
2607 "Bad escape in " + std::string(yytext) + trailer,
2608 pos);
2609}
2610 YY_BREAK
2611case 47:
2613#line 642 "netconf_lexer.ll"
2614{
2615 /* Bad string with an open escape at the end */
2616 std::string raw(yytext+1);
2617 driver.error(driver.loc_,
2618 "Overflow escape in " + std::string(yytext),
2619 raw.size() + 1);
2620}
2621 YY_BREAK
2622case 48:
2624#line 650 "netconf_lexer.ll"
2625{
2626 /* Bad string with an open unicode escape at the end */
2627 std::string raw(yytext+1);
2628 size_t pos = raw.size() - 1;
2629 for (; pos > 0; --pos) {
2630 char c = raw[pos];
2631 if (c == 'u') {
2632 break;
2633 }
2634 }
2635 driver.error(driver.loc_,
2636 "Overflow unicode escape in " + std::string(yytext),
2637 pos + 1);
2638}
2639 YY_BREAK
2640case 49:
2642#line 665 "netconf_lexer.ll"
2643{ return NetconfParser::make_LSQUARE_BRACKET(driver.loc_); }
2644 YY_BREAK
2645case 50:
2647#line 666 "netconf_lexer.ll"
2648{ return NetconfParser::make_RSQUARE_BRACKET(driver.loc_); }
2649 YY_BREAK
2650case 51:
2652#line 667 "netconf_lexer.ll"
2653{ return NetconfParser::make_LCURLY_BRACKET(driver.loc_); }
2654 YY_BREAK
2655case 52:
2657#line 668 "netconf_lexer.ll"
2658{ return NetconfParser::make_RCURLY_BRACKET(driver.loc_); }
2659 YY_BREAK
2660case 53:
2662#line 669 "netconf_lexer.ll"
2663{ return NetconfParser::make_COMMA(driver.loc_); }
2664 YY_BREAK
2665case 54:
2667#line 670 "netconf_lexer.ll"
2668{ return NetconfParser::make_COLON(driver.loc_); }
2669 YY_BREAK
2670case 55:
2672#line 672 "netconf_lexer.ll"
2673{
2674 /* Integer with leading zeros. */
2675 std::string tmp(yytext);
2676 int64_t integer = 0;
2677 try {
2678 /* In substring we want to use negative values (e.g. -1).
2679 In enterprise-id we need to use values up to 0xffffffff.
2680 To cover both of those use cases, we need at least
2681 int64_t. */
2682 integer = boost::lexical_cast<int64_t>(tmp);
2683 } catch (const boost::bad_lexical_cast &) {
2684 driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
2685 }
2686
2687 driver.warning(driver.loc_, "leading zeros in integers will be deprecated.");
2688
2689 return NetconfParser::make_INTEGER(integer, driver.loc_);
2690}
2691 YY_BREAK
2692case 56:
2694#line 691 "netconf_lexer.ll"
2695{
2696 /* An integer was found. */
2697 std::string tmp(yytext);
2698 int64_t integer = 0;
2699 try {
2700 /* In substring we want to use negative values (e.g. -1).
2701 In enterprise-id we need to use values up to 0xffffffff.
2702 To cover both of those use cases, we need at least
2703 int64_t. */
2704 integer = boost::lexical_cast<int64_t>(tmp);
2705 } catch (const boost::bad_lexical_cast &) {
2706 driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
2707 }
2708
2709 return NetconfParser::make_INTEGER(integer, driver.loc_);
2710}
2711 YY_BREAK
2712case 57:
2714#line 708 "netconf_lexer.ll"
2715{
2716 /* A floating point was found. */
2717 std::string tmp(yytext);
2718 double fp = 0.0;
2719 try {
2720 fp = boost::lexical_cast<double>(tmp);
2721 } catch (const boost::bad_lexical_cast &) {
2722 driver.error(driver.loc_, "Failed to convert " + tmp + " to a floating point.");
2723 }
2724
2725 return NetconfParser::make_FLOAT(fp, driver.loc_);
2726}
2727 YY_BREAK
2728case 58:
2730#line 721 "netconf_lexer.ll"
2731{
2732 string tmp(yytext);
2733 return NetconfParser::make_BOOLEAN(tmp == "true", driver.loc_);
2734}
2735 YY_BREAK
2736case 59:
2738#line 726 "netconf_lexer.ll"
2739{
2740 return NetconfParser::make_NULL_TYPE(driver.loc_);
2741}
2742 YY_BREAK
2743case 60:
2745#line 730 "netconf_lexer.ll"
2746driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
2747 YY_BREAK
2748case 61:
2750#line 732 "netconf_lexer.ll"
2751driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
2752 YY_BREAK
2753case 62:
2755#line 734 "netconf_lexer.ll"
2756driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
2757 YY_BREAK
2758case 63:
2760#line 736 "netconf_lexer.ll"
2761driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
2762 YY_BREAK
2763case YY_STATE_EOF(INITIAL):
2764#line 738 "netconf_lexer.ll"
2765{
2766 if (driver.states_.empty()) {
2767 return NetconfParser::make_END(driver.loc_);
2768 }
2769 driver.loc_ = driver.locs_.back();
2770 driver.locs_.pop_back();
2771 driver.file_ = driver.files_.back();
2772 driver.files_.pop_back();
2773 if (driver.sfile_) {
2774 fclose(driver.sfile_);
2775 driver.sfile_ = 0;
2776 }
2777 if (!driver.sfiles_.empty()) {
2778 driver.sfile_ = driver.sfiles_.back();
2779 driver.sfiles_.pop_back();
2780 }
2781 netconf__delete_buffer(YY_CURRENT_BUFFER);
2782 netconf__switch_to_buffer(driver.states_.back());
2783 driver.states_.pop_back();
2784
2785 BEGIN(DIR_EXIT);
2786}
2787 YY_BREAK
2788case 64:
2790#line 761 "netconf_lexer.ll"
2791ECHO;
2792 YY_BREAK
2793#line 2793 "netconf_lexer.cc"
2794
2795 case YY_END_OF_BUFFER:
2796 {
2797 /* Amount of text matched not including the EOB char. */
2798 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2799
2800 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2801 *yy_cp = (yy_hold_char);
2803
2804 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2805 {
2806 /* We're scanning a new file or input source. It's
2807 * possible that this happened because the user
2808 * just pointed yyin at a new source and called
2809 * yylex(). If so, then we have to assure
2810 * consistency between YY_CURRENT_BUFFER and our
2811 * globals. Here is the right place to do so, because
2812 * this is the first action (other than possibly a
2813 * back-up) that will match for the new input source.
2814 */
2815 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2816/* %if-c-only */
2817 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2818/* %endif */
2819/* %if-c++-only */
2820/* %endif */
2821 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2822 }
2823
2824 /* Note that here we test for yy_c_buf_p "<=" to the position
2825 * of the first EOB in the buffer, since yy_c_buf_p will
2826 * already have been incremented past the NUL character
2827 * (since all states make transitions on EOB to the
2828 * end-of-buffer state). Contrast this with the test
2829 * in input().
2830 */
2831 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2832 { /* This was really a NUL. */
2833 yy_state_type yy_next_state;
2834
2835 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2836
2837 yy_current_state = yy_get_previous_state( );
2838
2839 /* Okay, we're now positioned to make the NUL
2840 * transition. We couldn't have
2841 * yy_get_previous_state() go ahead and do it
2842 * for us because it doesn't know how to deal
2843 * with the possibility of jamming (and we don't
2844 * want to build jamming into it because then it
2845 * will run more slowly).
2846 */
2847
2848 yy_next_state = yy_try_NUL_trans( yy_current_state );
2849
2851
2852 if ( yy_next_state )
2853 {
2854 /* Consume the NUL. */
2855 yy_cp = ++(yy_c_buf_p);
2856 yy_current_state = yy_next_state;
2857 goto yy_match;
2858 }
2859
2860 else
2861 {
2862/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2863 yy_cp = (yy_last_accepting_cpos);
2864 yy_current_state = (yy_last_accepting_state);
2865 goto yy_find_action;
2866 }
2867 }
2868
2869 else switch ( yy_get_next_buffer( ) )
2870 {
2872 {
2873 (yy_did_buffer_switch_on_eof) = 0;
2874
2875 if ( yywrap( ) )
2876 {
2877 /* Note: because we've taken care in
2878 * yy_get_next_buffer() to have set up
2879 * yytext, we can now set up
2880 * yy_c_buf_p so that if some total
2881 * hoser (like flex itself) wants to
2882 * call the scanner after we return the
2883 * YY_NULL, it'll still work - another
2884 * YY_NULL will get returned.
2885 */
2886 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2887
2889 goto do_action;
2890 }
2891
2892 else
2893 {
2894 if ( ! (yy_did_buffer_switch_on_eof) )
2896 }
2897 break;
2898 }
2899
2901 (yy_c_buf_p) =
2902 (yytext_ptr) + yy_amount_of_matched_text;
2903
2904 yy_current_state = yy_get_previous_state( );
2905
2906 yy_cp = (yy_c_buf_p);
2908 goto yy_match;
2909
2910 case EOB_ACT_LAST_MATCH:
2911 (yy_c_buf_p) =
2912 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2913
2914 yy_current_state = yy_get_previous_state( );
2915
2916 yy_cp = (yy_c_buf_p);
2918 goto yy_find_action;
2919 }
2920 break;
2921 }
2922
2923 default:
2925 "fatal flex scanner internal error--no action found" );
2926 } /* end of action switch */
2927 } /* end of scanning one token */
2928 } /* end of user's declarations */
2929} /* end of yylex */
2930/* %ok-for-header */
2931
2932/* %if-c++-only */
2933/* %not-for-header */
2934/* %ok-for-header */
2935
2936/* %endif */
2937
2938/* yy_get_next_buffer - try to read in a new buffer
2939 *
2940 * Returns a code representing an action:
2941 * EOB_ACT_LAST_MATCH -
2942 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2943 * EOB_ACT_END_OF_FILE - end of file
2944 */
2945/* %if-c-only */
2946static int yy_get_next_buffer (void)
2947/* %endif */
2948/* %if-c++-only */
2949/* %endif */
2950{
2951 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2952 char *source = (yytext_ptr);
2953 int number_to_move, i;
2954 int ret_val;
2955
2956 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2958 "fatal flex scanner internal error--end of buffer missed" );
2959
2960 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2961 { /* Don't try to fill the buffer, so this is an EOF. */
2962 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2963 {
2964 /* We matched a single character, the EOB, so
2965 * treat this as a final EOF.
2966 */
2967 return EOB_ACT_END_OF_FILE;
2968 }
2969
2970 else
2971 {
2972 /* We matched some text prior to the EOB, first
2973 * process it.
2974 */
2975 return EOB_ACT_LAST_MATCH;
2976 }
2977 }
2978
2979 /* Try to read more data. */
2980
2981 /* First move last chars to start of buffer. */
2982 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
2983
2984 for ( i = 0; i < number_to_move; ++i )
2985 *(dest++) = *(source++);
2986
2987 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2988 /* don't do the read, it's not guaranteed to return an EOF,
2989 * just force an EOF
2990 */
2991 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2992
2993 else
2994 {
2995 int num_to_read =
2996 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2997
2998 while ( num_to_read <= 0 )
2999 { /* Not enough room in the buffer - grow it. */
3000
3001 /* just a shorter name for the current buffer */
3003
3004 int yy_c_buf_p_offset =
3005 (int) ((yy_c_buf_p) - b->yy_ch_buf);
3006
3007 if ( b->yy_is_our_buffer )
3008 {
3009 int new_size = b->yy_buf_size * 2;
3010
3011 if ( new_size <= 0 )
3012 b->yy_buf_size += b->yy_buf_size / 8;
3013 else
3014 b->yy_buf_size *= 2;
3015
3016 b->yy_ch_buf = (char *)
3017 /* Include room in for 2 EOB chars. */
3018 yyrealloc( (void *) b->yy_ch_buf,
3019 (yy_size_t) (b->yy_buf_size + 2) );
3020 }
3021 else
3022 /* Can't grow it, we don't own it. */
3023 b->yy_ch_buf = NULL;
3024
3025 if ( ! b->yy_ch_buf )
3027 "fatal error - scanner input buffer overflow" );
3028
3029 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3030
3031 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3032 number_to_move - 1;
3033
3034 }
3035
3036 if ( num_to_read > YY_READ_BUF_SIZE )
3037 num_to_read = YY_READ_BUF_SIZE;
3038
3039 /* Read in more data. */
3040 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3041 (yy_n_chars), num_to_read );
3042
3043 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3044 }
3045
3046 if ( (yy_n_chars) == 0 )
3047 {
3048 if ( number_to_move == YY_MORE_ADJ )
3049 {
3050 ret_val = EOB_ACT_END_OF_FILE;
3051 yyrestart( yyin );
3052 }
3053
3054 else
3055 {
3056 ret_val = EOB_ACT_LAST_MATCH;
3057 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3059 }
3060 }
3061
3062 else
3063 ret_val = EOB_ACT_CONTINUE_SCAN;
3064
3065 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3066 /* Extend the array by 50%, plus the number we really need. */
3067 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3068 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
3069 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
3070 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3071 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3072 /* "- 2" to take care of EOB's */
3073 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
3074 }
3075
3076 (yy_n_chars) += number_to_move;
3077 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3078 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3079
3080 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3081
3082 return ret_val;
3083}
3084
3085/* yy_get_previous_state - get the state just before the EOB char was reached */
3086
3087/* %if-c-only */
3088/* %not-for-header */
3089 static yy_state_type yy_get_previous_state (void)
3090/* %endif */
3091/* %if-c++-only */
3092/* %endif */
3093{
3094 yy_state_type yy_current_state;
3095 char *yy_cp;
3096
3097/* %% [15.0] code to get the start state into yy_current_state goes here */
3098 yy_current_state = (yy_start);
3099
3100 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3101 {
3102/* %% [16.0] code to find the next state goes here */
3103 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3104 if ( yy_accept[yy_current_state] )
3105 {
3106 (yy_last_accepting_state) = yy_current_state;
3107 (yy_last_accepting_cpos) = yy_cp;
3108 }
3109 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3110 {
3111 yy_current_state = (int) yy_def[yy_current_state];
3112 if ( yy_current_state >= 373 )
3113 yy_c = yy_meta[yy_c];
3114 }
3115 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3116 }
3117
3118 return yy_current_state;
3119}
3120
3121/* yy_try_NUL_trans - try to make a transition on the NUL character
3122 *
3123 * synopsis
3124 * next_state = yy_try_NUL_trans( current_state );
3125 */
3126/* %if-c-only */
3127 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
3128/* %endif */
3129/* %if-c++-only */
3130/* %endif */
3131{
3132 int yy_is_jam;
3133 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
3134 char *yy_cp = (yy_c_buf_p);
3135
3136 YY_CHAR yy_c = 1;
3137 if ( yy_accept[yy_current_state] )
3138 {
3139 (yy_last_accepting_state) = yy_current_state;
3140 (yy_last_accepting_cpos) = yy_cp;
3141 }
3142 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3143 {
3144 yy_current_state = (int) yy_def[yy_current_state];
3145 if ( yy_current_state >= 373 )
3146 yy_c = yy_meta[yy_c];
3147 }
3148 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3149 yy_is_jam = (yy_current_state == 372);
3150
3151 return yy_is_jam ? 0 : yy_current_state;
3152}
3153
3154#ifndef YY_NO_UNPUT
3155/* %if-c-only */
3156
3157/* %endif */
3158#endif
3159
3160/* %if-c-only */
3161#ifndef YY_NO_INPUT
3162#ifdef __cplusplus
3163 static int yyinput (void)
3164#else
3165 static int input (void)
3166#endif
3167
3168/* %endif */
3169/* %if-c++-only */
3170/* %endif */
3171{
3172 int c;
3173
3174 *(yy_c_buf_p) = (yy_hold_char);
3175
3176 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3177 {
3178 /* yy_c_buf_p now points to the character we want to return.
3179 * If this occurs *before* the EOB characters, then it's a
3180 * valid NUL; if not, then we've hit the end of the buffer.
3181 */
3182 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3183 /* This was really a NUL. */
3184 *(yy_c_buf_p) = '\0';
3185
3186 else
3187 { /* need more input */
3188 int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
3189 ++(yy_c_buf_p);
3190
3191 switch ( yy_get_next_buffer( ) )
3192 {
3193 case EOB_ACT_LAST_MATCH:
3194 /* This happens because yy_g_n_b()
3195 * sees that we've accumulated a
3196 * token and flags that we need to
3197 * try matching the token before
3198 * proceeding. But for input(),
3199 * there's no matching to consider.
3200 * So convert the EOB_ACT_LAST_MATCH
3201 * to EOB_ACT_END_OF_FILE.
3202 */
3203
3204 /* Reset buffer status. */
3205 yyrestart( yyin );
3206
3207 /*FALLTHROUGH*/
3208
3210 {
3211 if ( yywrap( ) )
3212 return 0;
3213
3214 if ( ! (yy_did_buffer_switch_on_eof) )
3216#ifdef __cplusplus
3217 return yyinput();
3218#else
3219 return input();
3220#endif
3221 }
3222
3224 (yy_c_buf_p) = (yytext_ptr) + offset;
3225 break;
3226 }
3227 }
3228 }
3229
3230 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3231 *(yy_c_buf_p) = '\0'; /* preserve yytext */
3232 (yy_hold_char) = *++(yy_c_buf_p);
3233
3234/* %% [19.0] update BOL and yylineno */
3235
3236 return c;
3237}
3238/* %if-c-only */
3239#endif /* ifndef YY_NO_INPUT */
3240/* %endif */
3241
3247/* %if-c-only */
3248 void yyrestart (FILE * input_file )
3249/* %endif */
3250/* %if-c++-only */
3251/* %endif */
3252{
3253
3254 if ( ! YY_CURRENT_BUFFER ){
3258 }
3259
3260 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
3262}
3263
3264/* %if-c++-only */
3265/* %endif */
3266
3271/* %if-c-only */
3273/* %endif */
3274/* %if-c++-only */
3275/* %endif */
3276{
3277
3278 /* TODO. We should be able to replace this entire function body
3279 * with
3280 * yypop_buffer_state();
3281 * yypush_buffer_state(new_buffer);
3282 */
3284 if ( YY_CURRENT_BUFFER == new_buffer )
3285 return;
3286
3287 if ( YY_CURRENT_BUFFER )
3288 {
3289 /* Flush out information for old buffer. */
3290 *(yy_c_buf_p) = (yy_hold_char);
3291 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3292 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3293 }
3294
3295 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3297
3298 /* We don't actually know whether we did this switch during
3299 * EOF (yywrap()) processing, but the only time this flag
3300 * is looked at is after yywrap() is called, so it's safe
3301 * to go ahead and always set it.
3302 */
3303 (yy_did_buffer_switch_on_eof) = 1;
3304}
3305
3306/* %if-c-only */
3307static void yy_load_buffer_state (void)
3308/* %endif */
3309/* %if-c++-only */
3310/* %endif */
3311{
3312 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3313 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3314/* %if-c-only */
3315 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3316/* %endif */
3317/* %if-c++-only */
3318/* %endif */
3319 (yy_hold_char) = *(yy_c_buf_p);
3320}
3321
3328/* %if-c-only */
3330/* %endif */
3331/* %if-c++-only */
3332/* %endif */
3333{
3335
3336 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3337 if ( ! b )
3338 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3339
3340 b->yy_buf_size = size;
3341
3342 /* yy_ch_buf has to be 2 characters longer than the size given because
3343 * we need to put in 2 end-of-buffer characters.
3344 */
3345 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
3346 if ( ! b->yy_ch_buf )
3347 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3348
3349 b->yy_is_our_buffer = 1;
3350
3351 yy_init_buffer( b, file );
3352
3353 return b;
3354}
3355
3356/* %if-c++-only */
3357/* %endif */
3358
3363/* %if-c-only */
3365/* %endif */
3366/* %if-c++-only */
3367/* %endif */
3368{
3369
3370 if ( ! b )
3371 return;
3372
3373 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3375
3376 if ( b->yy_is_our_buffer )
3377 yyfree( (void *) b->yy_ch_buf );
3378
3379 yyfree( (void *) b );
3380}
3381
3382/* Initializes or reinitializes a buffer.
3383 * This function is sometimes called more than once on the same buffer,
3384 * such as during a yyrestart() or at EOF.
3385 */
3386/* %if-c-only */
3387 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3388/* %endif */
3389/* %if-c++-only */
3390/* %endif */
3391
3392{
3393 int oerrno = errno;
3394
3395 yy_flush_buffer( b );
3396
3397/* %if-c-only */
3398 b->yy_input_file = file;
3399/* %endif */
3400/* %if-c++-only */
3401/* %endif */
3402 b->yy_fill_buffer = 1;
3403
3404 /* If b is the current buffer, then yy_init_buffer was _probably_
3405 * called from yyrestart() or through yy_get_next_buffer.
3406 * In that case, we don't want to reset the lineno or column.
3407 */
3408 if (b != YY_CURRENT_BUFFER){
3409 b->yy_bs_lineno = 1;
3410 b->yy_bs_column = 0;
3411 }
3412
3413/* %if-c-only */
3414
3415 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3416
3417/* %endif */
3418/* %if-c++-only */
3419/* %endif */
3420 errno = oerrno;
3421}
3422
3427/* %if-c-only */
3429/* %endif */
3430/* %if-c++-only */
3431/* %endif */
3432{
3433 if ( ! b )
3434 return;
3435
3436 b->yy_n_chars = 0;
3437
3438 /* We always need two end-of-buffer characters. The first causes
3439 * a transition to the end-of-buffer state. The second causes
3440 * a jam in that state.
3441 */
3444
3445 b->yy_buf_pos = &b->yy_ch_buf[0];
3446
3447 b->yy_at_bol = 1;
3449
3450 if ( b == YY_CURRENT_BUFFER )
3452}
3453
3454/* %if-c-or-c++ */
3461/* %if-c-only */
3463/* %endif */
3464/* %if-c++-only */
3465/* %endif */
3466{
3467 if (new_buffer == NULL)
3468 return;
3469
3471
3472 /* This block is copied from yy_switch_to_buffer. */
3473 if ( YY_CURRENT_BUFFER )
3474 {
3475 /* Flush out information for old buffer. */
3476 *(yy_c_buf_p) = (yy_hold_char);
3477 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3478 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3479 }
3480
3481 /* Only push if top exists. Otherwise, replace top. */
3483 (yy_buffer_stack_top)++;
3484 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3485
3486 /* copied from yy_switch_to_buffer. */
3488 (yy_did_buffer_switch_on_eof) = 1;
3489}
3490/* %endif */
3491
3492/* %if-c-or-c++ */
3497/* %if-c-only */
3499/* %endif */
3500/* %if-c++-only */
3501/* %endif */
3502{
3503 if (!YY_CURRENT_BUFFER)
3504 return;
3505
3508 if ((yy_buffer_stack_top) > 0)
3509 --(yy_buffer_stack_top);
3510
3511 if (YY_CURRENT_BUFFER) {
3513 (yy_did_buffer_switch_on_eof) = 1;
3514 }
3515}
3516/* %endif */
3517
3518/* %if-c-or-c++ */
3519/* Allocates the stack if it does not exist.
3520 * Guarantees space for at least one push.
3521 */
3522/* %if-c-only */
3523static void yyensure_buffer_stack (void)
3524/* %endif */
3525/* %if-c++-only */
3526/* %endif */
3527{
3528 yy_size_t num_to_alloc;
3529
3530 if (!(yy_buffer_stack)) {
3531
3532 /* First allocation is just for 2 elements, since we don't know if this
3533 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3534 * immediate realloc on the next call.
3535 */
3536 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
3537 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3538 (num_to_alloc * sizeof(struct yy_buffer_state*)
3539 );
3540 if ( ! (yy_buffer_stack) )
3541 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3542
3543 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3544
3545 (yy_buffer_stack_max) = num_to_alloc;
3546 (yy_buffer_stack_top) = 0;
3547 return;
3548 }
3549
3550 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3551
3552 /* Increase the buffer to prepare for a possible push. */
3553 yy_size_t grow_size = 8 /* arbitrary grow size */;
3554
3555 num_to_alloc = (yy_buffer_stack_max) + grow_size;
3556 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3557 ((yy_buffer_stack),
3558 num_to_alloc * sizeof(struct yy_buffer_state*)
3559 );
3560 if ( ! (yy_buffer_stack) )
3561 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3562
3563 /* zero only the new slots.*/
3564 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3565 (yy_buffer_stack_max) = num_to_alloc;
3566 }
3567}
3568/* %endif */
3569
3570/* %if-c-only */
3578{
3580
3581 if ( size < 2 ||
3582 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3583 base[size-1] != YY_END_OF_BUFFER_CHAR )
3584 /* They forgot to leave room for the EOB's. */
3585 return NULL;
3586
3587 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3588 if ( ! b )
3589 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3590
3591 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
3592 b->yy_buf_pos = b->yy_ch_buf = base;
3593 b->yy_is_our_buffer = 0;
3594 b->yy_input_file = NULL;
3595 b->yy_n_chars = b->yy_buf_size;
3596 b->yy_is_interactive = 0;
3597 b->yy_at_bol = 1;
3598 b->yy_fill_buffer = 0;
3600
3602
3603 return b;
3604}
3605/* %endif */
3606
3607/* %if-c-only */
3616YY_BUFFER_STATE yy_scan_string (const char * yystr )
3617{
3618
3619 return yy_scan_bytes( yystr, (int) strlen(yystr) );
3620}
3621/* %endif */
3622
3623/* %if-c-only */
3631YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
3632{
3634 char *buf;
3635 yy_size_t n;
3636 int i;
3637
3638 /* Get memory for full buffer, including space for trailing EOB's. */
3639 n = (yy_size_t) (_yybytes_len + 2);
3640 buf = (char *) yyalloc( n );
3641 if ( ! buf )
3642 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3643
3644 for ( i = 0; i < _yybytes_len; ++i )
3645 buf[i] = yybytes[i];
3646
3647 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3648
3649 b = yy_scan_buffer( buf, n );
3650 if ( ! b )
3651 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3652
3653 /* It's okay to grow etc. this buffer, and we should throw it
3654 * away when we're done.
3655 */
3656 b->yy_is_our_buffer = 1;
3657
3658 return b;
3659}
3660/* %endif */
3661
3662#ifndef YY_EXIT_FAILURE
3663#define YY_EXIT_FAILURE 2
3664#endif
3665
3666/* %if-c-only */
3667static void yynoreturn yy_fatal_error (const char* msg )
3668{
3669 fprintf( stderr, "%s\n", msg );
3670 exit( YY_EXIT_FAILURE );
3671}
3672/* %endif */
3673/* %if-c++-only */
3674/* %endif */
3675
3676/* Redefine yyless() so it works in section 3 code. */
3677
3678#undef yyless
3679#define yyless(n) \
3680 do \
3681 { \
3682 /* Undo effects of setting up yytext. */ \
3683 int yyless_macro_arg = (n); \
3684 YY_LESS_LINENO(yyless_macro_arg);\
3685 yytext[yyleng] = (yy_hold_char); \
3686 (yy_c_buf_p) = yytext + yyless_macro_arg; \
3687 (yy_hold_char) = *(yy_c_buf_p); \
3688 *(yy_c_buf_p) = '\0'; \
3689 yyleng = yyless_macro_arg; \
3690 } \
3691 while ( 0 )
3692
3693/* Accessor methods (get/set functions) to struct members. */
3694
3695/* %if-c-only */
3696/* %if-reentrant */
3697/* %endif */
3698
3703{
3704
3705 return yylineno;
3706}
3707
3711FILE *yyget_in (void)
3712{
3713 return yyin;
3714}
3715
3719FILE *yyget_out (void)
3720{
3721 return yyout;
3722}
3723
3727int yyget_leng (void)
3728{
3729 return yyleng;
3730}
3731
3735
3736char *yyget_text (void)
3737{
3738 return yytext;
3739}
3740
3741/* %if-reentrant */
3742/* %endif */
3743
3748void yyset_lineno (int _line_number )
3749{
3750
3751 yylineno = _line_number;
3752}
3753
3760void yyset_in (FILE * _in_str )
3761{
3762 yyin = _in_str ;
3763}
3764
3765void yyset_out (FILE * _out_str )
3766{
3767 yyout = _out_str ;
3768}
3769
3770int yyget_debug (void)
3771{
3772 return yy_flex_debug;
3773}
3774
3775void yyset_debug (int _bdebug )
3776{
3777 yy_flex_debug = _bdebug ;
3778}
3779
3780/* %endif */
3781
3782/* %if-reentrant */
3783/* %if-bison-bridge */
3784/* %endif */
3785/* %endif if-c-only */
3786
3787/* %if-c-only */
3788static int yy_init_globals (void)
3789{
3790 /* Initialization is the same as for the non-reentrant scanner.
3791 * This function is called from yylex_destroy(), so don't allocate here.
3792 */
3793
3794 (yy_buffer_stack) = NULL;
3795 (yy_buffer_stack_top) = 0;
3796 (yy_buffer_stack_max) = 0;
3797 (yy_c_buf_p) = NULL;
3798 (yy_init) = 0;
3799 (yy_start) = 0;
3800
3801/* Defined in main.c */
3802#ifdef YY_STDINIT
3803 yyin = stdin;
3804 yyout = stdout;
3805#else
3806 yyin = NULL;
3807 yyout = NULL;
3808#endif
3809
3810 /* For future reference: Set errno on error, since we are called by
3811 * yylex_init()
3812 */
3813 return 0;
3814}
3815/* %endif */
3816
3817/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3818/* yylex_destroy is for both reentrant and non-reentrant scanners. */
3820{
3821
3822 /* Pop the buffer stack, destroying each element. */
3823 while(YY_CURRENT_BUFFER){
3827 }
3828
3829 /* Destroy the stack itself. */
3830 yyfree((yy_buffer_stack) );
3831 (yy_buffer_stack) = NULL;
3832
3833 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3834 * yylex() is called, initialization will occur. */
3835 yy_init_globals( );
3836
3837/* %if-reentrant */
3838/* %endif */
3839 return 0;
3840}
3841/* %endif */
3842
3843/*
3844 * Internal utility routines.
3845 */
3846
3847#ifndef yytext_ptr
3848static void yy_flex_strncpy (char* s1, const char * s2, int n )
3849{
3850
3851 int i;
3852 for ( i = 0; i < n; ++i )
3853 s1[i] = s2[i];
3854}
3855#endif
3856
3857#ifdef YY_NEED_STRLEN
3858static int yy_flex_strlen (const char * s )
3859{
3860 int n;
3861 for ( n = 0; s[n]; ++n )
3862 ;
3863
3864 return n;
3865}
3866#endif
3867
3868void *yyalloc (yy_size_t size )
3869{
3870 return malloc(size);
3871}
3872
3873void *yyrealloc (void * ptr, yy_size_t size )
3874{
3875
3876 /* The cast to (char *) in the following accommodates both
3877 * implementations that use char* generic pointers, and those
3878 * that use void* generic pointers. It works with the latter
3879 * because both ANSI C and C++ allow castless assignment from
3880 * any pointer type to void*, and deal with argument conversions
3881 * as though doing an assignment.
3882 */
3883 return realloc(ptr, size);
3884}
3885
3886void yyfree (void * ptr )
3887{
3888 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3889}
3890
3891/* %if-tables-serialization definitions */
3892/* %define-yytables The name for this specific scanner's tables. */
3893#define YYTABLES_NAME "yytables"
3894/* %endif */
3895
3896/* %ok-for-header */
3897
3898#line 761 "netconf_lexer.ll"
3899
3900
3901using namespace isc::dhcp;
3902
3903void
3904ParserContext::scanStringBegin(const std::string& str, ParserType parser_type)
3905{
3906 start_token_flag = true;
3907 start_token_value = parser_type;
3908
3909 file_ = "<string>";
3910 sfile_ = 0;
3911 loc_.initialize(&file_);
3912 yy_flex_debug = trace_scanning_;
3913 YY_BUFFER_STATE buffer;
3914 buffer = netconf__scan_bytes(str.c_str(), str.size());
3915 if (!buffer) {
3916 fatal("cannot scan string");
3917 /* fatal() throws an exception so this can't be reached */
3918 }
3919}
3920
3921void
3923 const std::string& filename,
3924 ParserType parser_type)
3925{
3926 start_token_flag = true;
3927 start_token_value = parser_type;
3928
3929 file_ = filename;
3930 sfile_ = f;
3931 loc_.initialize(&file_);
3932 yy_flex_debug = trace_scanning_;
3933 YY_BUFFER_STATE buffer;
3934
3935 /* See netconf_lexer.cc header for available definitions */
3936 buffer = netconf__create_buffer(f, 65536 /*buffer size*/);
3937 if (!buffer) {
3938 fatal("cannot scan file " + filename);
3939 }
3940 netconf__switch_to_buffer(buffer);
3941}
3942
3943void
3945 if (sfile_)
3946 fclose(sfile_);
3947 sfile_ = 0;
3948 static_cast<void>(netconf_lex_destroy());
3949 /* Close files */
3950 while (!sfiles_.empty()) {
3951 FILE* f = sfiles_.back();
3952 if (f) {
3953 fclose(f);
3954 }
3955 sfiles_.pop_back();
3956 }
3957 /* Delete states */
3958 while (!states_.empty()) {
3959 netconf__delete_buffer(states_.back());
3960 states_.pop_back();
3961 }
3962}
3963
3964void
3965ParserContext::includeFile(const std::string& filename) {
3966 if (states_.size() > 10) {
3967 fatal("Too many nested include.");
3968 }
3969
3970 FILE* f = fopen(filename.c_str(), "r");
3971 if (!f) {
3972 fatal("Can't open include file " + filename);
3973 }
3974 if (sfile_) {
3975 sfiles_.push_back(sfile_);
3976 }
3977 sfile_ = f;
3978 states_.push_back(YY_CURRENT_BUFFER);
3979 YY_BUFFER_STATE buffer;
3980 buffer = netconf__create_buffer(f, 65536 /*buffer size*/);
3981 if (!buffer) {
3982 fatal( "Can't scan include file " + filename);
3983 }
3984 netconf__switch_to_buffer(buffer);
3985 files_.push_back(file_);
3986 file_ = filename;
3987 locs_.push_back(loc_);
3988 loc_.initialize(&file_);
3989
3990 BEGIN(INITIAL);
3991}
3992
3993namespace {
3995class Dummy {
3996 /* cppcheck-suppress unusedPrivateFunction */
3997 void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
3998};
3999}
4000#endif /* !__clang_analyzer__ */
4001
Evaluation error exception raised when trying to parse.
static symbol_type make_NETCONF(const location_type &l)
static symbol_type make_SOCKET_URL(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)
static symbol_type make_OUTPUT_OPTIONS(const location_type &l)
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
static symbol_type make_CONTROL_SOCKET(const location_type &l)
static symbol_type make_OUTPUT(const location_type &l)
static symbol_type make_DHCP6_SERVER(const location_type &l)
static symbol_type make_BOOT_UPDATE(const location_type &l)
static symbol_type make_NULL_TYPE(const location_type &l)
static symbol_type make_DEBUGLEVEL(const location_type &l)
static symbol_type make_HTTP(const location_type &l)
static symbol_type make_VALIDATE_CHANGES(const location_type &l)
static symbol_type make_END(const location_type &l)
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_LOGGERS(const location_type &l)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_STRING(const string &v, const location_type &l)
static symbol_type make_STDOUT(const location_type &l)
static symbol_type make_SOCKET_TYPE(const location_type &l)
static symbol_type make_LSQUARE_BRACKET(const location_type &l)
static symbol_type make_DHCP4_SERVER(const location_type &l)
static symbol_type make_D2_SERVER(const location_type &l)
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_NAME(const location_type &l)
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_START_JSON(const location_type &l)
static symbol_type make_UNIX(const location_type &l)
static symbol_type make_PATTERN(const location_type &l)
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
static symbol_type make_MANAGED_SERVERS(const location_type &l)
static symbol_type make_SUBSCRIBE_CHANGES(const location_type &l)
static symbol_type make_COLON(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_START_NETCONF(const location_type &l)
static symbol_type make_MODEL(const location_type &l)
static symbol_type make_START_SUB_NETCONF(const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
static symbol_type make_FLOAT(const double &v, const location_type &l)
static symbol_type make_SOCKET_NAME(const location_type &l)
void scanStringBegin(const std::string &str, ParserType type)
Method called before scanning starts on a string.
void scanFileBegin(FILE *f, const std::string &filename, ParserType type)
Method called before scanning starts on a file.
std::vector< std::string > files_
File name stack.
@ HOOKS_LIBRARIES
Used while parsing Netconf/loggers structures.
@ CONFIG
Used while parsing content of Netconf.
@ MANAGED_SERVERS
Used while parsing Netconf/managed-servers.
@ SERVER
Used while parsing Netconf/manages-servers/*‍/control-socket.
@ LOGGERS
Used while parsing Netconf/loggers/output-options structures.
@ SOCKET_TYPE
Used while parsing Netconf/hooks-libraries.
@ CONTROL_SOCKET
Used while parsing Netconf/managed-servers/*‍/control-socket/socket-type.
void includeFile(const std::string &filename)
Divert input to an include file.
std::vector< isc::netconf::location > locs_
Location stack.
isc::netconf::location loc_
Location of the current token.
ParserType
Defines currently supported scopes.
@ PARSER_NETCONF
This parser will expect the content as Netconf config wrapped in a map (that's the regular config fil...
@ PARSER_JSON
This parser will parse the content as generic JSON.
@ PARSER_SUB_NETCONF
This parser will expect only the content of Netconf.
std::vector< FILE * > sfiles_
sFile (aka FILE) stack
std::vector< struct yy_buffer_state * > states_
Lexer state stack.
void scanEnd()
Method called after the last tokens are scanned.
#define YY_NEW_FILE
Definition d2_lexer.cc:424
unsigned char flex_uint8_t
Definition d2_lexer.cc:335
#define COMMENT
Definition d2_lexer.cc:1259
#define yyleng
Definition d2_lexer.cc:26
#define YY_EXTRA_TYPE
Definition d2_lexer.cc:1277
#define DIR_INCLUDE
Definition d2_lexer.cc:1261
#define yyout
Definition d2_lexer.cc:29
short int flex_int16_t
Definition d2_lexer.cc:333
#define yytext
Definition d2_lexer.cc:31
unsigned int flex_uint32_t
Definition d2_lexer.cc:337
#define YY_BREAK
Definition d2_lexer.cc:1486
#define yynoreturn
Definition d2_lexer.cc:388
int yy_act
Definition d2_lexer.cc:1500
struct yy_buffer_state * YY_BUFFER_STATE
Definition d2_lexer.cc:446
#define YY_BUFFER_NEW
Definition d2_lexer.cc:539
#define YY_RESTORE_YY_MORE_OFFSET
Definition d2_lexer.cc:1183
#define yylineno
Definition d2_lexer.cc:28
#define YY_BUFFER_NORMAL
Definition d2_lexer.cc:540
char * yy_cp
Definition d2_lexer.cc:1499
#define YY_MORE_ADJ
Definition d2_lexer.cc:1182
#define YY_RULE_SETUP
Definition d2_lexer.cc:1490
#define yy_flex_debug
Definition d2_lexer.cc:24
#define DIR_EXIT
Definition d2_lexer.cc:1262
#define yytext_ptr
Definition d2_lexer.cc:669
signed char flex_int8_t
Definition d2_lexer.cc:332
#define EOB_ACT_END_OF_FILE
Definition d2_lexer.cc:465
#define YY_CURRENT_BUFFER_LVALUE
Definition d2_lexer.cc:581
int flex_int32_t
Definition d2_lexer.cc:334
#define yyin
Definition d2_lexer.cc:25
#define YY_START
Definition d2_lexer.cc:419
int yy_state_type
Definition d2_lexer.cc:660
#define YY_CURRENT_BUFFER
Definition d2_lexer.cc:575
#define INITIAL
Definition d2_lexer.cc:1258
char * yy_bp
Definition d2_lexer.cc:1499
#define YY_READ_BUF_SIZE
Definition d2_lexer.cc:1374
#define ECHO
Definition d2_lexer.cc:1384
#define YY_END_OF_BUFFER
Definition d2_lexer.cc:695
#define BEGIN
Definition d2_lexer.cc:414
#define YY_END_OF_BUFFER_CHAR
Definition d2_lexer.cc:425
unsigned short int flex_uint16_t
Definition d2_lexer.cc:336
flex_uint8_t YY_CHAR
Definition d2_lexer.cc:656
#define YY_DO_BEFORE_ACTION
Definition d2_lexer.cc:685
#define EOB_ACT_LAST_MATCH
Definition d2_lexer.cc:466
size_t yy_size_t
Definition d2_lexer.cc:451
#define YY_BUFFER_EOF_PENDING
Definition d2_lexer.cc:551
#define EOB_ACT_CONTINUE_SCAN
Definition d2_lexer.cc:464
#define YY_DECL
Definition d2_lexer.cc:1471
#define YY_BUF_SIZE
Definition d2_lexer.cc:436
#define YY_EXIT_FAILURE
Definition d2_lexer.cc:3718
#define DIR_ENTER
Definition d2_lexer.cc:1260
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
@ fatal
Definition db_log.h:117
Defines the logger used by the top-level component of kea-lfc.
#define yy_load_buffer_state
#define yyset_extra
#define yyset_lineno
#define yyrestart
#define yyset_debug
#define yy_scan_bytes
#define yyget_debug
#define yypush_buffer_state
#define yyget_in
Get the input stream.
#define yyfree
#define yylex
#define yyget_leng
Get the length of the current token.
#define yywrap
#define yyget_out
Get the output stream.
#define yyensure_buffer_stack
#define yy_scan_buffer
#define yy_scan_string
#define yyalloc
#define yylex_destroy
#define yyget_text
Get the current token.
#define yy_switch_to_buffer
#define yy_init_buffer
#define yyget_extra
#define YY_INPUT(buf, result, max_size)
#define yy_flush_buffer
#define yyrealloc
#define YY_STATE_EOF(state)
#define BEGIN
#define YY_FATAL_ERROR(msg)
#define yypop_buffer_state
Removes and deletes the top of the stack, if present.
#define yy_create_buffer
#define yy_delete_buffer
#define yyset_out
#define yyget_lineno
Get the current line number.
#define YY_SC_TO_UI(c)
#define yyset_in
int yy_bs_column
The column count.
Definition d2_lexer.cc:530
FILE * yy_input_file
Definition d2_lexer.cc:491
int yy_bs_lineno
The line count.
Definition d2_lexer.cc:529
char * yy_buf_pos
Definition d2_lexer.cc:498
flex_int32_t yy_verify
Definition d2_lexer.cc:700