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