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