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