Kea 2.7.1
dhcp4_lexer.cc
Go to the documentation of this file.
1#line 1 "dhcp4_lexer.cc"
2
3#line 3 "dhcp4_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 parser4__create_buffer
13#define yy_delete_buffer parser4__delete_buffer
14#define yy_scan_buffer parser4__scan_buffer
15#define yy_scan_string parser4__scan_string
16#define yy_scan_bytes parser4__scan_bytes
17#define yy_init_buffer parser4__init_buffer
18#define yy_flush_buffer parser4__flush_buffer
19#define yy_load_buffer_state parser4__load_buffer_state
20#define yy_switch_to_buffer parser4__switch_to_buffer
21#define yypush_buffer_state parser4_push_buffer_state
22#define yypop_buffer_state parser4_pop_buffer_state
23#define yyensure_buffer_stack parser4_ensure_buffer_stack
24#define yy_flex_debug parser4__flex_debug
25#define yyin parser4_in
26#define yyleng parser4_leng
27#define yylex parser4_lex
28#define yylineno parser4_lineno
29#define yyout parser4_out
30#define yyrestart parser4_restart
31#define yytext parser4_text
32#define yywrap parser4_wrap
33#define yyalloc parser4_alloc
34#define yyrealloc parser4_realloc
35#define yyfree parser4_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 parser4__create_buffer_ALREADY_DEFINED
55#else
56#define yy_create_buffer parser4__create_buffer
57#endif
58
59#ifdef yy_delete_buffer
60#define parser4__delete_buffer_ALREADY_DEFINED
61#else
62#define yy_delete_buffer parser4__delete_buffer
63#endif
64
65#ifdef yy_scan_buffer
66#define parser4__scan_buffer_ALREADY_DEFINED
67#else
68#define yy_scan_buffer parser4__scan_buffer
69#endif
70
71#ifdef yy_scan_string
72#define parser4__scan_string_ALREADY_DEFINED
73#else
74#define yy_scan_string parser4__scan_string
75#endif
76
77#ifdef yy_scan_bytes
78#define parser4__scan_bytes_ALREADY_DEFINED
79#else
80#define yy_scan_bytes parser4__scan_bytes
81#endif
82
83#ifdef yy_init_buffer
84#define parser4__init_buffer_ALREADY_DEFINED
85#else
86#define yy_init_buffer parser4__init_buffer
87#endif
88
89#ifdef yy_flush_buffer
90#define parser4__flush_buffer_ALREADY_DEFINED
91#else
92#define yy_flush_buffer parser4__flush_buffer
93#endif
94
95#ifdef yy_load_buffer_state
96#define parser4__load_buffer_state_ALREADY_DEFINED
97#else
98#define yy_load_buffer_state parser4__load_buffer_state
99#endif
100
101#ifdef yy_switch_to_buffer
102#define parser4__switch_to_buffer_ALREADY_DEFINED
103#else
104#define yy_switch_to_buffer parser4__switch_to_buffer
105#endif
106
107#ifdef yypush_buffer_state
108#define parser4_push_buffer_state_ALREADY_DEFINED
109#else
110#define yypush_buffer_state parser4_push_buffer_state
111#endif
112
113#ifdef yypop_buffer_state
114#define parser4_pop_buffer_state_ALREADY_DEFINED
115#else
116#define yypop_buffer_state parser4_pop_buffer_state
117#endif
118
119#ifdef yyensure_buffer_stack
120#define parser4_ensure_buffer_stack_ALREADY_DEFINED
121#else
122#define yyensure_buffer_stack parser4_ensure_buffer_stack
123#endif
124
125#ifdef yylex
126#define parser4_lex_ALREADY_DEFINED
127#else
128#define yylex parser4_lex
129#endif
130
131#ifdef yyrestart
132#define parser4_restart_ALREADY_DEFINED
133#else
134#define yyrestart parser4_restart
135#endif
136
137#ifdef yylex_init
138#define parser4_lex_init_ALREADY_DEFINED
139#else
140#define yylex_init parser4_lex_init
141#endif
142
143#ifdef yylex_init_extra
144#define parser4_lex_init_extra_ALREADY_DEFINED
145#else
146#define yylex_init_extra parser4_lex_init_extra
147#endif
148
149#ifdef yylex_destroy
150#define parser4_lex_destroy_ALREADY_DEFINED
151#else
152#define yylex_destroy parser4_lex_destroy
153#endif
154
155#ifdef yyget_debug
156#define parser4_get_debug_ALREADY_DEFINED
157#else
158#define yyget_debug parser4_get_debug
159#endif
160
161#ifdef yyset_debug
162#define parser4_set_debug_ALREADY_DEFINED
163#else
164#define yyset_debug parser4_set_debug
165#endif
166
167#ifdef yyget_extra
168#define parser4_get_extra_ALREADY_DEFINED
169#else
170#define yyget_extra parser4_get_extra
171#endif
172
173#ifdef yyset_extra
174#define parser4_set_extra_ALREADY_DEFINED
175#else
176#define yyset_extra parser4_set_extra
177#endif
178
179#ifdef yyget_in
180#define parser4_get_in_ALREADY_DEFINED
181#else
182#define yyget_in parser4_get_in
183#endif
184
185#ifdef yyset_in
186#define parser4_set_in_ALREADY_DEFINED
187#else
188#define yyset_in parser4_set_in
189#endif
190
191#ifdef yyget_out
192#define parser4_get_out_ALREADY_DEFINED
193#else
194#define yyget_out parser4_get_out
195#endif
196
197#ifdef yyset_out
198#define parser4_set_out_ALREADY_DEFINED
199#else
200#define yyset_out parser4_set_out
201#endif
202
203#ifdef yyget_leng
204#define parser4_get_leng_ALREADY_DEFINED
205#else
206#define yyget_leng parser4_get_leng
207#endif
208
209#ifdef yyget_text
210#define parser4_get_text_ALREADY_DEFINED
211#else
212#define yyget_text parser4_get_text
213#endif
214
215#ifdef yyget_lineno
216#define parser4_get_lineno_ALREADY_DEFINED
217#else
218#define yyget_lineno parser4_get_lineno
219#endif
220
221#ifdef yyset_lineno
222#define parser4_set_lineno_ALREADY_DEFINED
223#else
224#define yyset_lineno parser4_set_lineno
225#endif
226
227#ifdef yywrap
228#define parser4_wrap_ALREADY_DEFINED
229#else
230#define yywrap parser4_wrap
231#endif
232
233/* %endif */
234
235#ifdef yyalloc
236#define parser4_alloc_ALREADY_DEFINED
237#else
238#define yyalloc parser4_alloc
239#endif
240
241#ifdef yyrealloc
242#define parser4_realloc_ALREADY_DEFINED
243#else
244#define yyrealloc parser4_realloc
245#endif
246
247#ifdef yyfree
248#define parser4_free_ALREADY_DEFINED
249#else
250#define yyfree parser4_free
251#endif
252
253/* %if-c-only */
254
255#ifdef yytext
256#define parser4_text_ALREADY_DEFINED
257#else
258#define yytext parser4_text
259#endif
260
261#ifdef yyleng
262#define parser4_leng_ALREADY_DEFINED
263#else
264#define yyleng parser4_leng
265#endif
266
267#ifdef yyin
268#define parser4_in_ALREADY_DEFINED
269#else
270#define yyin parser4_in
271#endif
272
273#ifdef yyout
274#define parser4_out_ALREADY_DEFINED
275#else
276#define yyout parser4_out
277#endif
278
279#ifdef yy_flex_debug
280#define parser4__flex_debug_ALREADY_DEFINED
281#else
282#define yy_flex_debug parser4__flex_debug
283#endif
284
285#ifdef yylineno
286#define parser4_lineno_ALREADY_DEFINED
287#else
288#define yylineno parser4_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 parser4_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 224
695#define YY_END_OF_BUFFER 225
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[2259] =
704 { 0,
705 217, 217, 0, 0, 0, 0, 0, 0, 0, 0,
706 225, 223, 10, 11, 223, 1, 217, 214, 217, 217,
707 223, 216, 215, 223, 223, 223, 223, 223, 210, 211,
708 223, 223, 223, 212, 213, 5, 5, 5, 223, 223,
709 223, 10, 11, 0, 0, 205, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0, 0, 0, 1, 217,
713 217, 0, 216, 217, 3, 2, 6, 0, 217, 0,
714 0, 0, 0, 0, 0, 4, 0, 0, 9, 0,
715
716 206, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 208, 0, 0, 0, 0,
718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0,
725 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,
726
727 0, 0, 0, 0, 0, 0, 0, 207, 209, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 102, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737
738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 222, 220, 0, 219, 218, 0,
740 0, 0, 0, 0, 0, 0, 0, 0, 178, 0,
741 177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
748
749 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 19, 0, 0, 0, 0, 0, 221, 218, 0,
754 0, 0, 0, 0, 0, 0, 179, 0, 0, 181,
755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
756 0, 0, 0, 0, 106, 0, 0, 0, 0, 0,
757 0, 92, 0, 0, 0, 0, 0, 130, 0, 0,
758 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,
759
760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
762 0, 0, 0, 0, 91, 0, 0, 0, 0, 0,
763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
764 0, 96, 0, 0, 42, 0, 0, 0, 0, 0,
765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 0, 0, 0, 0, 126, 0, 0,
768 35, 0, 0, 39, 0, 0, 0, 0, 0, 0,
769 0, 0, 12, 183, 182, 0, 0, 0, 0, 0,
770
771 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 0, 0, 0, 0, 0, 0, 0, 0, 118, 0,
775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 37, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
779 0, 0, 0, 0, 95, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 141, 0, 0, 0, 0, 0,
781
782 0, 0, 0, 0, 0, 0, 0, 0, 136, 0,
783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 7, 0, 0, 184, 0,
785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791 0, 0, 0, 0, 0, 0, 0, 0, 0, 120,
792
793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 116, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
801 0, 99, 0, 0, 0, 0, 0, 0, 0, 0,
802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
803
804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
805 0, 0, 0, 134, 0, 0, 0, 0, 0, 0,
806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 146, 113, 0, 0, 0, 0, 0, 0, 119,
808 36, 0, 0, 0, 0, 0, 0, 0, 50, 0,
809 0, 0, 0, 0, 0, 0, 0, 0, 121, 43,
810 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 86, 0, 0, 0, 0, 0, 0, 0,
814
815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0, 165, 0,
817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
821 0, 0, 0, 0, 0, 0, 0, 0, 59, 0,
822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
824 0, 0, 0, 0, 0, 40, 0, 0, 0, 0,
825
826 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
827 0, 0, 0, 0, 0, 0, 0, 0, 0, 122,
828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
829 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830 0, 0, 0, 0, 0, 69, 0, 0, 0, 0,
831 0, 0, 58, 0, 0, 0, 132, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
833 0, 0, 0, 0, 0, 166, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 101, 0, 0,
836
837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
839 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
841 0, 170, 0, 0, 0, 168, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0, 0, 188, 0,
844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
845 0, 133, 0, 0, 0, 0, 0, 0, 0, 137,
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
847
848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0, 0, 131,
850 0, 0, 23, 0, 142, 0, 0, 0, 0, 0,
851 0, 0, 0, 0, 0, 0, 0, 0, 0, 174,
852 0, 94, 0, 0, 0, 0, 89, 0, 0, 0,
853 0, 145, 0, 38, 164, 0, 0, 0, 0, 0,
854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855 67, 0, 0, 0, 0, 0, 0, 0, 0, 109,
856 110, 0, 0, 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 0, 0, 0, 0, 93, 0, 0, 0,
858
859 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 0, 0, 0, 0, 0, 139, 0,
862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
864 0, 0, 0, 0, 0, 0, 192, 0, 0, 90,
865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
866 64, 0, 0, 0, 0, 0, 171, 0, 0, 169,
867 0, 0, 161, 160, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
869
870 0, 0, 180, 0, 0, 0, 0, 0, 125, 0,
871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872 0, 0, 0, 0, 0, 0, 0, 0, 154, 0,
873 0, 0, 163, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 143, 0, 15, 0,
875 0, 44, 0, 0, 0, 0, 0, 0, 0, 0,
876 0, 173, 0, 0, 0, 0, 0, 0, 0, 46,
877 65, 0, 0, 138, 0, 129, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 57, 0, 98, 0, 0, 186, 0, 0,
880
881 0, 0, 0, 0, 191, 0, 112, 0, 0, 0,
882 198, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
889 0, 0, 0, 127, 0, 0, 0, 47, 0, 0,
890 0, 0, 0, 0, 194, 0, 0, 123, 31, 0,
891
892 0, 0, 159, 0, 0, 0, 0, 0, 0, 0,
893 0, 0, 0, 0, 0, 0, 0, 189, 0, 167,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
895 0, 0, 0, 0, 0, 28, 0, 0, 172, 0,
896 0, 0, 56, 0, 0, 0, 203, 0, 0, 115,
897 114, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899 0, 0, 0, 0, 61, 0, 0, 0, 0, 0,
900 0, 111, 0, 0, 0, 45, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
902
903 0, 0, 0, 0, 0, 0, 144, 0, 0, 0,
904 30, 0, 0, 0, 0, 0, 190, 0, 0, 0,
905 0, 0, 155, 0, 0, 0, 0, 0, 0, 0,
906 0, 0, 0, 0, 0, 21, 0, 0, 193, 0,
907 88, 0, 0, 51, 0, 0, 0, 0, 187, 0,
908 81, 0, 0, 185, 0, 32, 0, 0, 0, 0,
909 0, 0, 0, 0, 85, 0, 0, 0, 0, 17,
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0, 152, 0, 0, 0,
912 128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913
914 0, 54, 0, 52, 0, 0, 0, 0, 0, 48,
915 157, 0, 0, 0, 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 72, 0, 0, 0, 0, 0, 0,
917 0, 0, 0, 0, 0, 0, 0, 175, 0, 0,
918 13, 0, 0, 0, 0, 0, 0, 0, 158, 0,
919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
921 0, 0, 0, 0, 0, 0, 0, 0, 162, 0,
922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
923 0, 0, 151, 0, 63, 62, 20, 0, 0, 0,
924
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 0, 0, 0, 0, 82, 0, 108, 0, 0, 0,
927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
928 0, 0, 0, 150, 0, 0, 0, 0, 0, 0,
929 55, 68, 0, 49, 0, 103, 0, 0, 0, 0,
930 0, 0, 0, 204, 0, 87, 0, 0, 0, 0,
931 0, 0, 0, 0, 0, 0, 78, 0, 0, 0,
932 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
935
936 0, 0, 0, 0, 0, 202, 0, 0, 0, 0,
937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 84, 33, 0, 0, 0,
939 77, 0, 0, 0, 0, 156, 0, 0, 0, 0,
940 0, 0, 196, 199, 0, 124, 104, 0, 0, 0,
941 0, 0, 0, 0, 83, 0, 0, 73, 0, 0,
942 0, 0, 0, 0, 0, 0, 0, 0, 148, 0,
943 0, 0, 0, 0, 0, 153, 0, 0, 75, 0,
944 66, 0, 0, 0, 0, 0, 0, 0, 0, 105,
945 0, 0, 0, 0, 0, 0, 0, 0, 147, 0,
946
947 0, 176, 0, 201, 197, 0, 0, 0, 0, 0,
948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949 0, 0, 0, 74, 0, 0, 0, 0, 0, 27,
950 25, 0, 0, 0, 0, 79, 0, 0, 107, 0,
951 0, 71, 0, 80, 0, 0, 200, 0, 0, 0,
952 0, 0, 70, 0, 149, 26, 195, 0
953 } ;
954
955static const YY_CHAR yy_ec[256] =
956 { 0,
957 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
958 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
959 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
960 1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
961 5, 8, 9, 10, 11, 12, 13, 14, 15, 16,
962 14, 17, 14, 18, 14, 14, 14, 19, 5, 20,
963 5, 21, 22, 5, 23, 24, 25, 26, 27, 28,
964 5, 29, 30, 31, 32, 33, 5, 34, 35, 36,
965 5, 37, 38, 39, 40, 41, 42, 43, 44, 5,
966 45, 46, 47, 5, 48, 5, 49, 50, 51, 52,
967
968 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
969 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
970 73, 74, 75, 5, 76, 5, 5, 5, 5, 5,
971 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
972 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
973 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
974 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
975 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
976 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
977 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
978
979 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
980 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
981 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
982 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
983 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
984 5, 5, 5, 5, 5
985 } ;
986
987static const YY_CHAR yy_meta[77] =
988 { 0,
989 1, 1, 2, 1, 1, 3, 1, 1, 1, 1,
990 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
991 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
992 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
993 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
994 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
995 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
996 1, 1, 1, 1, 1, 1
997 } ;
998
999static const flex_int16_t yy_base[2267] =
1000 { 0,
1001 0, 75, 21, 28, 39, 47, 53, 61, 95, 103,
1002 2710, 2711, 31, 2706, 151, 0, 216, 2711, 223, 230,
1003 13, 237, 2711, 2686, 124, 17, 4, 34, 2711, 2711,
1004 23, 43, 64, 2711, 2711, 2711, 56, 2694, 2644, 0,
1005 2684, 106, 2701, 2, 274, 2711, 2640, 85, 90, 2646,
1006 98, 77, 231, 235, 97, 200, 304, 229, 2638, 300,
1007 218, 62, 219, 202, 257, 2647, 298, 322, 341, 242,
1008 229, 2630, 21, 333, 362, 336, 2649, 318, 0, 392,
1009 409, 423, 432, 437, 2711, 0, 2711, 451, 456, 203,
1010 228, 253, 247, 352, 324, 2711, 2646, 2690, 2711, 269,
1011
1012 2711, 450, 2677, 358, 232, 2643, 383, 17, 390, 2682,
1013 282, 417, 284, 250, 2686, 0, 514, 416, 2625, 2622,
1014 2626, 424, 2622, 317, 2630, 430, 2616, 2617, 2622, 76,
1015 2632, 2625, 2615, 2624, 371, 429, 63, 435, 2668, 2672,
1016 2615, 2608, 2664, 2601, 368, 2622, 2622, 2616, 297, 2609,
1017 2607, 2608, 2600, 2605, 2599, 436, 2610, 450, 2595, 2594,
1018 456, 2595, 448, 2607, 2588, 494, 417, 447, 2609, 2606,
1019 2607, 440, 2605, 2643, 2642, 369, 460, 2586, 486, 2587,
1020 378, 2579, 2596, 2588, 2590, 0, 508, 492, 507, 509,
1021 517, 521, 2586, 2711, 2634, 530, 532, 2580, 511, 524,
1022
1023 542, 545, 2637, 544, 2636, 538, 2635, 2711, 2711, 587,
1024 2577, 550, 2590, 2582, 2569, 2580, 2584, 2585, 2565, 2576,
1025 2580, 2577, 2576, 472, 526, 2617, 2578, 2559, 2556, 2564,
1026 2559, 2570, 2561, 2557, 2569, 2569, 2557, 2559, 2562, 2542,
1027 2546, 2560, 2552, 2542, 2560, 2711, 2545, 2554, 82, 2595,
1028 2538, 2547, 2592, 2536, 2546, 2549, 576, 2545, 2587, 2529,
1029 2531, 2542, 2583, 554, 2525, 2539, 2537, 2517, 2532, 534,
1030 2529, 533, 2520, 2518, 2518, 2524, 2515, 2514, 2512, 2574,
1031 2527, 2526, 2520, 530, 2527, 2522, 2505, 2520, 2506, 2518,
1032 2513, 2517, 2498, 2514, 2500, 2506, 2513, 541, 417, 2501,
1033
1034 2498, 2497, 488, 2496, 2491, 2505, 564, 2504, 2550, 2506,
1035 540, 2497, 2485, 589, 2711, 2711, 591, 2711, 2711, 2483,
1036 562, 576, 589, 2534, 597, 2544, 585, 596, 2711, 2543,
1037 2711, 2537, 639, 2496, 586, 2473, 2482, 2533, 2490, 2473,
1038 2490, 2529, 2486, 2469, 2475, 2530, 2482, 2485, 2476, 2479,
1039 2465, 2476, 2523, 2517, 2472, 2469, 615, 2519, 2451, 2512,
1040 2462, 2457, 2451, 2453, 2456, 2506, 2460, 2504, 2447, 617,
1041 2461, 2446, 2445, 2458, 2456, 2454, 2454, 2453, 2448, 2455,
1042 2450, 2446, 603, 2444, 2447, 2442, 2428, 2440, 2436, 2489,
1043 581, 610, 2483, 2427, 2443, 2480, 2427, 2426, 2419, 2434,
1044
1045 2425, 2432, 2413, 2430, 2425, 664, 2475, 2425, 2426, 2711,
1046 2425, 348, 2415, 2427, 523, 2402, 2403, 2416, 2406, 2398,
1047 2459, 2401, 2415, 621, 2401, 2413, 2412, 2411, 2407, 2405,
1048 2450, 2407, 2406, 2405, 2404, 2387, 2395, 2448, 2404, 2384,
1049 2445, 2711, 2384, 2383, 666, 2396, 2394, 2711, 2711, 2394,
1050 2383, 2375, 620, 2432, 2436, 2435, 2711, 2434, 607, 2711,
1051 646, 718, 2390, 633, 2432, 2371, 2382, 2424, 2374, 2376,
1052 2378, 2365, 2373, 2361, 2711, 2366, 2359, 2371, 2374, 2361,
1053 2360, 2711, 646, 2362, 2359, 629, 2357, 2711, 2408, 2367,
1054 2364, 2349, 2363, 2361, 2361, 2355, 692, 2345, 2399, 2711,
1055
1056 2343, 2359, 2396, 2354, 2352, 2350, 2351, 2335, 2344, 2389,
1057 2337, 2336, 2331, 2330, 2384, 2325, 632, 2344, 2318, 2325,
1058 2330, 2340, 2377, 2381, 2711, 2323, 2319, 693, 2317, 2372,
1059 2325, 2324, 2318, 2310, 2310, 2309, 2323, 2323, 2311, 2307,
1060 2305, 2711, 2314, 2364, 2711, 2303, 2357, 2299, 2298, 2303,
1061 2312, 2306, 2300, 2309, 2354, 2348, 2292, 2287, 2345, 2306,
1062 2281, 2287, 650, 2301, 2294, 2298, 2281, 2342, 2336, 2279,
1063 2279, 2333, 2275, 2276, 2275, 2273, 2290, 2711, 2286, 2326,
1064 2711, 2274, 2272, 2711, 2283, 2322, 2321, 2278, 2262, 2279,
1065 2322, 695, 2711, 2711, 2711, 677, 684, 683, 2259, 712,
1066
1067 2711, 2269, 2268, 656, 2275, 2255, 2265, 2310, 2252, 2308,
1068 2250, 2260, 2305, 2247, 2254, 2247, 2249, 2258, 2240, 2240,
1069 2255, 2254, 2238, 619, 2252, 2251, 2251, 2233, 2238, 2282,
1070 2244, 2238, 2286, 2227, 2242, 2242, 2240, 2240, 2711, 2225,
1071 2237, 2229, 2235, 2226, 2234, 2219, 2273, 2234, 2216, 2228,
1072 2220, 654, 2211, 2210, 2204, 2209, 2224, 2221, 2222, 2201,
1073 2211, 2217, 2263, 2215, 2207, 2198, 2711, 2199, 2201, 2196,
1074 2209, 2201, 2200, 2205, 2247, 2195, 715, 2245, 2187, 2243,
1075 2187, 2190, 2183, 2198, 2711, 2196, 2180, 2194, 2189, 2185,
1076 2233, 2182, 2189, 2230, 2711, 2172, 2186, 2189, 2174, 2169,
1077
1078 2224, 2223, 2167, 2221, 2178, 2162, 2218, 2217, 2711, 2178,
1079 2158, 2172, 2171, 721, 2172, 2171, 2168, 2152, 2208, 2169,
1080 2164, 2147, 2152, 2154, 2145, 2711, 2155, 7, 2711, 682,
1081 699, 698, 711, 712, 73, 214, 312, 441, 486, 571,
1082 565, 634, 680, 691, 741, 702, 749, 708, 710, 749,
1083 762, 713, 713, 714, 724, 729, 716, 719, 722, 731,
1084 731, 715, 775, 725, 735, 738, 779, 731, 735, 732,
1085 734, 784, 785, 746, 793, 747, 751, 746, 737, 752,
1086 757, 754, 756, 758, 757, 745, 759, 757, 765, 804,
1087 763, 811, 812, 759, 751, 761, 812, 768, 820, 2711,
1088
1089 821, 771, 773, 769, 763, 779, 767, 777, 829, 825,
1090 785, 786, 2711, 776, 777, 776, 789, 779, 792, 839,
1091 840, 841, 781, 776, 799, 790, 779, 785, 843, 804,
1092 788, 800, 847, 791, 798, 850, 811, 806, 811, 809,
1093 856, 795, 807, 810, 816, 817, 807, 804, 2711, 873,
1094 827, 828, 816, 830, 820, 823, 834, 819, 826, 832,
1095 833, 825, 839, 863, 855, 884, 885, 859, 832, 846,
1096 851, 848, 830, 837, 851, 899, 853, 850, 851, 849,
1097 858, 2711, 854, 849, 864, 861, 847, 849, 868, 864,
1098 866, 855, 862, 864, 873, 916, 879, 918, 877, 867,
1099
1100 865, 864, 875, 871, 873, 884, 869, 870, 876, 892,
1101 888, 883, 933, 2711, 894, 886, 897, 895, 943, 882,
1102 884, 896, 904, 902, 889, 887, 952, 906, 892, 898,
1103 896, 2711, 2711, 906, 911, 916, 904, 914, 916, 2711,
1104 2711, 917, 904, 922, 909, 911, 904, 921, 2711, 910,
1105 928, 967, 915, 916, 913, 917, 935, 979, 2711, 2711,
1106 2711, 921, 923, 920, 936, 984, 934, 924, 925, 921,
1107 934, 945, 940, 987, 942, 944, 937, 939, 935, 941,
1108 941, 943, 958, 941, 1003, 957, 962, 939, 960, 963,
1109 949, 948, 2711, 955, 956, 1008, 1009, 958, 971, 1012,
1110
1111 967, 957, 972, 966, 974, 961, 992, 1002, 990, 998,
1112 1010, 1027, 973, 968, 1027, 1028, 987, 1030, 2711, 1036,
1113 976, 992, 996, 1040, 987, 986, 981, 982, 994, 989,
1114 985, 994, 989, 990, 1000, 1011, 1053, 1001, 998, 1016,
1115 1008, 1003, 1064, 1018, 1019, 1010, 1024, 1013, 1016, 1024,
1116 1026, 1011, 1023, 1028, 1025, 1023, 1035, 1019, 1020, 2711,
1117 1036, 1039, 1022, 1039, 1034, 1086, 1026, 1045, 2711, 1044,
1118 1047, 1033, 1028, 1046, 1089, 1044, 1040, 1037, 1093, 1094,
1119 1053, 1039, 1057, 1057, 1057, 1058, 1059, 1045, 1060, 1058,
1120 1048, 1049, 1065, 1052, 1069, 2711, 1061, 1069, 1117, 1061,
1121
1122 2711, 1064, 1069, 1116, 1064, 1076, 1070, 1068, 1065, 1071,
1123 1081, 1129, 1070, 1071, 1071, 1133, 1074, 1086, 1079, 2711,
1124 1075, 1083, 1081, 1084, 1136, 1075, 1096, 1082, 1083, 1084,
1125 1086, 1092, 1100, 1091, 1096, 1106, 1107, 1108, 1113, 1157,
1126 1125, 1154, 1137, 1129, 1134, 2711, 1117, 1113, 1109, 1123,
1127 1106, 1106, 2711, 1107, 1170, 1110, 2711, 1121, 1111, 1131,
1128 1130, 1121, 1132, 1178, 1128, 1137, 1130, 1134, 1138, 1121,
1129 1138, 1139, 1134, 1192, 1136, 2711, 1189, 1133, 1136, 1154,
1130 1136, 1137, 1137, 1158, 1155, 1143, 1161, 1149, 1163, 1156,
1131 1165, 1145, 1160, 1167, 1212, 1155, 1209, 2711, 1215, 1216,
1132
1133 1155, 1165, 1175, 1159, 1179, 1167, 1163, 1170, 1179, 1167,
1134 1174, 1175, 1187, 1231, 1175, 1233, 1174, 1173, 1177, 1194,
1135 1238, 1183, 1189, 1190, 1179, 1243, 1191, 1245, 1246, 2711,
1136 1184, 1201, 1194, 1185, 1204, 1192, 1202, 1198, 1193, 1212,
1137 1212, 2711, 1196, 1192, 1198, 2711, 1199, 1262, 1219, 1200,
1138 1219, 1220, 1206, 1223, 1265, 1215, 1272, 1273, 1223, 1228,
1139 1222, 1220, 1231, 1230, 1214, 1219, 1225, 1238, 2711, 1252,
1140 1265, 1253, 1267, 1254, 1289, 1226, 1248, 1243, 1243, 1247,
1141 1295, 2711, 1235, 1235, 1238, 1255, 1250, 1254, 1249, 2711,
1142 1258, 1242, 1259, 1239, 1260, 1250, 1249, 1305, 1256, 2711,
1143
1144 1273, 1273, 1314, 1258, 1267, 1317, 1272, 1277, 1263, 1326,
1145 1266, 1267, 1281, 1279, 1276, 1272, 1290, 1291, 1292, 2711,
1146 1331, 1283, 2711, 1293, 2711, 1278, 1289, 1280, 1299, 1292,
1147 1290, 1283, 1295, 1342, 1303, 1292, 1299, 1300, 1306, 2711,
1148 1299, 2711, 1354, 1304, 1293, 1357, 2711, 1296, 1302, 1303,
1149 1314, 2711, 1315, 2711, 2711, 1301, 1304, 1318, 1323, 1306,
1150 1368, 1322, 1309, 1328, 1315, 1320, 1374, 1370, 1320, 1377,
1151 2711, 1325, 1322, 1380, 1381, 1377, 1336, 1337, 1339, 2711,
1152 2711, 1331, 1326, 1383, 1329, 1345, 1391, 1330, 1342, 1331,
1153 1348, 1391, 1374, 1375, 1367, 1400, 2711, 1354, 1347, 1356,
1154
1155 1347, 1358, 2711, 1406, 1340, 1351, 1366, 1405, 1354, 1365,
1156 1351, 1367, 1368, 1365, 1412, 1372, 1374, 1363, 1373, 1379,
1157 1366, 1364, 1427, 1424, 1379, 1426, 1432, 1386, 2711, 1372,
1158 1388, 1379, 1382, 1391, 1388, 1378, 1381, 1381, 1382, 1393,
1159 1388, 1446, 1390, 1448, 1388, 1393, 1451, 1447, 1386, 1401,
1160 1394, 1397, 1410, 1411, 1409, 1461, 2711, 1407, 1413, 2711,
1161 1418, 1410, 1411, 1463, 1407, 1470, 1471, 1412, 1422, 1474,
1162 2711, 1419, 1476, 1417, 1415, 1418, 2711, 1435, 1440, 2711,
1163 1437, 1425, 2711, 2711, 1429, 1439, 1422, 1442, 1443, 1429,
1164 1431, 1493, 1440, 2711, 1495, 1441, 1435, 1498, 1463, 1481,
1165
1166 1496, 1483, 2711, 1502, 1458, 1506, 1453, 1503, 2711, 1448,
1167 1510, 1457, 1451, 1448, 1451, 1453, 1511, 1471, 1513, 1463,
1168 1475, 1478, 1475, 1467, 1470, 1465, 1473, 1464, 2711, 1472,
1169 1487, 1472, 2711, 1474, 1531, 1476, 1533, 1492, 1494, 1494,
1170 1491, 1538, 1497, 1498, 1490, 1491, 2711, 1492, 2711, 1502,
1171 1494, 2711, 1500, 1505, 1507, 1504, 1551, 1496, 1511, 1512,
1172 1504, 2711, 1514, 1502, 1503, 1503, 1504, 1505, 1562, 2711,
1173 2711, 1563, 1507, 2711, 1508, 2711, 1522, 1510, 1518, 1575,
1174 1520, 1512, 1525, 1519, 1529, 1525, 1541, 1534, 1540, 1530,
1175 1588, 1538, 2711, 1547, 2711, 1544, 1592, 2711, 1542, 1570,
1176
1177 1571, 1577, 1562, 1570, 2711, 1599, 2711, 1554, 1539, 1602,
1178 2711, 1603, 1557, 1562, 1544, 1607, 1548, 1604, 1568, 1561,
1179 1557, 1550, 1558, 1610, 1565, 1566, 1556, 1561, 1573, 1627,
1180 1578, 1629, 1576, 1626, 1587, 1587, 1629, 1574, 1579, 1577,
1181 1639, 1580, 1588, 1594, 1582, 1644, 1640, 1600, 1647, 1605,
1182 1594, 1588, 1651, 1590, 1591, 1605, 1655, 1609, 1609, 1658,
1183 1659, 1609, 1607, 1597, 1658, 1659, 1611, 1610, 1610, 1605,
1184 1606, 1624, 2711, 1615, 1621, 1626, 1613, 1614, 1614, 1614,
1185 1616, 1674, 1617, 2711, 1613, 1631, 1683, 2711, 1638, 1652,
1186 1666, 1665, 1654, 1656, 2711, 1690, 1640, 2711, 2711, 1631,
1187
1188 1642, 1694, 2711, 1648, 1638, 1643, 1641, 1694, 1650, 1655,
1189 1641, 1644, 1660, 1649, 1647, 1661, 1648, 2711, 1650, 2711,
1190 1668, 1655, 1667, 1714, 1658, 1721, 1666, 1676, 1677, 2711,
1191 1725, 1662, 1722, 1677, 1724, 2711, 1672, 1731, 2711, 1671,
1192 1686, 1674, 2711, 1684, 1685, 1737, 2711, 1692, 1696, 2711,
1193 2711, 1672, 1690, 1699, 1681, 1699, 1688, 1741, 1690, 1686,
1194 1691, 1750, 1689, 1690, 1753, 1749, 1755, 1705, 1703, 1758,
1195 1708, 1698, 1714, 1707, 2711, 1763, 1741, 1765, 1747, 1762,
1196 1768, 2711, 1714, 1770, 1709, 2711, 1711, 1713, 1723, 1770,
1197 1715, 1730, 1717, 1779, 1733, 1719, 1726, 1726, 1784, 1738,
1198
1199 1739, 1726, 1728, 1742, 1728, 1742, 2711, 1789, 1737, 1734,
1200 2711, 1750, 1737, 1750, 1737, 1758, 2711, 1755, 1803, 1753,
1201 1750, 1751, 2711, 1807, 1763, 1762, 1755, 1760, 1761, 1759,
1202 1770, 1754, 1763, 1812, 1818, 2711, 1768, 1820, 2711, 1766,
1203 2711, 1765, 1761, 2711, 1768, 1825, 1827, 1823, 2711, 1824,
1204 2711, 1806, 1812, 2711, 1784, 2711, 1828, 1777, 1788, 1789,
1205 1774, 1775, 1783, 1840, 2711, 1785, 1837, 1838, 1790, 2711,
1206 1785, 1803, 1785, 1791, 1804, 1799, 1796, 1801, 1799, 1854,
1207 1795, 1809, 1859, 1804, 1801, 1801, 2711, 1816, 1817, 1818,
1208 2711, 1819, 1867, 1817, 1807, 1815, 1828, 1829, 1810, 1811,
1209
1210 1818, 2711, 1820, 2711, 1834, 1831, 1823, 1875, 1833, 2711,
1211 2711, 1837, 1863, 1864, 1862, 1825, 1825, 1834, 1841, 1834,
1212 1833, 1844, 1831, 2711, 1847, 1835, 1838, 1897, 1834, 1853,
1213 1895, 1856, 1849, 1848, 1857, 1859, 1863, 2711, 1902, 1854,
1214 2711, 1860, 1852, 1914, 1854, 1916, 1917, 1918, 2711, 1857,
1215 1915, 1874, 1861, 1869, 1880, 1867, 1878, 1864, 1862, 1870,
1216 1869, 1870, 1876, 1867, 1912, 1936, 1918, 1938, 1888, 1877,
1217 1890, 1880, 1897, 1896, 1940, 1881, 1900, 1901, 2711, 1906,
1218 1899, 1941, 1905, 1892, 1907, 1955, 1909, 1912, 1907, 1912,
1219 1901, 1910, 2711, 1964, 2711, 2711, 2711, 1965, 1904, 1967,
1220
1221 1907, 1969, 1914, 1966, 1967, 1926, 1969, 1912, 1916, 1977,
1222 1935, 1979, 1935, 1962, 2711, 1958, 2711, 1928, 1922, 1919,
1223 1981, 1944, 1937, 1933, 1990, 1930, 1932, 1931, 1938, 1984,
1224 1935, 1997, 1938, 2711, 1943, 1953, 1955, 1957, 1940, 1948,
1225 2711, 2711, 1954, 2711, 1959, 2711, 1961, 1962, 1953, 2012,
1226 1953, 1963, 1948, 2711, 1961, 2711, 1963, 1994, 2000, 1972,
1227 1970, 2022, 1960, 1962, 1959, 1983, 2711, 1970, 1977, 1978,
1228 1981, 2031, 1971, 2711, 2028, 1972, 1980, 1989, 1975, 1991,
1229 1990, 1985, 1980, 1980, 1992, 1987, 2711, 2000, 1988, 2044,
1230 1992, 2004, 2032, 2053, 2054, 1998, 2711, 1998, 2010, 2058,
1231
1232 2004, 2006, 2004, 2005, 2063, 2711, 2013, 2000, 2015, 2020,
1233 2012, 2018, 2070, 2071, 2025, 2073, 2074, 2015, 2019, 2015,
1234 2032, 2015, 2027, 2021, 2083, 2711, 2711, 2028, 2039, 2086,
1235 2711, 2040, 2025, 2043, 2034, 2711, 2035, 2049, 2045, 2038,
1236 2033, 2039, 2711, 2711, 2097, 2711, 2711, 2037, 2045, 2040,
1237 2096, 2059, 2056, 2104, 2711, 2100, 2063, 2711, 2107, 2046,
1238 2109, 2049, 2062, 2061, 2062, 2052, 2064, 2060, 2711, 2055,
1239 2118, 2068, 2077, 2070, 2117, 2711, 2068, 2062, 2711, 2074,
1240 2711, 2121, 2127, 2066, 2082, 2130, 2083, 2132, 2133, 2711,
1241 2087, 2081, 2074, 2094, 2081, 2093, 2084, 2088, 2711, 2138,
1242
1243 2084, 2711, 2094, 2711, 2711, 2085, 2093, 2143, 2100, 2093,
1244 2105, 2152, 2097, 2097, 2093, 2095, 2110, 2158, 2159, 2098,
1245 2114, 2099, 2116, 2711, 2164, 2108, 2115, 2167, 2108, 2711,
1246 2711, 2118, 2170, 2115, 2172, 2711, 2120, 2119, 2711, 2175,
1247 2121, 2711, 2115, 2711, 2115, 2132, 2711, 2133, 2181, 2124,
1248 2183, 2184, 2711, 2185, 2711, 2711, 2711, 2711, 2191, 2194,
1249 2197, 2198, 2200, 2203, 2206, 2209
1250 } ;
1251
1252static const flex_int16_t yy_def[2267] =
1253 { 0,
1254 2259, 2259, 2260, 2260, 2259, 2259, 2259, 2259, 2259, 2259,
1255 2258, 2258, 2258, 2258, 2258, 2261, 2258, 2258, 2258, 2258,
1256 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1257 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2262,
1258 2258, 2258, 2258, 2263, 15, 2258, 45, 45, 45, 45,
1259 45, 45, 45, 45, 45, 45, 2264, 45, 45, 45,
1260 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1261 45, 45, 45, 45, 45, 45, 45, 45, 2261, 2258,
1262 2258, 2258, 2258, 2258, 2258, 2265, 2258, 2258, 2258, 2258,
1263 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2262, 2258, 2263,
1264
1265 2258, 2258, 45, 45, 45, 45, 45, 45, 45, 45,
1266 45, 45, 45, 45, 2266, 45, 2264, 45, 45, 45,
1267 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1268 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1269 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1270 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1271 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1272 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1273 45, 45, 45, 45, 45, 2265, 2258, 2258, 2258, 2258,
1274 2258, 2258, 2258, 2258, 45, 45, 45, 45, 45, 45,
1275
1276 45, 45, 45, 45, 45, 45, 2266, 2258, 2258, 117,
1277 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1278 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1279 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1280 45, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1281 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1282 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1283 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1284 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1285 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1286
1287 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1288 45, 45, 45, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1289 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1290 2258, 45, 117, 45, 45, 45, 45, 45, 45, 45,
1291 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1292 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1293 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1294 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1295 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1296 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1297
1298 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1299 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1300 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1301 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1302 45, 2258, 45, 45, 45, 45, 45, 2258, 2258, 2258,
1303 45, 45, 45, 45, 45, 45, 2258, 45, 45, 2258,
1304 45, 117, 45, 45, 45, 45, 45, 45, 45, 45,
1305 45, 45, 45, 45, 2258, 45, 45, 45, 45, 45,
1306 45, 2258, 45, 45, 45, 45, 45, 2258, 45, 45,
1307 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1308
1309 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1310 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1311 45, 45, 45, 45, 2258, 45, 45, 45, 45, 45,
1312 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1313 45, 2258, 45, 45, 2258, 45, 45, 45, 45, 45,
1314 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1315 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1316 45, 45, 45, 45, 45, 45, 45, 2258, 45, 45,
1317 2258, 45, 45, 2258, 45, 45, 45, 2258, 45, 45,
1318 45, 45, 2258, 2258, 2258, 45, 45, 45, 45, 45,
1319
1320 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1321 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1322 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1323 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1324 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1325 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1326 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1327 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1328 45, 45, 45, 45, 2258, 45, 45, 45, 45, 45,
1329 45, 45, 45, 45, 2258, 45, 45, 45, 45, 45,
1330
1331 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1332 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1333 45, 45, 45, 45, 45, 2258, 45, 45, 2258, 45,
1334 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1335 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1336 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1337 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1338 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1339 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1340 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1341
1342 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1343 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1344 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1345 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1346 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1347 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1348 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1349 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1350 45, 2258, 45, 45, 45, 45, 45, 45, 45, 45,
1351 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1352
1353 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1354 45, 45, 45, 2258, 45, 45, 45, 45, 45, 45,
1355 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1356 45, 2258, 2258, 45, 45, 45, 45, 45, 45, 2258,
1357 2258, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1358 45, 45, 45, 45, 45, 45, 45, 45, 2258, 2258,
1359 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1360 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1361 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1362 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1363
1364 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1365 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1366 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1367 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1368 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1369 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1370 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1371 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1372 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1373 45, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1374
1375 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1376 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1377 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1378 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1379 45, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1380 45, 45, 2258, 45, 45, 45, 2258, 45, 45, 45,
1381 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1382 45, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1383 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1384 45, 45, 45, 45, 45, 45, 45, 2258, 45, 45,
1385
1386 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1387 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1388 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1389 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1390 45, 2258, 45, 45, 45, 2258, 45, 45, 45, 45,
1391 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1392 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1393 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1394 45, 2258, 45, 45, 45, 45, 45, 45, 45, 2258,
1395 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1396
1397 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1398 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1399 45, 45, 2258, 45, 2258, 45, 45, 45, 45, 45,
1400 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1401 45, 2258, 45, 45, 45, 45, 2258, 45, 45, 45,
1402 45, 2258, 45, 2258, 2258, 45, 45, 45, 45, 45,
1403 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1404 2258, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1405 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1406 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1407
1408 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1409 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1410 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1411 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1412 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1413 45, 45, 45, 45, 45, 45, 2258, 45, 45, 2258,
1414 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1415 2258, 45, 45, 45, 45, 45, 2258, 45, 45, 2258,
1416 45, 45, 2258, 2258, 45, 45, 45, 45, 45, 45,
1417 45, 45, 45, 2258, 45, 45, 45, 45, 45, 45,
1418
1419 45, 45, 2258, 45, 45, 45, 45, 45, 2258, 45,
1420 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1421 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1422 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1423 45, 45, 45, 45, 45, 45, 2258, 45, 2258, 45,
1424 45, 2258, 45, 45, 45, 45, 45, 45, 45, 45,
1425 45, 2258, 45, 45, 45, 45, 45, 45, 45, 2258,
1426 2258, 45, 45, 2258, 45, 2258, 45, 45, 45, 45,
1427 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1428 45, 45, 2258, 45, 2258, 45, 45, 2258, 45, 45,
1429
1430 45, 45, 45, 45, 2258, 45, 2258, 45, 45, 45,
1431 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1432 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1433 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1434 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1435 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1436 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1437 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1438 45, 45, 45, 2258, 45, 45, 45, 2258, 45, 45,
1439 45, 45, 45, 45, 2258, 45, 45, 2258, 2258, 45,
1440
1441 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1442 45, 45, 45, 45, 45, 45, 45, 2258, 45, 2258,
1443 45, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1444 45, 45, 45, 45, 45, 2258, 45, 45, 2258, 45,
1445 45, 45, 2258, 45, 45, 45, 2258, 45, 45, 2258,
1446 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1447 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1448 45, 45, 45, 45, 2258, 45, 45, 45, 45, 45,
1449 45, 2258, 45, 45, 45, 2258, 45, 45, 45, 45,
1450 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1451
1452 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1453 2258, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1454 45, 45, 2258, 45, 45, 45, 45, 45, 45, 45,
1455 45, 45, 45, 45, 45, 2258, 45, 45, 2258, 45,
1456 2258, 45, 45, 2258, 45, 45, 45, 45, 2258, 45,
1457 2258, 45, 45, 2258, 45, 2258, 45, 45, 45, 45,
1458 45, 45, 45, 45, 2258, 45, 45, 45, 45, 2258,
1459 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1460 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1461 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1462
1463 45, 2258, 45, 2258, 45, 45, 45, 45, 45, 2258,
1464 2258, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1465 45, 45, 45, 2258, 45, 45, 45, 45, 45, 45,
1466 45, 45, 45, 45, 45, 45, 45, 2258, 45, 45,
1467 2258, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1468 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1469 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1470 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1471 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1472 45, 45, 2258, 45, 2258, 2258, 2258, 45, 45, 45,
1473
1474 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1475 45, 45, 45, 45, 2258, 45, 2258, 45, 45, 45,
1476 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1477 45, 45, 45, 2258, 45, 45, 45, 45, 45, 45,
1478 2258, 2258, 45, 2258, 45, 2258, 45, 45, 45, 45,
1479 45, 45, 45, 2258, 45, 2258, 45, 45, 45, 45,
1480 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1481 45, 45, 45, 2258, 45, 45, 45, 45, 45, 45,
1482 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1483 45, 45, 45, 45, 45, 45, 2258, 45, 45, 45,
1484
1485 45, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1486 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1487 45, 45, 45, 45, 45, 2258, 2258, 45, 45, 45,
1488 2258, 45, 45, 45, 45, 2258, 45, 45, 45, 45,
1489 45, 45, 2258, 2258, 45, 2258, 2258, 45, 45, 45,
1490 45, 45, 45, 45, 2258, 45, 45, 2258, 45, 45,
1491 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1492 45, 45, 45, 45, 45, 2258, 45, 45, 2258, 45,
1493 2258, 45, 45, 45, 45, 45, 45, 45, 45, 2258,
1494 45, 45, 45, 45, 45, 45, 45, 45, 2258, 45,
1495
1496 45, 2258, 45, 2258, 2258, 45, 45, 45, 45, 45,
1497 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1498 45, 45, 45, 2258, 45, 45, 45, 45, 45, 2258,
1499 2258, 45, 45, 45, 45, 2258, 45, 45, 2258, 45,
1500 45, 2258, 45, 2258, 45, 45, 2258, 45, 45, 45,
1501 45, 45, 2258, 45, 2258, 2258, 2258, 0, 2258, 2258,
1502 2258, 2258, 2258, 2258, 2258, 2258
1503 } ;
1504
1505static const flex_int16_t yy_nxt[2788] =
1506 { 0,
1507 2258, 13, 14, 13, 2258, 15, 16, 101, 17, 18,
1508 19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
1509 85, 2258, 37, 14, 37, 86, 25, 26, 38, 37,
1510 14, 37, 42, 27, 42, 38, 2258, 2258, 28, 90,
1511 13, 14, 13, 91, 29, 90, 30, 102, 13, 14,
1512 13, 200, 25, 31, 13, 14, 13, 42, 40, 42,
1513 2258, 32, 13, 14, 13, 90, 40, 33, 863, 165,
1514 92, 93, 91, 166, 34, 35, 13, 14, 13, 200,
1515 15, 16, 91, 17, 18, 19, 20, 21, 22, 22,
1516 22, 22, 22, 23, 24, 39, 13, 14, 13, 92,
1517
1518 92, 25, 26, 39, 13, 14, 13, 42, 27, 42,
1519 133, 94, 134, 28, 108, 240, 41, 104, 105, 29,
1520 107, 30, 113, 135, 41, 229, 230, 25, 31, 95,
1521 374, 241, 88, 136, 88, 869, 32, 89, 89, 89,
1522 89, 89, 33, 108, 104, 105, 107, 375, 113, 34,
1523 35, 44, 44, 44, 45, 45, 46, 45, 45, 45,
1524 45, 45, 45, 45, 45, 45, 45, 47, 45, 45,
1525 45, 45, 45, 48, 45, 49, 50, 45, 51, 45,
1526 45, 52, 45, 45, 53, 45, 45, 45, 45, 54,
1527 55, 45, 56, 45, 45, 45, 57, 45, 45, 58,
1528
1529 59, 60, 61, 62, 63, 45, 64, 65, 52, 66,
1530 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1531 77, 78, 45, 45, 45, 45, 45, 80, 114, 81,
1532 81, 81, 81, 81, 80, 187, 83, 83, 83, 83,
1533 83, 107, 82, 84, 84, 84, 84, 84, 80, 82,
1534 83, 83, 83, 83, 83, 114, 82, 109, 197, 111,
1535 188, 104, 187, 82, 138, 110, 128, 107, 82, 129,
1536 130, 112, 139, 131, 101, 82, 206, 161, 137, 187,
1537 870, 162, 82, 109, 197, 111, 132, 188, 118, 82,
1538 45, 163, 189, 110, 119, 157, 45, 120, 45, 45,
1539
1540 112, 45, 206, 158, 45, 159, 190, 45, 140, 116,
1541 160, 141, 45, 45, 102, 45, 45, 203, 142, 205,
1542 143, 189, 45, 45, 45, 45, 45, 45, 105, 45,
1543 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1544 45, 45, 45, 45, 45, 203, 114, 205, 122, 45,
1545 145, 146, 123, 45, 147, 105, 124, 45, 549, 125,
1546 148, 113, 126, 189, 256, 45, 127, 109, 257, 45,
1547 149, 45, 117, 114, 150, 110, 174, 175, 151, 871,
1548 220, 167, 221, 185, 188, 168, 111, 181, 169, 154,
1549 152, 155, 192, 156, 153, 170, 171, 182, 112, 196,
1550
1551 172, 173, 183, 110, 203, 84, 84, 84, 84, 84,
1552 550, 191, 176, 205, 177, 199, 251, 178, 82, 235,
1553 80, 236, 81, 81, 81, 81, 81, 179, 196, 252,
1554 201, 88, 303, 88, 180, 82, 89, 89, 89, 89,
1555 89, 309, 199, 80, 82, 83, 83, 83, 83, 83,
1556 84, 84, 84, 84, 84, 100, 204, 196, 82, 201,
1557 267, 82, 100, 82, 89, 89, 89, 89, 89, 89,
1558 89, 89, 89, 89, 216, 211, 201, 290, 291, 237,
1559 431, 223, 432, 217, 82, 204, 212, 218, 298, 82,
1560 224, 225, 238, 329, 242, 100, 239, 243, 436, 100,
1561
1562 872, 244, 299, 100, 281, 264, 271, 265, 292, 268,
1563 276, 100, 293, 277, 278, 100, 294, 100, 100, 209,
1564 304, 272, 273, 274, 315, 204, 305, 210, 210, 210,
1565 210, 210, 347, 316, 873, 348, 210, 210, 210, 210,
1566 210, 210, 282, 283, 284, 314, 314, 316, 325, 315,
1567 444, 315, 322, 285, 307, 286, 323, 326, 287, 316,
1568 288, 289, 210, 210, 210, 210, 210, 210, 327, 328,
1569 330, 332, 322, 319, 314, 317, 318, 325, 322, 349,
1570 327, 401, 323, 398, 553, 326, 383, 350, 554, 414,
1571 330, 402, 415, 351, 327, 328, 330, 399, 335, 332,
1572
1573 333, 333, 333, 333, 333, 445, 392, 429, 430, 333,
1574 333, 333, 333, 333, 333, 448, 330, 448, 451, 453,
1575 454, 458, 500, 456, 459, 486, 874, 501, 452, 453,
1576 440, 487, 875, 596, 526, 333, 333, 333, 333, 333,
1577 333, 448, 384, 449, 527, 385, 458, 454, 453, 456,
1578 458, 459, 462, 462, 462, 462, 462, 591, 464, 596,
1579 703, 462, 462, 462, 462, 462, 462, 516, 517, 542,
1580 591, 584, 518, 563, 543, 528, 585, 564, 502, 597,
1581 627, 598, 760, 503, 659, 761, 591, 462, 462, 462,
1582 462, 462, 462, 628, 660, 629, 617, 639, 595, 600,
1583
1584 618, 732, 640, 670, 788, 789, 876, 597, 619, 598,
1585 620, 621, 622, 623, 624, 704, 739, 729, 733, 734,
1586 813, 730, 736, 740, 864, 814, 849, 732, 865, 866,
1587 544, 45, 45, 45, 45, 45, 731, 850, 868, 877,
1588 45, 45, 45, 45, 45, 45, 733, 730, 734, 867,
1589 878, 879, 880, 864, 882, 865, 866, 883, 881, 887,
1590 884, 885, 815, 886, 868, 731, 45, 45, 45, 45,
1591 45, 45, 888, 889, 890, 891, 892, 893, 867, 894,
1592 895, 896, 897, 898, 899, 900, 901, 902, 903, 904,
1593 905, 906, 907, 910, 911, 912, 908, 913, 914, 915,
1594
1595 909, 916, 917, 918, 919, 920, 921, 922, 924, 925,
1596 926, 927, 928, 929, 930, 931, 932, 933, 934, 935,
1597 936, 923, 938, 937, 939, 940, 941, 942, 943, 944,
1598 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
1599 955, 956, 957, 958, 959, 960, 961, 962, 963, 964,
1600 965, 966, 967, 968, 969, 970, 971, 972, 973, 974,
1601 975, 976, 977, 979, 980, 981, 984, 985, 986, 978,
1602 989, 987, 982, 990, 991, 992, 983, 988, 993, 994,
1603 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004,
1604 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
1605
1606 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
1607 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1007,
1608 1034, 1035, 1008, 1036, 1037, 1011, 1038, 1039, 1040, 1041,
1609 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051,
1610 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1062,
1611 1063, 1064, 1065, 1061, 1066, 1067, 1068, 1069, 1070, 1071,
1612 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
1613 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1090, 1091, 1092,
1614 1089, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
1615 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
1616
1617 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
1618 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
1619 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
1620 1142, 1143, 1146, 1144, 1147, 1148, 1145, 1149, 1150, 1151,
1621 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
1622 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1142, 1141, 1169,
1623 1143, 1144, 1145, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
1624 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186,
1625 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
1626 1197, 1198, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
1627
1628 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
1629 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
1630 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237,
1631 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
1632 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
1633 1258, 1259, 1199, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
1634 1267, 1268, 1269, 1270, 1271, 1273, 1272, 1274, 1275, 1276,
1635 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286,
1636 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
1637 1297, 1298, 1270, 1272, 1273, 1274, 1299, 1300, 1301, 1302,
1638
1639 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
1640 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322,
1641 1323, 1325, 1327, 1328, 1329, 1324, 1330, 1331, 1332, 1333,
1642 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
1643 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
1644 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
1645 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1326, 1372,
1646 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
1647 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
1648 1393, 1394, 1396, 1395, 1397, 1398, 1399, 1400, 1401, 1402,
1649
1650 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
1651 1413, 1414, 1415, 1416, 1417, 1418, 1393, 1419, 1392, 1395,
1652 1394, 1396, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
1653 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
1654 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
1655 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457,
1656 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467,
1657 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477,
1658 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487,
1659 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497,
1660
1661 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
1662 1508, 1509, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518,
1663 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1500,
1664 1501, 1528, 1529, 1502, 1530, 1531, 1532, 1533, 1534, 1535,
1665 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545,
1666 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1510, 1554,
1667 1555, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1556, 1564,
1668 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574,
1669 1575, 1576, 1578, 1579, 1580, 1581, 1577, 1582, 1583, 1584,
1670 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
1671
1672 1595, 1596, 1597, 1598, 1600, 1601, 1602, 1605, 1599, 1604,
1673 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
1674 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625,
1675 1603, 1601, 1626, 1600, 1627, 1604, 1628, 1629, 1630, 1631,
1676 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641,
1677 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1603, 1650,
1678 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660,
1679 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1671, 1668, 1672,
1680 1673, 1669, 1674, 1675, 1670, 1676, 1677, 1678, 1679, 1680,
1681 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
1682
1683 1691, 1693, 1692, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
1684 1701, 1702, 1703, 1704, 1705, 1708, 1709, 1710, 1706, 1711,
1685 1712, 1713, 1714, 1715, 1716, 1717, 1690, 1691, 1692, 1707,
1686 1693, 1694, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725,
1687 1726, 1727, 1728, 1729, 1730, 1732, 1733, 1734, 1735, 1736,
1688 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
1689 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756,
1690 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766,
1691 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776,
1692 1777, 1778, 1780, 1779, 1781, 1782, 1783, 1784, 1785, 1786,
1693
1694 1787, 1788, 1789, 1790, 1791, 1731, 1792, 1793, 1794, 1795,
1695 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1778, 1803, 1777,
1696 1779, 1780, 1804, 1781, 1805, 1806, 1807, 1808, 1809, 1810,
1697 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820,
1698 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830,
1699 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840,
1700 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850,
1701 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860,
1702 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870,
1703 1871, 1872, 1873, 1874, 1875, 1876, 1850, 1852, 1877, 1878,
1704
1705 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888,
1706 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898,
1707 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1907, 1908, 1909,
1708 1910, 1906, 1911, 1912, 1913, 1914, 1916, 1915, 1917, 1918,
1709 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928,
1710 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938,
1711 1939, 1940, 1914, 1915, 1941, 1942, 1943, 1944, 1945, 1946,
1712 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
1713 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966,
1714 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
1715
1716 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986,
1717 1987, 1988, 1989, 1990, 1965, 1966, 1991, 1967, 1992, 1993,
1718 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
1719 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2009, 2012, 2013,
1720 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
1721 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033,
1722 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2014, 2016, 2041,
1723 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051,
1724 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061,
1725 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071,
1726
1727 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081,
1728 2082, 2083, 2058, 2084, 2059, 2085, 2086, 2087, 2088, 2089,
1729 2090, 2091, 2092, 2093, 2095, 2094, 2096, 2097, 2098, 2099,
1730 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109,
1731 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119,
1732 2093, 2094, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127,
1733 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137,
1734 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147,
1735 2148, 2149, 2150, 2125, 2151, 2152, 2153, 2154, 2155, 2156,
1736 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166,
1737
1738 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176,
1739 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186,
1740 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196,
1741 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206,
1742 2207, 2208, 2209, 2211, 2210, 2212, 2213, 2214, 2215, 2216,
1743 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226,
1744 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236,
1745 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246,
1746 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256,
1747 2257, 12, 12, 12, 36, 36, 36, 79, 98, 79,
1748
1749 100, 100, 100, 115, 115, 115, 186, 862, 186, 207,
1750 207, 207, 861, 860, 859, 858, 857, 856, 855, 854,
1751 853, 852, 851, 848, 847, 846, 845, 844, 843, 842,
1752 841, 840, 839, 838, 837, 836, 835, 834, 833, 832,
1753 831, 830, 829, 828, 827, 826, 825, 824, 823, 822,
1754 821, 820, 819, 818, 817, 816, 812, 811, 810, 809,
1755 808, 807, 806, 805, 804, 803, 802, 801, 800, 799,
1756 798, 797, 796, 795, 794, 793, 792, 791, 790, 787,
1757 786, 785, 784, 783, 782, 781, 780, 779, 778, 777,
1758 776, 775, 774, 773, 772, 771, 770, 769, 768, 767,
1759
1760 766, 765, 764, 763, 762, 759, 758, 757, 756, 755,
1761 754, 753, 752, 751, 750, 749, 748, 747, 746, 745,
1762 744, 743, 742, 741, 738, 737, 735, 729, 728, 727,
1763 726, 725, 724, 723, 722, 721, 720, 719, 718, 717,
1764 716, 715, 714, 713, 712, 711, 710, 709, 708, 707,
1765 706, 705, 702, 701, 700, 699, 698, 697, 696, 695,
1766 694, 693, 692, 691, 690, 689, 688, 687, 686, 685,
1767 684, 683, 682, 681, 680, 679, 678, 677, 676, 675,
1768 674, 673, 672, 671, 669, 668, 667, 666, 665, 664,
1769 663, 662, 661, 658, 657, 656, 655, 654, 653, 652,
1770
1771 651, 650, 649, 648, 647, 646, 645, 644, 643, 642,
1772 641, 638, 637, 636, 635, 634, 633, 632, 631, 630,
1773 626, 625, 616, 615, 614, 613, 612, 611, 610, 609,
1774 608, 607, 606, 605, 604, 603, 602, 601, 599, 595,
1775 594, 593, 592, 590, 589, 588, 587, 586, 583, 582,
1776 581, 580, 579, 578, 577, 576, 575, 574, 573, 572,
1777 571, 570, 569, 568, 567, 566, 565, 562, 561, 560,
1778 559, 558, 557, 556, 555, 552, 551, 548, 547, 546,
1779 545, 541, 540, 539, 538, 537, 536, 535, 534, 533,
1780 532, 531, 530, 529, 525, 524, 523, 522, 521, 520,
1781
1782 519, 515, 514, 513, 512, 511, 510, 509, 508, 507,
1783 506, 505, 504, 499, 498, 497, 496, 495, 494, 493,
1784 492, 491, 490, 489, 488, 485, 484, 483, 482, 481,
1785 480, 479, 478, 477, 476, 475, 474, 473, 472, 471,
1786 470, 469, 468, 467, 466, 465, 463, 461, 460, 457,
1787 455, 450, 447, 446, 443, 442, 441, 439, 438, 437,
1788 435, 434, 433, 428, 427, 426, 425, 424, 423, 422,
1789 421, 420, 419, 418, 417, 416, 413, 412, 411, 410,
1790 409, 408, 407, 406, 405, 404, 403, 400, 397, 396,
1791 395, 394, 393, 391, 390, 389, 388, 387, 386, 382,
1792
1793 381, 380, 379, 378, 377, 376, 373, 372, 371, 370,
1794 369, 368, 367, 366, 365, 364, 363, 362, 361, 360,
1795 359, 358, 357, 356, 355, 354, 353, 352, 346, 345,
1796 344, 343, 342, 341, 340, 339, 338, 337, 336, 334,
1797 208, 331, 329, 324, 321, 320, 313, 312, 311, 310,
1798 308, 306, 302, 301, 300, 297, 296, 295, 280, 279,
1799 275, 270, 269, 266, 263, 262, 261, 260, 259, 258,
1800 255, 254, 253, 250, 249, 248, 247, 246, 245, 234,
1801 233, 232, 231, 228, 227, 226, 222, 219, 215, 214,
1802 213, 208, 202, 198, 195, 194, 193, 184, 164, 144,
1803
1804 121, 106, 103, 43, 99, 97, 96, 87, 43, 2258,
1805 11, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1806 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1807 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1808 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1809 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1810 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1811 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
1812 2258, 2258, 2258, 2258, 2258, 2258, 2258
1813 } ;
1814
1815static const flex_int16_t yy_chk[2788] =
1816 { 0,
1817 0, 1, 1, 1, 0, 1, 1, 44, 1, 1,
1818 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1819 21, 0, 3, 3, 3, 21, 1, 1, 3, 4,
1820 4, 4, 13, 1, 13, 4, 0, 0, 1, 26,
1821 5, 5, 5, 27, 1, 31, 1, 44, 6, 6,
1822 6, 108, 1, 1, 7, 7, 7, 37, 7, 37,
1823 0, 1, 8, 8, 8, 26, 8, 1, 728, 73,
1824 28, 31, 27, 73, 1, 1, 2, 2, 2, 108,
1825 2, 2, 32, 2, 2, 2, 2, 2, 2, 2,
1826 2, 2, 2, 2, 2, 5, 9, 9, 9, 28,
1827
1828 33, 2, 2, 6, 10, 10, 10, 42, 2, 42,
1829 62, 32, 62, 2, 52, 137, 9, 48, 49, 2,
1830 51, 2, 55, 62, 10, 130, 130, 2, 2, 33,
1831 249, 137, 25, 62, 25, 735, 2, 25, 25, 25,
1832 25, 25, 2, 52, 48, 49, 51, 249, 55, 2,
1833 2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1834 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1835 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1836 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1837 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1838
1839 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1840 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1841 15, 15, 15, 15, 15, 15, 15, 17, 56, 17,
1842 17, 17, 17, 17, 19, 90, 19, 19, 19, 19,
1843 19, 63, 17, 20, 20, 20, 20, 20, 22, 19,
1844 22, 22, 22, 22, 22, 56, 20, 53, 105, 54,
1845 91, 58, 90, 22, 64, 53, 61, 63, 17, 61,
1846 61, 54, 64, 61, 100, 19, 114, 71, 63, 93,
1847 736, 71, 20, 53, 105, 54, 61, 91, 58, 22,
1848 45, 71, 92, 53, 58, 70, 45, 58, 45, 45,
1849
1850 54, 45, 114, 70, 45, 70, 93, 45, 65, 57,
1851 70, 65, 45, 45, 100, 45, 57, 111, 65, 113,
1852 65, 92, 45, 45, 45, 45, 45, 45, 60, 45,
1853 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1854 45, 45, 45, 45, 45, 111, 78, 113, 60, 57,
1855 67, 67, 60, 57, 67, 60, 60, 57, 412, 60,
1856 67, 76, 60, 95, 149, 57, 60, 69, 149, 57,
1857 68, 57, 57, 78, 68, 69, 75, 75, 68, 737,
1858 124, 74, 124, 78, 94, 74, 75, 76, 74, 69,
1859 68, 69, 95, 69, 68, 74, 74, 76, 75, 104,
1860
1861 74, 74, 76, 69, 176, 80, 80, 80, 80, 80,
1862 412, 94, 75, 181, 75, 107, 145, 75, 80, 135,
1863 81, 135, 81, 81, 81, 81, 81, 75, 104, 145,
1864 109, 82, 176, 82, 75, 81, 82, 82, 82, 82,
1865 82, 181, 107, 83, 80, 83, 83, 83, 83, 83,
1866 84, 84, 84, 84, 84, 102, 112, 118, 83, 109,
1867 158, 81, 102, 84, 88, 88, 88, 88, 88, 89,
1868 89, 89, 89, 89, 122, 118, 156, 167, 167, 136,
1869 299, 126, 299, 122, 83, 112, 118, 122, 172, 84,
1870 126, 126, 136, 303, 138, 102, 136, 138, 303, 102,
1871
1872 738, 138, 172, 102, 166, 156, 161, 156, 168, 158,
1873 163, 102, 168, 163, 163, 102, 168, 102, 102, 117,
1874 177, 161, 161, 161, 188, 179, 177, 117, 117, 117,
1875 117, 117, 224, 189, 739, 224, 117, 117, 117, 117,
1876 117, 117, 166, 166, 166, 187, 190, 192, 199, 191,
1877 311, 188, 196, 166, 179, 166, 197, 200, 166, 189,
1878 166, 166, 117, 117, 117, 117, 117, 117, 201, 202,
1879 204, 206, 212, 192, 187, 190, 191, 199, 196, 225,
1880 264, 272, 197, 270, 415, 200, 257, 225, 415, 284,
1881 307, 272, 284, 225, 201, 202, 204, 270, 212, 206,
1882
1883 210, 210, 210, 210, 210, 311, 264, 298, 298, 210,
1884 210, 210, 210, 210, 210, 314, 307, 317, 321, 322,
1885 323, 327, 370, 325, 328, 357, 740, 370, 321, 335,
1886 307, 357, 741, 459, 391, 210, 210, 210, 210, 210,
1887 210, 314, 257, 317, 391, 257, 392, 323, 322, 325,
1888 327, 328, 333, 333, 333, 333, 333, 453, 335, 459,
1889 563, 333, 333, 333, 333, 333, 333, 383, 383, 406,
1890 464, 445, 383, 424, 406, 392, 445, 424, 370, 461,
1891 486, 461, 624, 370, 517, 624, 453, 333, 333, 333,
1892 333, 333, 333, 486, 517, 486, 483, 497, 528, 464,
1893
1894 483, 596, 497, 528, 652, 652, 742, 461, 483, 461,
1895 483, 483, 483, 483, 483, 563, 604, 600, 597, 598,
1896 677, 592, 600, 604, 730, 677, 714, 596, 731, 732,
1897 406, 462, 462, 462, 462, 462, 592, 714, 734, 743,
1898 462, 462, 462, 462, 462, 462, 597, 592, 598, 733,
1899 744, 745, 746, 730, 747, 731, 732, 748, 746, 750,
1900 749, 749, 677, 749, 734, 592, 462, 462, 462, 462,
1901 462, 462, 751, 752, 753, 754, 755, 756, 733, 757,
1902 758, 759, 760, 761, 762, 763, 764, 765, 766, 767,
1903 768, 769, 770, 771, 772, 773, 770, 774, 775, 776,
1904
1905 770, 777, 778, 779, 780, 781, 782, 783, 784, 785,
1906 786, 787, 788, 789, 790, 791, 792, 793, 794, 795,
1907 796, 783, 797, 796, 798, 799, 801, 802, 803, 804,
1908 805, 806, 807, 808, 809, 810, 811, 812, 814, 815,
1909 816, 817, 818, 819, 820, 821, 822, 823, 824, 825,
1910 826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
1911 836, 837, 838, 839, 840, 840, 841, 842, 843, 838,
1912 845, 844, 840, 846, 847, 848, 840, 844, 850, 851,
1913 852, 853, 854, 855, 856, 857, 858, 859, 860, 861,
1914 862, 863, 864, 865, 866, 867, 868, 869, 870, 871,
1915
1916 872, 873, 874, 875, 876, 877, 878, 879, 880, 881,
1917 883, 884, 885, 886, 887, 888, 889, 890, 891, 864,
1918 892, 893, 865, 894, 895, 868, 896, 897, 898, 899,
1919 900, 901, 902, 903, 904, 905, 906, 907, 908, 909,
1920 910, 911, 912, 913, 915, 916, 917, 918, 919, 920,
1921 921, 922, 923, 919, 924, 925, 926, 927, 928, 929,
1922 930, 931, 934, 935, 936, 937, 938, 939, 942, 943,
1923 944, 945, 946, 947, 948, 950, 951, 952, 953, 954,
1924 951, 955, 956, 957, 958, 962, 963, 964, 965, 966,
1925 967, 968, 969, 970, 971, 972, 973, 974, 975, 976,
1926
1927 977, 978, 979, 980, 981, 982, 983, 984, 985, 986,
1928 987, 988, 989, 990, 991, 992, 994, 995, 996, 997,
1929 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
1930 1008, 1009, 1012, 1010, 1013, 1014, 1011, 1015, 1016, 1017,
1931 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
1932 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1008, 1007, 1036,
1933 1009, 1010, 1011, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
1934 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
1935 1054, 1055, 1056, 1057, 1058, 1059, 1061, 1062, 1063, 1064,
1936 1065, 1066, 1067, 1068, 1070, 1071, 1072, 1073, 1074, 1075,
1937
1938 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
1939 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
1940 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105, 1106, 1107,
1941 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
1942 1118, 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
1943 1129, 1130, 1066, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
1944 1138, 1139, 1140, 1141, 1142, 1144, 1143, 1145, 1147, 1148,
1945 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1158, 1159, 1160,
1946 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
1947 1171, 1172, 1141, 1143, 1144, 1145, 1173, 1174, 1175, 1177,
1948
1949 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
1950 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197,
1951 1199, 1200, 1201, 1202, 1203, 1199, 1204, 1205, 1206, 1207,
1952 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
1953 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
1954 1228, 1229, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238,
1955 1239, 1240, 1241, 1243, 1244, 1245, 1247, 1248, 1200, 1249,
1956 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
1957 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1270,
1958 1271, 1272, 1274, 1273, 1275, 1276, 1277, 1278, 1279, 1280,
1959
1960 1281, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1291, 1292,
1961 1293, 1294, 1295, 1296, 1297, 1298, 1271, 1299, 1270, 1273,
1962 1272, 1274, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
1963 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
1964 1319, 1321, 1322, 1324, 1326, 1327, 1328, 1329, 1330, 1331,
1965 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1343,
1966 1344, 1345, 1346, 1348, 1349, 1350, 1351, 1353, 1356, 1357,
1967 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
1968 1368, 1369, 1370, 1372, 1373, 1374, 1375, 1376, 1377, 1378,
1969 1379, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
1970
1971 1391, 1392, 1393, 1394, 1395, 1396, 1398, 1399, 1400, 1401,
1972 1402, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
1973 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1393,
1974 1394, 1422, 1423, 1395, 1424, 1425, 1426, 1427, 1428, 1430,
1975 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
1976 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1404, 1449,
1977 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1458, 1450, 1459,
1978 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470,
1979 1472, 1473, 1474, 1475, 1476, 1478, 1473, 1478, 1479, 1481,
1980 1482, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493,
1981
1982 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1504, 1498, 1502,
1983 1505, 1506, 1507, 1508, 1510, 1511, 1512, 1513, 1514, 1515,
1984 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
1985 1501, 1500, 1526, 1499, 1527, 1502, 1528, 1530, 1531, 1532,
1986 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
1987 1544, 1545, 1546, 1548, 1550, 1551, 1553, 1554, 1501, 1555,
1988 1556, 1557, 1558, 1559, 1560, 1561, 1563, 1564, 1565, 1566,
1989 1567, 1568, 1569, 1572, 1573, 1575, 1577, 1578, 1577, 1579,
1990 1580, 1577, 1581, 1582, 1577, 1583, 1584, 1585, 1586, 1587,
1991 1588, 1589, 1590, 1591, 1592, 1594, 1596, 1597, 1599, 1600,
1992
1993 1601, 1603, 1602, 1604, 1606, 1608, 1609, 1610, 1612, 1613,
1994 1614, 1615, 1616, 1617, 1618, 1620, 1621, 1622, 1619, 1623,
1995 1624, 1625, 1626, 1627, 1628, 1629, 1600, 1601, 1602, 1619,
1996 1603, 1604, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637,
1997 1638, 1639, 1640, 1640, 1641, 1642, 1643, 1644, 1645, 1646,
1998 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656,
1999 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666,
2000 1667, 1668, 1669, 1670, 1671, 1672, 1674, 1675, 1676, 1677,
2001 1678, 1679, 1680, 1681, 1682, 1683, 1685, 1686, 1687, 1689,
2002 1690, 1691, 1693, 1692, 1694, 1696, 1697, 1700, 1701, 1702,
2003
2004 1704, 1705, 1706, 1707, 1708, 1641, 1709, 1710, 1711, 1712,
2005 1713, 1714, 1715, 1716, 1717, 1719, 1721, 1691, 1722, 1690,
2006 1692, 1693, 1723, 1694, 1724, 1725, 1726, 1727, 1728, 1729,
2007 1731, 1732, 1733, 1734, 1735, 1737, 1738, 1740, 1741, 1742,
2008 1744, 1745, 1746, 1748, 1749, 1752, 1753, 1754, 1755, 1756,
2009 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766,
2010 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1776, 1777,
2011 1778, 1779, 1780, 1781, 1783, 1784, 1785, 1787, 1788, 1789,
2012 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799,
2013 1800, 1801, 1802, 1803, 1804, 1805, 1777, 1779, 1806, 1808,
2014
2015 1809, 1810, 1812, 1813, 1814, 1815, 1816, 1818, 1819, 1820,
2016 1821, 1822, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831,
2017 1832, 1833, 1834, 1835, 1837, 1838, 1840, 1842, 1843, 1845,
2018 1846, 1840, 1847, 1848, 1850, 1852, 1855, 1853, 1857, 1858,
2019 1859, 1860, 1861, 1862, 1863, 1864, 1866, 1867, 1868, 1869,
2020 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880,
2021 1881, 1882, 1852, 1853, 1883, 1884, 1885, 1886, 1888, 1889,
2022 1890, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900,
2023 1901, 1903, 1905, 1906, 1907, 1908, 1909, 1912, 1913, 1914,
2024 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1925,
2025
2026 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935,
2027 1936, 1937, 1939, 1940, 1913, 1914, 1942, 1915, 1943, 1944,
2028 1945, 1946, 1947, 1948, 1950, 1951, 1952, 1953, 1954, 1955,
2029 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1960, 1963, 1964,
2030 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974,
2031 1975, 1976, 1977, 1978, 1980, 1981, 1982, 1983, 1984, 1985,
2032 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1965, 1967, 1994,
2033 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2034 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2019,
2035 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029,
2036
2037 2030, 2031, 2032, 2033, 2035, 2036, 2037, 2038, 2039, 2040,
2038 2043, 2045, 2014, 2047, 2016, 2048, 2049, 2050, 2051, 2052,
2039 2053, 2055, 2057, 2058, 2060, 2059, 2061, 2062, 2063, 2064,
2040 2065, 2066, 2068, 2069, 2070, 2071, 2072, 2073, 2075, 2076,
2041 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086,
2042 2058, 2059, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095,
2043 2096, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2107,
2044 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117,
2045 2118, 2119, 2120, 2093, 2121, 2122, 2123, 2124, 2125, 2128,
2046 2129, 2130, 2132, 2133, 2134, 2135, 2137, 2138, 2139, 2140,
2047
2048 2141, 2142, 2145, 2148, 2149, 2150, 2151, 2152, 2153, 2154,
2049 2156, 2157, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166,
2050 2167, 2168, 2170, 2171, 2172, 2173, 2174, 2175, 2177, 2178,
2051 2180, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2191,
2052 2192, 2193, 2194, 2195, 2194, 2196, 2197, 2198, 2200, 2201,
2053 2203, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214,
2054 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2225,
2055 2226, 2227, 2228, 2229, 2232, 2233, 2234, 2235, 2237, 2238,
2056 2240, 2241, 2243, 2245, 2246, 2248, 2249, 2250, 2251, 2252,
2057 2254, 2259, 2259, 2259, 2260, 2260, 2260, 2261, 2262, 2261,
2058
2059 2263, 2263, 2263, 2264, 2264, 2264, 2265, 727, 2265, 2266,
2060 2266, 2266, 725, 724, 723, 722, 721, 720, 719, 718,
2061 717, 716, 715, 713, 712, 711, 710, 708, 707, 706,
2062 705, 704, 703, 702, 701, 700, 699, 698, 697, 696,
2063 694, 693, 692, 691, 690, 689, 688, 687, 686, 684,
2064 683, 682, 681, 680, 679, 678, 676, 675, 674, 673,
2065 672, 671, 670, 669, 668, 666, 665, 664, 663, 662,
2066 661, 660, 659, 658, 657, 656, 655, 654, 653, 651,
2067 650, 649, 648, 647, 646, 645, 644, 643, 642, 641,
2068 640, 638, 637, 636, 635, 634, 633, 632, 631, 630,
2069
2070 629, 628, 627, 626, 625, 623, 622, 621, 620, 619,
2071 618, 617, 616, 615, 614, 613, 612, 611, 610, 609,
2072 608, 607, 606, 605, 603, 602, 599, 591, 590, 589,
2073 588, 587, 586, 585, 583, 582, 580, 579, 577, 576,
2074 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
2075 565, 564, 562, 561, 560, 559, 558, 557, 556, 555,
2076 554, 553, 552, 551, 550, 549, 548, 547, 546, 544,
2077 543, 541, 540, 539, 538, 537, 536, 535, 534, 533,
2078 532, 531, 530, 529, 527, 526, 524, 523, 522, 521,
2079 520, 519, 518, 516, 515, 514, 513, 512, 511, 510,
2080
2081 509, 508, 507, 506, 505, 504, 503, 502, 501, 499,
2082 498, 496, 495, 494, 493, 492, 491, 490, 489, 487,
2083 485, 484, 481, 480, 479, 478, 477, 476, 474, 473,
2084 472, 471, 470, 469, 468, 467, 466, 465, 463, 458,
2085 456, 455, 454, 452, 451, 450, 447, 446, 444, 443,
2086 441, 440, 439, 438, 437, 436, 435, 434, 433, 432,
2087 431, 430, 429, 428, 427, 426, 425, 423, 422, 421,
2088 420, 419, 418, 417, 416, 414, 413, 411, 409, 408,
2089 407, 405, 404, 403, 402, 401, 400, 399, 398, 397,
2090 396, 395, 394, 393, 390, 389, 388, 387, 386, 385,
2091
2092 384, 382, 381, 380, 379, 378, 377, 376, 375, 374,
2093 373, 372, 371, 369, 368, 367, 366, 365, 364, 363,
2094 362, 361, 360, 359, 358, 356, 355, 354, 353, 352,
2095 351, 350, 349, 348, 347, 346, 345, 344, 343, 342,
2096 341, 340, 339, 338, 337, 336, 334, 332, 330, 326,
2097 324, 320, 313, 312, 310, 309, 308, 306, 305, 304,
2098 302, 301, 300, 297, 296, 295, 294, 293, 292, 291,
2099 290, 289, 288, 287, 286, 285, 283, 282, 281, 280,
2100 279, 278, 277, 276, 275, 274, 273, 271, 269, 268,
2101 267, 266, 265, 263, 262, 261, 260, 259, 258, 256,
2102
2103 255, 254, 253, 252, 251, 250, 248, 247, 245, 244,
2104 243, 242, 241, 240, 239, 238, 237, 236, 235, 234,
2105 233, 232, 231, 230, 229, 228, 227, 226, 223, 222,
2106 221, 220, 219, 218, 217, 216, 215, 214, 213, 211,
2107 207, 205, 203, 198, 195, 193, 185, 184, 183, 182,
2108 180, 178, 175, 174, 173, 171, 170, 169, 165, 164,
2109 162, 160, 159, 157, 155, 154, 153, 152, 151, 150,
2110 148, 147, 146, 144, 143, 142, 141, 140, 139, 134,
2111 133, 132, 131, 129, 128, 127, 125, 123, 121, 120,
2112 119, 115, 110, 106, 103, 98, 97, 77, 72, 66,
2113
2114 59, 50, 47, 43, 41, 39, 38, 24, 14, 11,
2115 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2116 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2117 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2118 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2119 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2120 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2121 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
2122 2258, 2258, 2258, 2258, 2258, 2258, 2258
2123 } ;
2124
2125static yy_state_type yy_last_accepting_state;
2126static char *yy_last_accepting_cpos;
2127
2128extern int yy_flex_debug;
2130
2131static const flex_int16_t yy_rule_linenum[224] =
2132 { 0,
2133 147, 149, 151, 156, 157, 162, 163, 164, 176, 179,
2134 184, 191, 200, 209, 218, 227, 236, 245, 254, 264,
2135 273, 282, 291, 300, 309, 318, 327, 336, 345, 354,
2136 363, 372, 381, 390, 399, 411, 420, 429, 438, 449,
2137 460, 471, 482, 493, 504, 515, 526, 537, 548, 559,
2138 570, 579, 588, 597, 608, 619, 628, 639, 650, 661,
2139 672, 684, 696, 708, 719, 730, 739, 748, 757, 768,
2140 777, 786, 797, 808, 819, 830, 841, 852, 863, 874,
2141 885, 894, 903, 912, 922, 933, 943, 954, 963, 973,
2142 987, 1003, 1012, 1021, 1030, 1039, 1048, 1057, 1079, 1101,
2143
2144 1110, 1120, 1129, 1140, 1151, 1162, 1172, 1181, 1192, 1203,
2145 1214, 1225, 1237, 1246, 1255, 1264, 1273, 1282, 1291, 1300,
2146 1309, 1318, 1327, 1337, 1348, 1360, 1369, 1378, 1387, 1397,
2147 1407, 1417, 1427, 1437, 1447, 1456, 1466, 1475, 1484, 1493,
2148 1502, 1512, 1521, 1530, 1540, 1549, 1558, 1567, 1576, 1585,
2149 1594, 1603, 1612, 1621, 1630, 1639, 1648, 1657, 1666, 1675,
2150 1684, 1693, 1702, 1711, 1720, 1729, 1738, 1747, 1756, 1765,
2151 1774, 1783, 1792, 1801, 1810, 1821, 1832, 1842, 1852, 1862,
2152 1872, 1882, 1892, 1902, 1912, 1922, 1931, 1940, 1949, 1958,
2153 1969, 1980, 1993, 2006, 2019, 2028, 2037, 2046, 2055, 2064,
2154
2155 2073, 2082, 2091, 2103, 2112, 2213, 2229, 2278, 2286, 2301,
2156 2302, 2303, 2304, 2305, 2306, 2308, 2326, 2339, 2344, 2348,
2157 2350, 2352, 2354
2158 } ;
2159
2160/* The intent behind this definition is that it'll catch
2161 * any uses of REJECT which flex missed.
2162 */
2163#define REJECT reject_used_but_not_detected
2164#define yymore() yymore_used_but_not_detected
2165#define YY_MORE_ADJ 0
2166#define YY_RESTORE_YY_MORE_OFFSET
2168#line 1 "dhcp4_lexer.ll"
2169/* Copyright (C) 2016-2024 Internet Systems Consortium, Inc. ("ISC")
2170
2171 This Source Code Form is subject to the terms of the Mozilla Public
2172 License, v. 2.0. If a copy of the MPL was not distributed with this
2173 file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2174#line 8 "dhcp4_lexer.ll"
2175
2176/* Generated files do not make clang static analyser so happy */
2177#ifndef __clang_analyzer__
2178
2179#include <cctype>
2180#include <cerrno>
2181#include <climits>
2182#include <cstdint>
2183#include <cstdlib>
2184#include <string>
2185#include <dhcp4/parser_context.h>
2186#include <asiolink/io_address.h>
2187#include <boost/lexical_cast.hpp>
2188#include <exceptions/exceptions.h>
2189
2190/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */
2191
2192/* Work around an incompatibility in flex (at least versions
2193 2.5.31 through 2.5.33): it generates code that does
2194 not conform to C89. See Debian bug 333231
2195 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
2196# undef yywrap
2197# define yywrap() 1
2198
2199namespace {
2200
2201bool start_token_flag = false;
2202
2204unsigned int comment_start_line = 0;
2205
2206using namespace isc::dhcp;
2207
2208};
2209
2210/* To avoid the call to exit... oops! */
2211#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
2212#line 2212 "dhcp4_lexer.cc"
2213/* noyywrap disables automatic rewinding for the next file to parse. Since we
2214 always parse only a single string, there's no need to do any wraps. And
2215 using yywrap requires linking with -lfl, which provides the default yywrap
2216 implementation that always returns 1 anyway. */
2217/* nounput simplifies the lexer, by removing support for putting a character
2218 back into the input stream. We never use such capability anyway. */
2219/* batch means that we'll never use the generated lexer interactively. */
2220/* avoid to get static global variables to remain with C++. */
2221/* in last resort %option reentrant */
2222/* Enables debug mode. To see the debug messages, one needs to also set
2223 yy_flex_debug to 1, then the debug messages will be printed on stderr. */
2224/* I have no idea what this option does, except it was specified in the bison
2225 examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
2226 be on the safe side and keep it. */
2227#define YY_NO_INPUT 1
2228
2229/* These are not token expressions yet, just convenience expressions that
2230 can be used during actual token definitions. Note some can match
2231 incorrect inputs (e.g., IP addresses) which must be checked. */
2232/* for errors */
2233#line 96 "dhcp4_lexer.ll"
2234/* This code run each time a pattern is matched. It updates the location
2235 by moving it ahead by yyleng bytes. yyleng specifies the length of the
2236 currently matched token. */
2237#define YY_USER_ACTION driver.loc_.columns(yyleng);
2238#line 2238 "dhcp4_lexer.cc"
2239#line 2239 "dhcp4_lexer.cc"
2240
2241#define INITIAL 0
2242#define COMMENT 1
2243#define DIR_ENTER 2
2244#define DIR_INCLUDE 3
2245#define DIR_EXIT 4
2246
2247#ifndef YY_NO_UNISTD_H
2248/* Special case for "unistd.h", since it is non-ANSI. We include it way
2249 * down here because we want the user's section 1 to have been scanned first.
2250 * The user has a chance to override it with an option.
2251 */
2252/* %if-c-only */
2253#include <unistd.h>
2254/* %endif */
2255/* %if-c++-only */
2256/* %endif */
2257#endif
2258
2259#ifndef YY_EXTRA_TYPE
2260#define YY_EXTRA_TYPE void *
2261#endif
2262
2263/* %if-c-only Reentrant structure and macros (non-C++). */
2264/* %if-reentrant */
2265/* %if-c-only */
2266
2267static int yy_init_globals ( void );
2268
2269/* %endif */
2270/* %if-reentrant */
2271/* %endif */
2272/* %endif End reentrant structures and macros. */
2273
2274/* Accessor methods to globals.
2275 These are made visible to non-reentrant scanners for convenience. */
2276
2277int yylex_destroy ( void );
2278
2279int yyget_debug ( void );
2280
2281void yyset_debug ( int debug_flag );
2282
2283YY_EXTRA_TYPE yyget_extra ( void );
2284
2285void yyset_extra ( YY_EXTRA_TYPE user_defined );
2286
2287FILE *yyget_in ( void );
2288
2289void yyset_in ( FILE * _in_str );
2290
2291FILE *yyget_out ( void );
2292
2293void yyset_out ( FILE * _out_str );
2294
2295 int yyget_leng ( void );
2296
2297char *yyget_text ( void );
2298
2299int yyget_lineno ( void );
2300
2301void yyset_lineno ( int _line_number );
2302
2303/* %if-bison-bridge */
2304/* %endif */
2305
2306/* Macros after this point can all be overridden by user definitions in
2307 * section 1.
2308 */
2309
2310#ifndef YY_SKIP_YYWRAP
2311#ifdef __cplusplus
2312extern "C" int yywrap ( void );
2313#else
2314extern int yywrap ( void );
2315#endif
2316#endif
2317
2318/* %not-for-header */
2319#ifndef YY_NO_UNPUT
2320
2321#endif
2322/* %ok-for-header */
2323
2324/* %endif */
2325
2326#ifndef yytext_ptr
2327static void yy_flex_strncpy ( char *, const char *, int );
2328#endif
2329
2330#ifdef YY_NEED_STRLEN
2331static int yy_flex_strlen ( const char * );
2332#endif
2333
2334#ifndef YY_NO_INPUT
2335/* %if-c-only Standard (non-C++) definition */
2336/* %not-for-header */
2337#ifdef __cplusplus
2338static int yyinput ( void );
2339#else
2340static int input ( void );
2341#endif
2342/* %ok-for-header */
2343
2344/* %endif */
2345#endif
2346
2347/* %if-c-only */
2348
2349/* %endif */
2350
2351/* Amount of stuff to slurp up with each read. */
2352#ifndef YY_READ_BUF_SIZE
2353#ifdef __ia64__
2354/* On IA-64, the buffer size is 16k, not 8k */
2355#define YY_READ_BUF_SIZE 16384
2356#else
2357#define YY_READ_BUF_SIZE 8192
2358#endif /* __ia64__ */
2359#endif
2360
2361/* Copy whatever the last rule matched to the standard output. */
2362#ifndef ECHO
2363/* %if-c-only Standard (non-C++) definition */
2364/* This used to be an fputs(), but since the string might contain NUL's,
2365 * we now use fwrite().
2366 */
2367#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
2368/* %endif */
2369/* %if-c++-only C++ definition */
2370/* %endif */
2371#endif
2372
2373/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2374 * is returned in "result".
2375 */
2376#ifndef YY_INPUT
2377#define YY_INPUT(buf,result,max_size) \
2378/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
2379 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2380 { \
2381 int c = '*'; \
2382 int n; \
2383 for ( n = 0; n < max_size && \
2384 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2385 buf[n] = (char) c; \
2386 if ( c == '\n' ) \
2387 buf[n++] = (char) c; \
2388 if ( c == EOF && ferror( yyin ) ) \
2389 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2390 result = n; \
2391 } \
2392 else \
2393 { \
2394 errno=0; \
2395 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
2396 { \
2397 if( errno != EINTR) \
2398 { \
2399 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2400 break; \
2401 } \
2402 errno=0; \
2403 clearerr(yyin); \
2404 } \
2405 }\
2406\
2407/* %if-c++-only C++ definition \ */\
2408/* %endif */
2409
2410#endif
2411
2412/* No semi-colon after return; correct usage is to write "yyterminate();" -
2413 * we don't want an extra ';' after the "return" because that will cause
2414 * some compilers to complain about unreachable statements.
2415 */
2416#ifndef yyterminate
2417#define yyterminate() return YY_NULL
2418#endif
2419
2420/* Number of entries by which start-condition stack grows. */
2421#ifndef YY_START_STACK_INCR
2422#define YY_START_STACK_INCR 25
2423#endif
2424
2425/* Report a fatal error. */
2426#ifndef YY_FATAL_ERROR
2427/* %if-c-only */
2428#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2429/* %endif */
2430/* %if-c++-only */
2431/* %endif */
2432#endif
2433
2434/* %if-tables-serialization structures and prototypes */
2435/* %not-for-header */
2436/* %ok-for-header */
2437
2438/* %not-for-header */
2439/* %tables-yydmap generated elements */
2440/* %endif */
2441/* end tables serialization structures and prototypes */
2442
2443/* %ok-for-header */
2444
2445/* Default declaration of generated scanner - a define so the user can
2446 * easily add parameters.
2447 */
2448#ifndef YY_DECL
2449#define YY_DECL_IS_OURS 1
2450/* %if-c-only Standard (non-C++) definition */
2451
2452extern int yylex (void);
2453
2454#define YY_DECL int yylex (void)
2455/* %endif */
2456/* %if-c++-only C++ definition */
2457/* %endif */
2458#endif /* !YY_DECL */
2459
2460/* Code executed at the beginning of each rule, after yytext and yyleng
2461 * have been set up.
2462 */
2463#ifndef YY_USER_ACTION
2464#define YY_USER_ACTION
2465#endif
2466
2467/* Code executed at the end of each rule. */
2468#ifndef YY_BREAK
2469#define YY_BREAK /*LINTED*/break;
2470#endif
2471
2472/* %% [6.0] YY_RULE_SETUP definition goes here */
2473#define YY_RULE_SETUP \
2474 YY_USER_ACTION
2475
2476/* %not-for-header */
2480{
2481 yy_state_type yy_current_state;
2482 char *yy_cp, *yy_bp;
2484
2485 if ( !(yy_init) )
2486 {
2487 (yy_init) = 1;
2488
2489#ifdef YY_USER_INIT
2490 YY_USER_INIT;
2491#endif
2492
2493 if ( ! (yy_start) )
2494 (yy_start) = 1; /* first start state */
2495
2496 if ( ! yyin )
2497/* %if-c-only */
2498 yyin = stdin;
2499/* %endif */
2500/* %if-c++-only */
2501/* %endif */
2502
2503 if ( ! yyout )
2504/* %if-c-only */
2505 yyout = stdout;
2506/* %endif */
2507/* %if-c++-only */
2508/* %endif */
2509
2510 if ( ! YY_CURRENT_BUFFER ) {
2514 }
2515
2517 }
2518
2519 {
2520/* %% [7.0] user's declarations go here */
2521#line 102 "dhcp4_lexer.ll"
2522
2523
2524
2525#line 106 "dhcp4_lexer.ll"
2526 /* This part of the code is copied over to the verbatim to the top
2527 of the generated yylex function. Explanation:
2528 http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
2529
2530 /* Code run each time yylex is called. */
2531 driver.loc_.step();
2532
2533 if (start_token_flag) {
2534 start_token_flag = false;
2535 switch (start_token_value) {
2537 default:
2542 return isc::dhcp::Dhcp4Parser::make_SUB_DHCP4(driver.loc_);
2546 return isc::dhcp::Dhcp4Parser::make_SUB_SUBNET4(driver.loc_);
2548 return isc::dhcp::Dhcp4Parser::make_SUB_POOL4(driver.loc_);
2563 }
2564 }
2565
2566
2567#line 2567 "dhcp4_lexer.cc"
2568
2569 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
2570 {
2571/* %% [8.0] yymore()-related code goes here */
2572 yy_cp = (yy_c_buf_p);
2573
2574 /* Support of yytext. */
2575 *yy_cp = (yy_hold_char);
2576
2577 /* yy_bp points to the position in yy_ch_buf of the start of
2578 * the current run.
2579 */
2580 yy_bp = yy_cp;
2581
2582/* %% [9.0] code to set up and find next match goes here */
2583 yy_current_state = (yy_start);
2584yy_match:
2585 do
2586 {
2587 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2588 if ( yy_accept[yy_current_state] )
2589 {
2590 (yy_last_accepting_state) = yy_current_state;
2591 (yy_last_accepting_cpos) = yy_cp;
2592 }
2593 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2594 {
2595 yy_current_state = (int) yy_def[yy_current_state];
2596 if ( yy_current_state >= 2259 )
2597 yy_c = yy_meta[yy_c];
2598 }
2599 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2600 ++yy_cp;
2601 }
2602 while ( yy_current_state != 2258 );
2603 yy_cp = (yy_last_accepting_cpos);
2604 yy_current_state = (yy_last_accepting_state);
2605
2606yy_find_action:
2607/* %% [10.0] code to find the action number goes here */
2608 yy_act = yy_accept[yy_current_state];
2609
2611
2612/* %% [11.0] code for yylineno update goes here */
2613
2614do_action: /* This label is used only to access EOF actions. */
2615
2616/* %% [12.0] debug code goes here */
2617 if ( yy_flex_debug )
2618 {
2619 if ( yy_act == 0 )
2620 fprintf( stderr, "--scanner backing up\n" );
2621 else if ( yy_act < 224 )
2622 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
2623 (long)yy_rule_linenum[yy_act], yytext );
2624 else if ( yy_act == 224 )
2625 fprintf( stderr, "--accepting default rule (\"%s\")\n",
2626 yytext );
2627 else if ( yy_act == 225 )
2628 fprintf( stderr, "--(end of buffer or a NUL)\n" );
2629 else
2630 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
2631 }
2632
2633 switch ( yy_act )
2634 { /* beginning of action switch */
2635/* %% [13.0] actions go here */
2636 case 0: /* must back up */
2637 /* undo the effects of YY_DO_BEFORE_ACTION */
2638 *yy_cp = (yy_hold_char);
2639 yy_cp = (yy_last_accepting_cpos);
2640 yy_current_state = (yy_last_accepting_state);
2641 goto yy_find_action;
2642
2643case 1:
2645#line 147 "dhcp4_lexer.ll"
2646;
2647 YY_BREAK
2648case 2:
2650#line 149 "dhcp4_lexer.ll"
2651;
2652 YY_BREAK
2653case 3:
2655#line 151 "dhcp4_lexer.ll"
2656{
2657 BEGIN(COMMENT);
2658 comment_start_line = driver.loc_.end.line;;
2659}
2660 YY_BREAK
2661case 4:
2663#line 156 "dhcp4_lexer.ll"
2664BEGIN(INITIAL);
2665 YY_BREAK
2666case 5:
2668#line 157 "dhcp4_lexer.ll"
2669;
2670 YY_BREAK
2671case YY_STATE_EOF(COMMENT):
2672#line 158 "dhcp4_lexer.ll"
2673{
2674 isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
2675}
2676 YY_BREAK
2677case 6:
2679#line 162 "dhcp4_lexer.ll"
2681 YY_BREAK
2682case 7:
2684#line 163 "dhcp4_lexer.ll"
2686 YY_BREAK
2687case 8:
2689#line 164 "dhcp4_lexer.ll"
2690{
2691 /* Include directive. */
2692
2693 /* Extract the filename. */
2694 std::string tmp(yytext+1);
2695 tmp.resize(tmp.size() - 1);
2696
2697 driver.includeFile(tmp);
2698}
2699 YY_BREAK
2703#line 173 "dhcp4_lexer.ll"
2704{
2705 isc_throw(Dhcp4ParseError, "Directive not closed.");
2706}
2707 YY_BREAK
2708case 9:
2710#line 176 "dhcp4_lexer.ll"
2711BEGIN(INITIAL);
2712 YY_BREAK
2713case 10:
2715#line 179 "dhcp4_lexer.ll"
2716{
2717 /* Ok, we found a with space. Let's ignore it and update loc variable. */
2718 driver.loc_.step();
2719}
2720 YY_BREAK
2721case 11:
2722/* rule 11 can match eol */
2724#line 184 "dhcp4_lexer.ll"
2725{
2726 /* Newline found. Let's update the location and continue. */
2727 driver.loc_.lines(yyleng);
2728 driver.loc_.step();
2729}
2730 YY_BREAK
2731case 12:
2733#line 191 "dhcp4_lexer.ll"
2734{
2735 switch(driver.ctx_) {
2737 return isc::dhcp::Dhcp4Parser::make_DHCP4(driver.loc_);
2738 default:
2739 return isc::dhcp::Dhcp4Parser::make_STRING("Dhcp4", driver.loc_);
2740 }
2741}
2742 YY_BREAK
2743case 13:
2745#line 200 "dhcp4_lexer.ll"
2746{
2747 switch(driver.ctx_) {
2750 default:
2751 return isc::dhcp::Dhcp4Parser::make_STRING("interfaces-config", driver.loc_);
2752 }
2753}
2754 YY_BREAK
2755case 14:
2757#line 209 "dhcp4_lexer.ll"
2758{
2759 switch(driver.ctx_) {
2762 default:
2763 return isc::dhcp::Dhcp4Parser::make_STRING("sanity-checks", driver.loc_);
2764 }
2765}
2766 YY_BREAK
2767case 15:
2769#line 218 "dhcp4_lexer.ll"
2770{
2771 switch(driver.ctx_) {
2774 default:
2775 return isc::dhcp::Dhcp4Parser::make_STRING("lease-checks", driver.loc_);
2776 }
2777}
2778 YY_BREAK
2779case 16:
2781#line 227 "dhcp4_lexer.ll"
2782{
2783 switch(driver.ctx_) {
2786 default:
2787 return isc::dhcp::Dhcp4Parser::make_STRING("extended-info-checks", driver.loc_);
2788 }
2789}
2790 YY_BREAK
2791case 17:
2793#line 236 "dhcp4_lexer.ll"
2794{
2795 switch(driver.ctx_) {
2798 default:
2799 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-socket-type", driver.loc_);
2800 }
2801}
2802 YY_BREAK
2803case 18:
2805#line 245 "dhcp4_lexer.ll"
2806{
2807 switch(driver.ctx_) {
2809 return isc::dhcp::Dhcp4Parser::make_RAW(driver.loc_);
2810 default:
2811 return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_);
2812 }
2813}
2814 YY_BREAK
2815case 19:
2817#line 254 "dhcp4_lexer.ll"
2818{
2819 switch(driver.ctx_) {
2822 return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
2823 default:
2824 return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_);
2825 }
2826}
2827 YY_BREAK
2828case 20:
2830#line 264 "dhcp4_lexer.ll"
2831{
2832 switch(driver.ctx_) {
2835 default:
2836 return isc::dhcp::Dhcp4Parser::make_STRING("outbound-interface", driver.loc_);
2837 }
2838}
2839 YY_BREAK
2840case 21:
2842#line 273 "dhcp4_lexer.ll"
2843{
2844 switch(driver.ctx_) {
2846 return Dhcp4Parser::make_SAME_AS_INBOUND(driver.loc_);
2847 default:
2848 return Dhcp4Parser::make_STRING("same-as-inbound", driver.loc_);
2849 }
2850}
2851 YY_BREAK
2852case 22:
2854#line 282 "dhcp4_lexer.ll"
2855{
2856 switch(driver.ctx_) {
2858 return Dhcp4Parser::make_USE_ROUTING(driver.loc_);
2859 default:
2860 return Dhcp4Parser::make_STRING("use-routing", driver.loc_);
2861 }
2862}
2863 YY_BREAK
2864case 23:
2866#line 291 "dhcp4_lexer.ll"
2867{
2868 switch(driver.ctx_) {
2870 return isc::dhcp::Dhcp4Parser::make_INTERFACES(driver.loc_);
2871 default:
2872 return isc::dhcp::Dhcp4Parser::make_STRING("interfaces", driver.loc_);
2873 }
2874}
2875 YY_BREAK
2876case 24:
2878#line 300 "dhcp4_lexer.ll"
2879{
2880 switch(driver.ctx_) {
2882 return isc::dhcp::Dhcp4Parser::make_RE_DETECT(driver.loc_);
2883 default:
2884 return isc::dhcp::Dhcp4Parser::make_STRING("re-detect", driver.loc_);
2885 }
2886}
2887 YY_BREAK
2888case 25:
2890#line 309 "dhcp4_lexer.ll"
2891{
2892 switch(driver.ctx_) {
2895 default:
2896 return isc::dhcp::Dhcp4Parser::make_STRING("service-sockets-require-all", driver.loc_);
2897 }
2898}
2899 YY_BREAK
2900case 26:
2902#line 318 "dhcp4_lexer.ll"
2903{
2904 switch(driver.ctx_) {
2907 default:
2908 return isc::dhcp::Dhcp4Parser::make_STRING("service-sockets-retry-wait-time", driver.loc_);
2909 }
2910}
2911 YY_BREAK
2912case 27:
2914#line 327 "dhcp4_lexer.ll"
2915{
2916 switch(driver.ctx_) {
2919 default:
2920 return isc::dhcp::Dhcp4Parser::make_STRING("service-sockets-max-retries", driver.loc_);
2921 }
2922}
2923 YY_BREAK
2924case 28:
2926#line 336 "dhcp4_lexer.ll"
2927{
2928 switch(driver.ctx_) {
2931 default:
2932 return isc::dhcp::Dhcp4Parser::make_STRING("lease-database", driver.loc_);
2933 }
2934}
2935 YY_BREAK
2936case 29:
2938#line 345 "dhcp4_lexer.ll"
2939{
2940 switch(driver.ctx_) {
2943 default:
2944 return isc::dhcp::Dhcp4Parser::make_STRING("hosts-database", driver.loc_);
2945 }
2946}
2947 YY_BREAK
2948case 30:
2950#line 354 "dhcp4_lexer.ll"
2951{
2952 switch(driver.ctx_) {
2955 default:
2956 return isc::dhcp::Dhcp4Parser::make_STRING("hosts-databases", driver.loc_);
2957 }
2958}
2959 YY_BREAK
2960case 31:
2962#line 363 "dhcp4_lexer.ll"
2963{
2964 switch(driver.ctx_) {
2967 default:
2968 return isc::dhcp::Dhcp4Parser::make_STRING("config-control", driver.loc_);
2969 }
2970}
2971 YY_BREAK
2972case 32:
2974#line 372 "dhcp4_lexer.ll"
2975{
2976 switch(driver.ctx_) {
2979 default:
2980 return isc::dhcp::Dhcp4Parser::make_STRING("config-databases", driver.loc_);
2981 }
2982}
2983 YY_BREAK
2984case 33:
2986#line 381 "dhcp4_lexer.ll"
2987{
2988 switch(driver.ctx_) {
2991 default:
2992 return isc::dhcp::Dhcp4Parser::make_STRING("config-fetch-wait-time", driver.loc_);
2993 }
2994}
2995 YY_BREAK
2996case 34:
2998#line 390 "dhcp4_lexer.ll"
2999{
3000 switch(driver.ctx_) {
3002 return isc::dhcp::Dhcp4Parser::make_READONLY(driver.loc_);
3003 default:
3004 return isc::dhcp::Dhcp4Parser::make_STRING("readonly", driver.loc_);
3005 }
3006}
3007 YY_BREAK
3008case 35:
3010#line 399 "dhcp4_lexer.ll"
3011{
3012 switch(driver.ctx_) {
3017 return isc::dhcp::Dhcp4Parser::make_TYPE(driver.loc_);
3018 default:
3019 return isc::dhcp::Dhcp4Parser::make_STRING("type", driver.loc_);
3020 }
3021}
3022 YY_BREAK
3023case 36:
3025#line 411 "dhcp4_lexer.ll"
3026{
3027 switch(driver.ctx_) {
3029 return isc::dhcp::Dhcp4Parser::make_MEMFILE(driver.loc_);
3030 default:
3031 return isc::dhcp::Dhcp4Parser::make_STRING("memfile", driver.loc_);
3032 }
3033}
3034 YY_BREAK
3035case 37:
3037#line 420 "dhcp4_lexer.ll"
3038{
3039 switch(driver.ctx_) {
3041 return isc::dhcp::Dhcp4Parser::make_MYSQL(driver.loc_);
3042 default:
3043 return isc::dhcp::Dhcp4Parser::make_STRING("mysql", driver.loc_);
3044 }
3045}
3046 YY_BREAK
3047case 38:
3049#line 429 "dhcp4_lexer.ll"
3050{
3051 switch(driver.ctx_) {
3053 return isc::dhcp::Dhcp4Parser::make_POSTGRESQL(driver.loc_);
3054 default:
3055 return isc::dhcp::Dhcp4Parser::make_STRING("postgresql", driver.loc_);
3056 }
3057}
3058 YY_BREAK
3059case 39:
3061#line 438 "dhcp4_lexer.ll"
3062{
3063 switch(driver.ctx_) {
3067 return isc::dhcp::Dhcp4Parser::make_USER(driver.loc_);
3068 default:
3069 return isc::dhcp::Dhcp4Parser::make_STRING("user", driver.loc_);
3070 }
3071}
3072 YY_BREAK
3073case 40:
3075#line 449 "dhcp4_lexer.ll"
3076{
3077 switch(driver.ctx_) {
3081 return isc::dhcp::Dhcp4Parser::make_PASSWORD(driver.loc_);
3082 default:
3083 return isc::dhcp::Dhcp4Parser::make_STRING("password", driver.loc_);
3084 }
3085}
3086 YY_BREAK
3087case 41:
3089#line 460 "dhcp4_lexer.ll"
3090{
3091 switch(driver.ctx_) {
3095 return isc::dhcp::Dhcp4Parser::make_HOST(driver.loc_);
3096 default:
3097 return isc::dhcp::Dhcp4Parser::make_STRING("host", driver.loc_);
3098 }
3099}
3100 YY_BREAK
3101case 42:
3103#line 471 "dhcp4_lexer.ll"
3104{
3105 switch(driver.ctx_) {
3109 return isc::dhcp::Dhcp4Parser::make_PORT(driver.loc_);
3110 default:
3111 return isc::dhcp::Dhcp4Parser::make_STRING("port", driver.loc_);
3112 }
3113}
3114 YY_BREAK
3115case 43:
3117#line 482 "dhcp4_lexer.ll"
3118{
3119 switch(driver.ctx_) {
3123 return isc::dhcp::Dhcp4Parser::make_PERSIST(driver.loc_);
3124 default:
3125 return isc::dhcp::Dhcp4Parser::make_STRING("persist", driver.loc_);
3126 }
3127}
3128 YY_BREAK
3129case 44:
3131#line 493 "dhcp4_lexer.ll"
3132{
3133 switch(driver.ctx_) {
3138 default:
3139 return isc::dhcp::Dhcp4Parser::make_STRING("lfc-interval", driver.loc_);
3140 }
3141}
3142 YY_BREAK
3143case 45:
3145#line 504 "dhcp4_lexer.ll"
3146{
3147 switch(driver.ctx_) {
3152 default:
3153 return isc::dhcp::Dhcp4Parser::make_STRING("connect-timeout", driver.loc_);
3154 }
3155}
3156 YY_BREAK
3157case 46:
3159#line 515 "dhcp4_lexer.ll"
3160{
3161 switch(driver.ctx_) {
3166 default:
3167 return isc::dhcp::Dhcp4Parser::make_STRING("read-timeout", driver.loc_);
3168 }
3169}
3170 YY_BREAK
3171case 47:
3173#line 526 "dhcp4_lexer.ll"
3174{
3175 switch(driver.ctx_) {
3180 default:
3181 return isc::dhcp::Dhcp4Parser::make_STRING("write-timeout", driver.loc_);
3182 }
3183}
3184 YY_BREAK
3185case 48:
3187#line 537 "dhcp4_lexer.ll"
3188{
3189 switch(driver.ctx_) {
3194 default:
3195 return isc::dhcp::Dhcp4Parser::make_STRING("tcp-user-timeout", driver.loc_);
3196 }
3197}
3198 YY_BREAK
3199case 49:
3201#line 548 "dhcp4_lexer.ll"
3202{
3203 switch(driver.ctx_) {
3208 default:
3209 return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
3210 }
3211}
3212 YY_BREAK
3213case 50:
3215#line 559 "dhcp4_lexer.ll"
3216{
3217 switch(driver.ctx_) {
3221 return isc::dhcp::Dhcp4Parser::make_ON_FAIL(driver.loc_);
3222 default:
3223 return isc::dhcp::Dhcp4Parser::make_STRING("on-fail", driver.loc_);
3224 }
3225}
3226 YY_BREAK
3227case 51:
3229#line 570 "dhcp4_lexer.ll"
3230{
3231 switch(driver.ctx_) {
3234 default:
3235 return isc::dhcp::Dhcp4Parser::make_STRING("stop-retry-exit", driver.loc_);
3236 }
3237}
3238 YY_BREAK
3239case 52:
3241#line 579 "dhcp4_lexer.ll"
3242{
3243 switch(driver.ctx_) {
3246 default:
3247 return isc::dhcp::Dhcp4Parser::make_STRING("serve-retry-exit", driver.loc_);
3248 }
3249}
3250 YY_BREAK
3251case 53:
3253#line 588 "dhcp4_lexer.ll"
3254{
3255 switch(driver.ctx_) {
3258 default:
3259 return isc::dhcp::Dhcp4Parser::make_STRING("serve-retry-continue", driver.loc_);
3260 }
3261}
3262 YY_BREAK
3263case 54:
3265#line 597 "dhcp4_lexer.ll"
3266{
3267 switch(driver.ctx_) {
3272 default:
3273 return isc::dhcp::Dhcp4Parser::make_STRING("retry-on-startup", driver.loc_);
3274 }
3275}
3276 YY_BREAK
3277case 55:
3279#line 608 "dhcp4_lexer.ll"
3280{
3281 switch(driver.ctx_) {
3286 default:
3287 return isc::dhcp::Dhcp4Parser::make_STRING("max-reconnect-tries", driver.loc_);
3288 }
3289}
3290 YY_BREAK
3291case 56:
3293#line 619 "dhcp4_lexer.ll"
3294{
3295 switch(driver.ctx_) {
3298 default:
3299 return isc::dhcp::Dhcp4Parser::make_STRING("max-row-errors", driver.loc_);
3300 }
3301}
3302 YY_BREAK
3303case 57:
3305#line 628 "dhcp4_lexer.ll"
3306{
3307 switch(driver.ctx_) {
3312 default:
3313 return isc::dhcp::Dhcp4Parser::make_STRING("trust-anchor", driver.loc_);
3314 }
3315}
3316 YY_BREAK
3317case 58:
3319#line 639 "dhcp4_lexer.ll"
3320{
3321 switch(driver.ctx_) {
3325 return isc::dhcp::Dhcp4Parser::make_CERT_FILE(driver.loc_);
3326 default:
3327 return isc::dhcp::Dhcp4Parser::make_STRING("cert-file", driver.loc_);
3328 }
3329}
3330 YY_BREAK
3331case 59:
3333#line 650 "dhcp4_lexer.ll"
3334{
3335 switch(driver.ctx_) {
3339 return isc::dhcp::Dhcp4Parser::make_KEY_FILE(driver.loc_);
3340 default:
3341 return isc::dhcp::Dhcp4Parser::make_STRING("key-file", driver.loc_);
3342 }
3343}
3344 YY_BREAK
3345case 60:
3347#line 661 "dhcp4_lexer.ll"
3348{
3349 switch(driver.ctx_) {
3353 return isc::dhcp::Dhcp4Parser::make_CIPHER_LIST(driver.loc_);
3354 default:
3355 return isc::dhcp::Dhcp4Parser::make_STRING("cipher-list", driver.loc_);
3356 }
3357}
3358 YY_BREAK
3359case 61:
3361#line 672 "dhcp4_lexer.ll"
3362{
3363 switch(driver.ctx_) {
3369 default:
3370 return isc::dhcp::Dhcp4Parser::make_STRING("valid-lifetime", driver.loc_);
3371 }
3372}
3373 YY_BREAK
3374case 62:
3376#line 684 "dhcp4_lexer.ll"
3377{
3378 switch(driver.ctx_) {
3384 default:
3385 return isc::dhcp::Dhcp4Parser::make_STRING("min-valid-lifetime", driver.loc_);
3386 }
3387}
3388 YY_BREAK
3389case 63:
3391#line 696 "dhcp4_lexer.ll"
3392{
3393 switch(driver.ctx_) {
3399 default:
3400 return isc::dhcp::Dhcp4Parser::make_STRING("max-valid-lifetime", driver.loc_);
3401 }
3402}
3403 YY_BREAK
3404case 64:
3406#line 708 "dhcp4_lexer.ll"
3407{
3408 switch(driver.ctx_) {
3412 return isc::dhcp::Dhcp4Parser::make_RENEW_TIMER(driver.loc_);
3413 default:
3414 return isc::dhcp::Dhcp4Parser::make_STRING("renew-timer", driver.loc_);
3415 }
3416}
3417 YY_BREAK
3418case 65:
3420#line 719 "dhcp4_lexer.ll"
3421{
3422 switch(driver.ctx_) {
3427 default:
3428 return isc::dhcp::Dhcp4Parser::make_STRING("rebind-timer", driver.loc_);
3429 }
3430}
3431 YY_BREAK
3432case 66:
3434#line 730 "dhcp4_lexer.ll"
3435{
3436 switch(driver.ctx_) {
3439 default:
3440 return isc::dhcp::Dhcp4Parser::make_STRING("decline-probation-period", driver.loc_);
3441 }
3442}
3443 YY_BREAK
3444case 67:
3446#line 739 "dhcp4_lexer.ll"
3447{
3448 switch(driver.ctx_) {
3450 return isc::dhcp::Dhcp4Parser::make_SERVER_TAG(driver.loc_);
3451 default:
3452 return isc::dhcp::Dhcp4Parser::make_STRING("server-tag", driver.loc_);
3453 }
3454}
3455 YY_BREAK
3456case 68:
3458#line 748 "dhcp4_lexer.ll"
3459{
3460 switch(driver.ctx_) {
3463 default:
3464 return isc::dhcp::Dhcp4Parser::make_STRING("parked-packet-limit", driver.loc_);
3465 }
3466}
3467 YY_BREAK
3468case 69:
3470#line 757 "dhcp4_lexer.ll"
3471{
3472 switch(driver.ctx_) {
3476 return isc::dhcp::Dhcp4Parser::make_ALLOCATOR(driver.loc_);
3477 default:
3478 return isc::dhcp::Dhcp4Parser::make_STRING("allocator", driver.loc_);
3479 }
3480}
3481 YY_BREAK
3482case 70:
3484#line 768 "dhcp4_lexer.ll"
3485{
3486 switch(driver.ctx_) {
3489 default:
3490 return isc::dhcp::Dhcp4Parser::make_STRING("statistic-default-sample-count", driver.loc_);
3491 }
3492}
3493 YY_BREAK
3494case 71:
3496#line 777 "dhcp4_lexer.ll"
3497{
3498 switch(driver.ctx_) {
3501 default:
3502 return isc::dhcp::Dhcp4Parser::make_STRING("statistic-default-sample-age", driver.loc_);
3503 }
3504}
3505 YY_BREAK
3506case 72:
3508#line 786 "dhcp4_lexer.ll"
3509{
3510 switch(driver.ctx_) {
3515 default:
3516 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-send-updates", driver.loc_);
3517 }
3518}
3519 YY_BREAK
3520case 73:
3522#line 797 "dhcp4_lexer.ll"
3523{
3524 switch(driver.ctx_) {
3529 default:
3530 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-override-no-update", driver.loc_);
3531 }
3532}
3533 YY_BREAK
3534case 74:
3536#line 808 "dhcp4_lexer.ll"
3537{
3538 switch(driver.ctx_) {
3543 default:
3544 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-override-client-update", driver.loc_);
3545 }
3546}
3547 YY_BREAK
3548case 75:
3550#line 819 "dhcp4_lexer.ll"
3551{
3552 switch(driver.ctx_) {
3557 default:
3558 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-replace-client-name", driver.loc_);
3559 }
3560}
3561 YY_BREAK
3562case 76:
3564#line 830 "dhcp4_lexer.ll"
3565{
3566 switch(driver.ctx_) {
3571 default:
3572 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-generated-prefix", driver.loc_);
3573 }
3574}
3575 YY_BREAK
3576case 77:
3578#line 841 "dhcp4_lexer.ll"
3579{
3580 switch(driver.ctx_) {
3585 default:
3586 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-qualifying-suffix", driver.loc_);
3587 }
3588}
3589 YY_BREAK
3590case 78:
3592#line 852 "dhcp4_lexer.ll"
3593{
3594 switch(driver.ctx_) {
3599 default:
3600 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-update-on-renew", driver.loc_);
3601 }
3602}
3603 YY_BREAK
3604case 79:
3606#line 863 "dhcp4_lexer.ll"
3607{
3608 switch(driver.ctx_) {
3613 default:
3614 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
3615 }
3616}
3617 YY_BREAK
3618case 80:
3620#line 874 "dhcp4_lexer.ll"
3621{
3622 switch(driver.ctx_) {
3627 default:
3628 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-conflict-resolution-mode", driver.loc_);
3629 }
3630}
3631 YY_BREAK
3632case 81:
3634#line 885 "dhcp4_lexer.ll"
3635{
3638 }
3639 std::string tmp(yytext+1);
3640 tmp.resize(tmp.size() - 1);
3641 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3642}
3643 YY_BREAK
3644case 82:
3646#line 894 "dhcp4_lexer.ll"
3647{
3650 }
3651 std::string tmp(yytext+1);
3652 tmp.resize(tmp.size() - 1);
3653 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3654}
3655 YY_BREAK
3656case 83:
3658#line 903 "dhcp4_lexer.ll"
3659{
3662 }
3663 std::string tmp(yytext+1);
3664 tmp.resize(tmp.size() - 1);
3665 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3666}
3667 YY_BREAK
3668case 84:
3670#line 912 "dhcp4_lexer.ll"
3671{
3674 }
3675 std::string tmp(yytext+1);
3676 tmp.resize(tmp.size() - 1);
3677 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3678}
3679 YY_BREAK
3680case 85:
3682#line 922 "dhcp4_lexer.ll"
3683{
3684 switch(driver.ctx_) {
3689 default:
3690 return isc::dhcp::Dhcp4Parser::make_STRING("ddns-ttl-percent", driver.loc_);
3691 }
3692}
3693 YY_BREAK
3694case 86:
3696#line 933 "dhcp4_lexer.ll"
3697{
3698 switch(driver.ctx_) {
3701 return isc::dhcp::Dhcp4Parser::make_SUBNET4(driver.loc_);
3702 default:
3703 return isc::dhcp::Dhcp4Parser::make_STRING("subnet4", driver.loc_);
3704 }
3705}
3706 YY_BREAK
3707case 87:
3709#line 943 "dhcp4_lexer.ll"
3710{
3711 switch(driver.ctx_) {
3716 default:
3717 return isc::dhcp::Dhcp4Parser::make_STRING("store-extended-info", driver.loc_);
3718 }
3719}
3720 YY_BREAK
3721case 88:
3723#line 954 "dhcp4_lexer.ll"
3724{
3725 switch (driver.ctx_) {
3728 default:
3729 return isc::dhcp::Dhcp4Parser::make_STRING("shared-networks", driver.loc_);
3730 }
3731}
3732 YY_BREAK
3733case 89:
3735#line 963 "dhcp4_lexer.ll"
3736{
3737 switch(driver.ctx_) {
3740 return isc::dhcp::Dhcp4Parser::make_OPTION_DEF(driver.loc_);
3741 default:
3742 return isc::dhcp::Dhcp4Parser::make_STRING("option-def", driver.loc_);
3743 }
3744}
3745 YY_BREAK
3746case 90:
3748#line 973 "dhcp4_lexer.ll"
3749{
3750 switch(driver.ctx_) {
3757 return isc::dhcp::Dhcp4Parser::make_OPTION_DATA(driver.loc_);
3758 default:
3759 return isc::dhcp::Dhcp4Parser::make_STRING("option-data", driver.loc_);
3760 }
3761}
3762 YY_BREAK
3763case 91:
3765#line 987 "dhcp4_lexer.ll"
3766{
3767 switch(driver.ctx_) {
3776 return isc::dhcp::Dhcp4Parser::make_NAME(driver.loc_);
3777 default:
3778 return isc::dhcp::Dhcp4Parser::make_STRING("name", driver.loc_);
3779 }
3780}
3781 YY_BREAK
3782case 92:
3784#line 1003 "dhcp4_lexer.ll"
3785{
3786 switch(driver.ctx_) {
3788 return isc::dhcp::Dhcp4Parser::make_DATA(driver.loc_);
3789 default:
3790 return isc::dhcp::Dhcp4Parser::make_STRING("data", driver.loc_);
3791 }
3792}
3793 YY_BREAK
3794case 93:
3796#line 1012 "dhcp4_lexer.ll"
3797{
3798 switch(driver.ctx_) {
3800 return isc::dhcp::Dhcp4Parser::make_ALWAYS_SEND(driver.loc_);
3801 default:
3802 return isc::dhcp::Dhcp4Parser::make_STRING("always-send", driver.loc_);
3803 }
3804}
3805 YY_BREAK
3806case 94:
3808#line 1021 "dhcp4_lexer.ll"
3809{
3810 switch(driver.ctx_) {
3812 return isc::dhcp::Dhcp4Parser::make_NEVER_SEND(driver.loc_);
3813 default:
3814 return isc::dhcp::Dhcp4Parser::make_STRING("never-send", driver.loc_);
3815 }
3816}
3817 YY_BREAK
3818case 95:
3820#line 1030 "dhcp4_lexer.ll"
3821{
3822 switch(driver.ctx_) {
3824 return isc::dhcp::Dhcp4Parser::make_POOLS(driver.loc_);
3825 default:
3826 return isc::dhcp::Dhcp4Parser::make_STRING("pools", driver.loc_);
3827 }
3828}
3829 YY_BREAK
3830case 96:
3832#line 1039 "dhcp4_lexer.ll"
3833{
3834 switch(driver.ctx_) {
3836 return isc::dhcp::Dhcp4Parser::make_POOL(driver.loc_);
3837 default:
3838 return isc::dhcp::Dhcp4Parser::make_STRING("pool", driver.loc_);
3839 }
3840}
3841 YY_BREAK
3842case 97:
3844#line 1048 "dhcp4_lexer.ll"
3845{
3846 switch(driver.ctx_) {
3848 return isc::dhcp::Dhcp4Parser::make_POOL_ID(driver.loc_);
3849 default:
3850 return isc::dhcp::Dhcp4Parser::make_STRING("pool-id", driver.loc_);
3851 }
3852}
3853 YY_BREAK
3854case 98:
3856#line 1057 "dhcp4_lexer.ll"
3857{
3858 switch(driver.ctx_) {
3874 default:
3875 return isc::dhcp::Dhcp4Parser::make_STRING("user-context", driver.loc_);
3876 }
3877}
3878 YY_BREAK
3879case 99:
3881#line 1079 "dhcp4_lexer.ll"
3882{
3883 switch(driver.ctx_) {
3898 return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_);
3899 default:
3900 return isc::dhcp::Dhcp4Parser::make_STRING("comment", driver.loc_);
3901 }
3902}
3903 YY_BREAK
3904case 100:
3906#line 1101 "dhcp4_lexer.ll"
3907{
3908 switch(driver.ctx_) {
3910 return isc::dhcp::Dhcp4Parser::make_SUBNET(driver.loc_);
3911 default:
3912 return isc::dhcp::Dhcp4Parser::make_STRING("subnet", driver.loc_);
3913 }
3914}
3915 YY_BREAK
3916case 101:
3918#line 1110 "dhcp4_lexer.ll"
3919{
3920 switch(driver.ctx_) {
3923 return isc::dhcp::Dhcp4Parser::make_INTERFACE(driver.loc_);
3924 default:
3925 return isc::dhcp::Dhcp4Parser::make_STRING("interface", driver.loc_);
3926 }
3927}
3928 YY_BREAK
3929case 102:
3931#line 1120 "dhcp4_lexer.ll"
3932{
3933 switch(driver.ctx_) {
3935 return isc::dhcp::Dhcp4Parser::make_ID(driver.loc_);
3936 default:
3937 return isc::dhcp::Dhcp4Parser::make_STRING("id", driver.loc_);
3938 }
3939}
3940 YY_BREAK
3941case 103:
3943#line 1129 "dhcp4_lexer.ll"
3944{
3945 switch(driver.ctx_) {
3950 default:
3951 return isc::dhcp::Dhcp4Parser::make_STRING("reservations-global", driver.loc_);
3952 }
3953}
3954 YY_BREAK
3955case 104:
3957#line 1140 "dhcp4_lexer.ll"
3958{
3959 switch(driver.ctx_) {
3964 default:
3965 return isc::dhcp::Dhcp4Parser::make_STRING("reservations-in-subnet", driver.loc_);
3966 }
3967}
3968 YY_BREAK
3969case 105:
3971#line 1151 "dhcp4_lexer.ll"
3972{
3973 switch(driver.ctx_) {
3978 default:
3979 return isc::dhcp::Dhcp4Parser::make_STRING("reservations-out-of-pool", driver.loc_);
3980 }
3981}
3982 YY_BREAK
3983case 106:
3985#line 1162 "dhcp4_lexer.ll"
3986{
3987 switch(driver.ctx_) {
3990 return isc::dhcp::Dhcp4Parser::make_CODE(driver.loc_);
3991 default:
3992 return isc::dhcp::Dhcp4Parser::make_STRING("code", driver.loc_);
3993 }
3994}
3995 YY_BREAK
3996case 107:
3998#line 1172 "dhcp4_lexer.ll"
3999{
4000 switch(driver.ctx_) {
4003 default:
4004 return isc::dhcp::Dhcp4Parser::make_STRING("host-reservation-identifiers", driver.loc_);
4005 }
4006}
4007 YY_BREAK
4008case 108:
4010#line 1181 "dhcp4_lexer.ll"
4011{
4012 switch(driver.ctx_) {
4017 default:
4018 return isc::dhcp::Dhcp4Parser::make_STRING("calculate-tee-times", driver.loc_);
4019 }
4020}
4021 YY_BREAK
4022case 109:
4024#line 1192 "dhcp4_lexer.ll"
4025{
4026 switch(driver.ctx_) {
4030 return isc::dhcp::Dhcp4Parser::make_T1_PERCENT(driver.loc_);
4031 default:
4032 return isc::dhcp::Dhcp4Parser::make_STRING("t1-percent", driver.loc_);
4033 }
4034}
4035 YY_BREAK
4036case 110:
4038#line 1203 "dhcp4_lexer.ll"
4039{
4040 switch(driver.ctx_) {
4044 return isc::dhcp::Dhcp4Parser::make_T2_PERCENT(driver.loc_);
4045 default:
4046 return isc::dhcp::Dhcp4Parser::make_STRING("t2-percent", driver.loc_);
4047 }
4048}
4049 YY_BREAK
4050case 111:
4052#line 1214 "dhcp4_lexer.ll"
4053{
4054 switch(driver.ctx_) {
4059 default:
4060 return isc::dhcp::Dhcp4Parser::make_STRING("cache-threshold", driver.loc_);
4061 }
4062}
4063 YY_BREAK
4064case 112:
4066#line 1225 "dhcp4_lexer.ll"
4067{
4068 switch(driver.ctx_) {
4073 default:
4074 return isc::dhcp::Dhcp4Parser::make_STRING("cache-max-age", driver.loc_);
4075 }
4076}
4077 YY_BREAK
4078case 113:
4080#line 1237 "dhcp4_lexer.ll"
4081{
4082 switch(driver.ctx_) {
4084 return isc::dhcp::Dhcp4Parser::make_LOGGERS(driver.loc_);
4085 default:
4086 return isc::dhcp::Dhcp4Parser::make_STRING("loggers", driver.loc_);
4087 }
4088}
4089 YY_BREAK
4090case 114:
4092#line 1246 "dhcp4_lexer.ll"
4093{
4094 switch(driver.ctx_) {
4097 default:
4098 return isc::dhcp::Dhcp4Parser::make_STRING("output_options", driver.loc_);
4099 }
4100}
4101 YY_BREAK
4102case 115:
4104#line 1255 "dhcp4_lexer.ll"
4105{
4106 switch(driver.ctx_) {
4109 default:
4110 return isc::dhcp::Dhcp4Parser::make_STRING("output-options", driver.loc_);
4111 }
4112}
4113 YY_BREAK
4114case 116:
4116#line 1264 "dhcp4_lexer.ll"
4117{
4118 switch(driver.ctx_) {
4120 return isc::dhcp::Dhcp4Parser::make_OUTPUT(driver.loc_);
4121 default:
4122 return isc::dhcp::Dhcp4Parser::make_STRING("output", driver.loc_);
4123 }
4124}
4125 YY_BREAK
4126case 117:
4128#line 1273 "dhcp4_lexer.ll"
4129{
4130 switch(driver.ctx_) {
4132 return isc::dhcp::Dhcp4Parser::make_DEBUGLEVEL(driver.loc_);
4133 default:
4134 return isc::dhcp::Dhcp4Parser::make_STRING("debuglevel", driver.loc_);
4135 }
4136}
4137 YY_BREAK
4138case 118:
4140#line 1282 "dhcp4_lexer.ll"
4141{
4142 switch(driver.ctx_) {
4144 return isc::dhcp::Dhcp4Parser::make_FLUSH(driver.loc_);
4145 default:
4146 return isc::dhcp::Dhcp4Parser::make_STRING("flush", driver.loc_);
4147 }
4148}
4149 YY_BREAK
4150case 119:
4152#line 1291 "dhcp4_lexer.ll"
4153{
4154 switch(driver.ctx_) {
4156 return isc::dhcp::Dhcp4Parser::make_MAXSIZE(driver.loc_);
4157 default:
4158 return isc::dhcp::Dhcp4Parser::make_STRING("maxsize", driver.loc_);
4159 }
4160}
4161 YY_BREAK
4162case 120:
4164#line 1300 "dhcp4_lexer.ll"
4165{
4166 switch(driver.ctx_) {
4168 return isc::dhcp::Dhcp4Parser::make_MAXVER(driver.loc_);
4169 default:
4170 return isc::dhcp::Dhcp4Parser::make_STRING("maxver", driver.loc_);
4171 }
4172}
4173 YY_BREAK
4174case 121:
4176#line 1309 "dhcp4_lexer.ll"
4177{
4178 switch(driver.ctx_) {
4180 return isc::dhcp::Dhcp4Parser::make_PATTERN(driver.loc_);
4181 default:
4182 return isc::dhcp::Dhcp4Parser::make_STRING("pattern", driver.loc_);
4183 }
4184}
4185 YY_BREAK
4186case 122:
4188#line 1318 "dhcp4_lexer.ll"
4189{
4190 switch(driver.ctx_) {
4192 return isc::dhcp::Dhcp4Parser::make_SEVERITY(driver.loc_);
4193 default:
4194 return isc::dhcp::Dhcp4Parser::make_STRING("severity", driver.loc_);
4195 }
4196}
4197 YY_BREAK
4198case 123:
4200#line 1327 "dhcp4_lexer.ll"
4201{
4202 switch(driver.ctx_) {
4206 default:
4207 return isc::dhcp::Dhcp4Parser::make_STRING("client-classes", driver.loc_);
4208 }
4209}
4210 YY_BREAK
4211case 124:
4213#line 1337 "dhcp4_lexer.ll"
4214{
4215 switch(driver.ctx_) {
4220 default:
4221 return isc::dhcp::Dhcp4Parser::make_STRING("require-client-classes", driver.loc_);
4222 }
4223}
4224 YY_BREAK
4225case 125:
4227#line 1348 "dhcp4_lexer.ll"
4228{
4229 switch(driver.ctx_) {
4235 default:
4236 return isc::dhcp::Dhcp4Parser::make_STRING("client-class", driver.loc_);
4237 }
4238}
4239 YY_BREAK
4240case 126:
4242#line 1360 "dhcp4_lexer.ll"
4243{
4244 switch(driver.ctx_) {
4246 return isc::dhcp::Dhcp4Parser::make_TEST(driver.loc_);
4247 default:
4248 return isc::dhcp::Dhcp4Parser::make_STRING("test", driver.loc_);
4249 }
4250}
4251 YY_BREAK
4252case 127:
4254#line 1369 "dhcp4_lexer.ll"
4255{
4256 switch(driver.ctx_) {
4259 default:
4260 return isc::dhcp::Dhcp4Parser::make_STRING("template-test", driver.loc_);
4261 }
4262}
4263 YY_BREAK
4264case 128:
4266#line 1378 "dhcp4_lexer.ll"
4267{
4268 switch(driver.ctx_) {
4271 default:
4272 return isc::dhcp::Dhcp4Parser::make_STRING("only-if-required", driver.loc_);
4273 }
4274}
4275 YY_BREAK
4276case 129:
4278#line 1387 "dhcp4_lexer.ll"
4279{
4280 switch(driver.ctx_) {
4284 default:
4285 return isc::dhcp::Dhcp4Parser::make_STRING("reservations", driver.loc_);
4286 }
4287}
4288 YY_BREAK
4289case 130:
4291#line 1397 "dhcp4_lexer.ll"
4292{
4293 switch(driver.ctx_) {
4296 return isc::dhcp::Dhcp4Parser::make_DUID(driver.loc_);
4297 default:
4298 return isc::dhcp::Dhcp4Parser::make_STRING("duid", driver.loc_);
4299 }
4300}
4301 YY_BREAK
4302case 131:
4304#line 1407 "dhcp4_lexer.ll"
4305{
4306 switch(driver.ctx_) {
4309 return isc::dhcp::Dhcp4Parser::make_HW_ADDRESS(driver.loc_);
4310 default:
4311 return isc::dhcp::Dhcp4Parser::make_STRING("hw-address", driver.loc_);
4312 }
4313}
4314 YY_BREAK
4315case 132:
4317#line 1417 "dhcp4_lexer.ll"
4318{
4319 switch(driver.ctx_) {
4322 return isc::dhcp::Dhcp4Parser::make_CLIENT_ID(driver.loc_);
4323 default:
4324 return isc::dhcp::Dhcp4Parser::make_STRING("client-id", driver.loc_);
4325 }
4326}
4327 YY_BREAK
4328case 133:
4330#line 1427 "dhcp4_lexer.ll"
4331{
4332 switch(driver.ctx_) {
4335 return isc::dhcp::Dhcp4Parser::make_CIRCUIT_ID(driver.loc_);
4336 default:
4337 return isc::dhcp::Dhcp4Parser::make_STRING("circuit-id", driver.loc_);
4338 }
4339}
4340 YY_BREAK
4341case 134:
4343#line 1437 "dhcp4_lexer.ll"
4344{
4345 switch(driver.ctx_) {
4348 return isc::dhcp::Dhcp4Parser::make_FLEX_ID(driver.loc_);
4349 default:
4350 return isc::dhcp::Dhcp4Parser::make_STRING("flex-id", driver.loc_);
4351 }
4352}
4353 YY_BREAK
4354case 135:
4356#line 1447 "dhcp4_lexer.ll"
4357{
4358 switch(driver.ctx_) {
4360 return isc::dhcp::Dhcp4Parser::make_HOSTNAME(driver.loc_);
4361 default:
4362 return isc::dhcp::Dhcp4Parser::make_STRING("hostname", driver.loc_);
4363 }
4364}
4365 YY_BREAK
4366case 136:
4368#line 1456 "dhcp4_lexer.ll"
4369{
4370 switch(driver.ctx_) {
4373 return isc::dhcp::Dhcp4Parser::make_SPACE(driver.loc_);
4374 default:
4375 return isc::dhcp::Dhcp4Parser::make_STRING("space", driver.loc_);
4376 }
4377}
4378 YY_BREAK
4379case 137:
4381#line 1466 "dhcp4_lexer.ll"
4382{
4383 switch(driver.ctx_) {
4385 return isc::dhcp::Dhcp4Parser::make_CSV_FORMAT(driver.loc_);
4386 default:
4387 return isc::dhcp::Dhcp4Parser::make_STRING("csv-format", driver.loc_);
4388 }
4389}
4390 YY_BREAK
4391case 138:
4393#line 1475 "dhcp4_lexer.ll"
4394{
4395 switch(driver.ctx_) {
4398 default:
4399 return isc::dhcp::Dhcp4Parser::make_STRING("record-types", driver.loc_);
4400 }
4401}
4402 YY_BREAK
4403case 139:
4405#line 1484 "dhcp4_lexer.ll"
4406{
4407 switch(driver.ctx_) {
4409 return isc::dhcp::Dhcp4Parser::make_ENCAPSULATE(driver.loc_);
4410 default:
4411 return isc::dhcp::Dhcp4Parser::make_STRING("encapsulate", driver.loc_);
4412 }
4413}
4414 YY_BREAK
4415case 140:
4417#line 1493 "dhcp4_lexer.ll"
4418{
4419 switch(driver.ctx_) {
4421 return isc::dhcp::Dhcp4Parser::make_ARRAY(driver.loc_);
4422 default:
4423 return isc::dhcp::Dhcp4Parser::make_STRING("array", driver.loc_);
4424 }
4425}
4426 YY_BREAK
4427case 141:
4429#line 1502 "dhcp4_lexer.ll"
4430{
4431 switch(driver.ctx_) {
4434 return isc::dhcp::Dhcp4Parser::make_RELAY(driver.loc_);
4435 default:
4436 return isc::dhcp::Dhcp4Parser::make_STRING("relay", driver.loc_);
4437 }
4438}
4439 YY_BREAK
4440case 142:
4442#line 1512 "dhcp4_lexer.ll"
4443{
4444 switch(driver.ctx_) {
4446 return isc::dhcp::Dhcp4Parser::make_IP_ADDRESS(driver.loc_);
4447 default:
4448 return isc::dhcp::Dhcp4Parser::make_STRING("ip-address", driver.loc_);
4449 }
4450}
4451 YY_BREAK
4452case 143:
4454#line 1521 "dhcp4_lexer.ll"
4455{
4456 switch(driver.ctx_) {
4459 default:
4460 return isc::dhcp::Dhcp4Parser::make_STRING("ip-addresses", driver.loc_);
4461 }
4462}
4463 YY_BREAK
4464case 144:
4466#line 1530 "dhcp4_lexer.ll"
4467{
4468 switch(driver.ctx_) {
4471 default:
4472 return isc::dhcp::Dhcp4Parser::make_STRING("hooks-libraries", driver.loc_);
4473 }
4474}
4475 YY_BREAK
4476case 145:
4478#line 1540 "dhcp4_lexer.ll"
4479{
4480 switch(driver.ctx_) {
4482 return isc::dhcp::Dhcp4Parser::make_PARAMETERS(driver.loc_);
4483 default:
4484 return isc::dhcp::Dhcp4Parser::make_STRING("parameters", driver.loc_);
4485 }
4486}
4487 YY_BREAK
4488case 146:
4490#line 1549 "dhcp4_lexer.ll"
4491{
4492 switch(driver.ctx_) {
4494 return isc::dhcp::Dhcp4Parser::make_LIBRARY(driver.loc_);
4495 default:
4496 return isc::dhcp::Dhcp4Parser::make_STRING("library", driver.loc_);
4497 }
4498}
4499 YY_BREAK
4500case 147:
4502#line 1558 "dhcp4_lexer.ll"
4503{
4504 switch(driver.ctx_) {
4507 default:
4508 return isc::dhcp::Dhcp4Parser::make_STRING("expired-leases-processing", driver.loc_);
4509 }
4510}
4511 YY_BREAK
4512case 148:
4514#line 1567 "dhcp4_lexer.ll"
4515{
4516 switch(driver.ctx_) {
4519 default:
4520 return isc::dhcp::Dhcp4Parser::make_STRING("reclaim-timer-wait-time", driver.loc_);
4521 }
4522}
4523 YY_BREAK
4524case 149:
4526#line 1576 "dhcp4_lexer.ll"
4527{
4528 switch(driver.ctx_) {
4531 default:
4532 return isc::dhcp::Dhcp4Parser::make_STRING("flush-reclaimed-timer-wait-time", driver.loc_);
4533 }
4534}
4535 YY_BREAK
4536case 150:
4538#line 1585 "dhcp4_lexer.ll"
4539{
4540 switch(driver.ctx_) {
4543 default:
4544 return isc::dhcp::Dhcp4Parser::make_STRING("hold-reclaimed-time", driver.loc_);
4545 }
4546}
4547 YY_BREAK
4548case 151:
4550#line 1594 "dhcp4_lexer.ll"
4551{
4552 switch(driver.ctx_) {
4555 default:
4556 return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-leases", driver.loc_);
4557 }
4558}
4559 YY_BREAK
4560case 152:
4562#line 1603 "dhcp4_lexer.ll"
4563{
4564 switch(driver.ctx_) {
4567 default:
4568 return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-time", driver.loc_);
4569 }
4570}
4571 YY_BREAK
4572case 153:
4574#line 1612 "dhcp4_lexer.ll"
4575{
4576 switch(driver.ctx_) {
4579 default:
4580 return isc::dhcp::Dhcp4Parser::make_STRING("unwarned-reclaim-cycles", driver.loc_);
4581 }
4582}
4583 YY_BREAK
4584case 154:
4586#line 1621 "dhcp4_lexer.ll"
4587{
4588 switch(driver.ctx_) {
4591 default:
4592 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp4o6-port", driver.loc_);
4593 }
4594}
4595 YY_BREAK
4596case 155:
4598#line 1630 "dhcp4_lexer.ll"
4599{
4600 switch(driver.ctx_) {
4603 default:
4604 return isc::dhcp::Dhcp4Parser::make_STRING("multi-threading", driver.loc_);
4605 }
4606}
4607 YY_BREAK
4608case 156:
4610#line 1639 "dhcp4_lexer.ll"
4611{
4612 switch(driver.ctx_) {
4615 default:
4616 return isc::dhcp::Dhcp4Parser::make_STRING("enable-multi-threading", driver.loc_);
4617 }
4618}
4619 YY_BREAK
4620case 157:
4622#line 1648 "dhcp4_lexer.ll"
4623{
4624 switch(driver.ctx_) {
4627 default:
4628 return isc::dhcp::Dhcp4Parser::make_STRING("thread-pool-size", driver.loc_);
4629 }
4630}
4631 YY_BREAK
4632case 158:
4634#line 1657 "dhcp4_lexer.ll"
4635{
4636 switch(driver.ctx_) {
4639 default:
4640 return isc::dhcp::Dhcp4Parser::make_STRING("packet-queue-size", driver.loc_);
4641 }
4642}
4643 YY_BREAK
4644case 159:
4646#line 1666 "dhcp4_lexer.ll"
4647{
4648 switch(driver.ctx_) {
4651 default:
4652 return isc::dhcp::Dhcp4Parser::make_STRING("control-socket", driver.loc_);
4653 }
4654}
4655 YY_BREAK
4656case 160:
4658#line 1675 "dhcp4_lexer.ll"
4659{
4660 switch(driver.ctx_) {
4662 return isc::dhcp::Dhcp4Parser::make_SOCKET_TYPE(driver.loc_);
4663 default:
4664 return isc::dhcp::Dhcp4Parser::make_STRING("socket-type", driver.loc_);
4665 }
4666}
4667 YY_BREAK
4668case 161:
4670#line 1684 "dhcp4_lexer.ll"
4671{
4672 switch(driver.ctx_) {
4674 return isc::dhcp::Dhcp4Parser::make_SOCKET_NAME(driver.loc_);
4675 default:
4676 return isc::dhcp::Dhcp4Parser::make_STRING("socket-name", driver.loc_);
4677 }
4678}
4679 YY_BREAK
4680case 162:
4682#line 1693 "dhcp4_lexer.ll"
4683{
4684 switch(driver.ctx_) {
4687 default:
4688 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_);
4689 }
4690}
4691 YY_BREAK
4692case 163:
4694#line 1702 "dhcp4_lexer.ll"
4695{
4696 switch(driver.ctx_) {
4699 default:
4700 return isc::dhcp::Dhcp4Parser::make_STRING("enable-queue", driver.loc_);
4701 }
4702}
4703 YY_BREAK
4704case 164:
4706#line 1711 "dhcp4_lexer.ll"
4707{
4708 switch(driver.ctx_) {
4710 return isc::dhcp::Dhcp4Parser::make_QUEUE_TYPE(driver.loc_);
4711 default:
4712 return isc::dhcp::Dhcp4Parser::make_STRING("queue-type", driver.loc_);
4713 }
4714}
4715 YY_BREAK
4716case 165:
4718#line 1720 "dhcp4_lexer.ll"
4719{
4720 switch(driver.ctx_) {
4722 return isc::dhcp::Dhcp4Parser::make_CAPACITY(driver.loc_);
4723 default:
4724 return isc::dhcp::Dhcp4Parser::make_STRING("capacity", driver.loc_);
4725 }
4726}
4727 YY_BREAK
4728case 166:
4730#line 1729 "dhcp4_lexer.ll"
4731{
4732 switch(driver.ctx_) {
4734 return isc::dhcp::Dhcp4Parser::make_DHCP_DDNS(driver.loc_);
4735 default:
4736 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-ddns", driver.loc_);
4737 }
4738}
4739 YY_BREAK
4740case 167:
4742#line 1738 "dhcp4_lexer.ll"
4743{
4744 switch(driver.ctx_) {
4747 default:
4748 return isc::dhcp::Dhcp4Parser::make_STRING("enable-updates", driver.loc_);
4749 }
4750}
4751 YY_BREAK
4752case 168:
4754#line 1747 "dhcp4_lexer.ll"
4755{
4756 switch(driver.ctx_) {
4758 return isc::dhcp::Dhcp4Parser::make_SERVER_IP(driver.loc_);
4759 default:
4760 return isc::dhcp::Dhcp4Parser::make_STRING("server-ip", driver.loc_);
4761 }
4762}
4763 YY_BREAK
4764case 169:
4766#line 1756 "dhcp4_lexer.ll"
4767{
4768 switch(driver.ctx_) {
4770 return isc::dhcp::Dhcp4Parser::make_SERVER_PORT(driver.loc_);
4771 default:
4772 return isc::dhcp::Dhcp4Parser::make_STRING("server-port", driver.loc_);
4773 }
4774}
4775 YY_BREAK
4776case 170:
4778#line 1765 "dhcp4_lexer.ll"
4779{
4780 switch(driver.ctx_) {
4782 return isc::dhcp::Dhcp4Parser::make_SENDER_IP(driver.loc_);
4783 default:
4784 return isc::dhcp::Dhcp4Parser::make_STRING("sender-ip", driver.loc_);
4785 }
4786}
4787 YY_BREAK
4788case 171:
4790#line 1774 "dhcp4_lexer.ll"
4791{
4792 switch(driver.ctx_) {
4794 return isc::dhcp::Dhcp4Parser::make_SENDER_PORT(driver.loc_);
4795 default:
4796 return isc::dhcp::Dhcp4Parser::make_STRING("sender-port", driver.loc_);
4797 }
4798}
4799 YY_BREAK
4800case 172:
4802#line 1783 "dhcp4_lexer.ll"
4803{
4804 switch(driver.ctx_) {
4807 default:
4808 return isc::dhcp::Dhcp4Parser::make_STRING("max-queue-size", driver.loc_);
4809 }
4810}
4811 YY_BREAK
4812case 173:
4814#line 1792 "dhcp4_lexer.ll"
4815{
4816 switch(driver.ctx_) {
4819 default:
4820 return isc::dhcp::Dhcp4Parser::make_STRING("ncr-protocol", driver.loc_);
4821 }
4822}
4823 YY_BREAK
4824case 174:
4826#line 1801 "dhcp4_lexer.ll"
4827{
4828 switch(driver.ctx_) {
4830 return isc::dhcp::Dhcp4Parser::make_NCR_FORMAT(driver.loc_);
4831 default:
4832 return isc::dhcp::Dhcp4Parser::make_STRING("ncr-format", driver.loc_);
4833 }
4834}
4835 YY_BREAK
4836case 175:
4838#line 1810 "dhcp4_lexer.ll"
4839{
4840 switch(driver.ctx_) {
4845 default:
4846 return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-set", driver.loc_);
4847 }
4848}
4849 YY_BREAK
4850case 176:
4852#line 1821 "dhcp4_lexer.ll"
4853{
4854 switch(driver.ctx_) {
4859 default:
4860 return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-replacement", driver.loc_);
4861 }
4862}
4863 YY_BREAK
4864case 177:
4866#line 1832 "dhcp4_lexer.ll"
4867{
4868 /* dhcp-ddns value keywords are case insensitive */
4869 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
4870 return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
4871 }
4872 std::string tmp(yytext+1);
4873 tmp.resize(tmp.size() - 1);
4874 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4875}
4876 YY_BREAK
4877case 178:
4879#line 1842 "dhcp4_lexer.ll"
4880{
4881 /* dhcp-ddns value keywords are case insensitive */
4882 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
4883 return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_);
4884 }
4885 std::string tmp(yytext+1);
4886 tmp.resize(tmp.size() - 1);
4887 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4888}
4889 YY_BREAK
4890case 179:
4892#line 1852 "dhcp4_lexer.ll"
4893{
4894 /* dhcp-ddns value keywords are case insensitive */
4895 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
4896 return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
4897 }
4898 std::string tmp(yytext+1);
4899 tmp.resize(tmp.size() - 1);
4900 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4901}
4902 YY_BREAK
4903case 180:
4905#line 1862 "dhcp4_lexer.ll"
4906{
4907 /* dhcp-ddns value keywords are case insensitive */
4910 }
4911 std::string tmp(yytext+1);
4912 tmp.resize(tmp.size() - 1);
4913 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4914}
4915 YY_BREAK
4916case 181:
4918#line 1872 "dhcp4_lexer.ll"
4919{
4920 /* dhcp-ddns value keywords are case insensitive */
4923 }
4924 std::string tmp(yytext+1);
4925 tmp.resize(tmp.size() - 1);
4926 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4927}
4928 YY_BREAK
4929case 182:
4931#line 1882 "dhcp4_lexer.ll"
4932{
4933 /* dhcp-ddns value keywords are case insensitive */
4935 return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
4936 }
4937 std::string tmp(yytext+1);
4938 tmp.resize(tmp.size() - 1);
4939 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4940}
4941 YY_BREAK
4942case 183:
4944#line 1892 "dhcp4_lexer.ll"
4945{
4946 /* dhcp-ddns value keywords are case insensitive */
4948 return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
4949 }
4950 std::string tmp(yytext+1);
4951 tmp.resize(tmp.size() - 1);
4952 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4953}
4954 YY_BREAK
4955case 184:
4957#line 1902 "dhcp4_lexer.ll"
4958{
4959 /* dhcp-ddns value keywords are case insensitive */
4961 return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
4962 }
4963 std::string tmp(yytext+1);
4964 tmp.resize(tmp.size() - 1);
4965 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4966}
4967 YY_BREAK
4968case 185:
4970#line 1912 "dhcp4_lexer.ll"
4971{
4972 /* dhcp-ddns value keywords are case insensitive */
4975 }
4976 std::string tmp(yytext+1);
4977 tmp.resize(tmp.size() - 1);
4978 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4979}
4980 YY_BREAK
4981case 186:
4983#line 1922 "dhcp4_lexer.ll"
4984{
4985 switch(driver.ctx_) {
4988 default:
4989 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface", driver.loc_);
4990 }
4991}
4992 YY_BREAK
4993case 187:
4995#line 1931 "dhcp4_lexer.ll"
4996{
4997 switch(driver.ctx_) {
5000 default:
5001 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface-id", driver.loc_);
5002 }
5003}
5004 YY_BREAK
5005case 188:
5007#line 1940 "dhcp4_lexer.ll"
5008{
5009 switch(driver.ctx_) {
5012 default:
5013 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-subnet", driver.loc_);
5014 }
5015}
5016 YY_BREAK
5017case 189:
5019#line 1949 "dhcp4_lexer.ll"
5020{
5021 switch(driver.ctx_) {
5024 default:
5025 return isc::dhcp::Dhcp4Parser::make_STRING("echo-client-id", driver.loc_);
5026 }
5027}
5028 YY_BREAK
5029case 190:
5031#line 1958 "dhcp4_lexer.ll"
5032{
5033 switch(driver.ctx_) {
5038 default:
5039 return isc::dhcp::Dhcp4Parser::make_STRING("match-client-id", driver.loc_);
5040 }
5041}
5042 YY_BREAK
5043case 191:
5045#line 1969 "dhcp4_lexer.ll"
5046{
5047 switch(driver.ctx_) {
5052 default:
5053 return isc::dhcp::Dhcp4Parser::make_STRING("authoritative", driver.loc_);
5054 }
5055}
5056 YY_BREAK
5057case 192:
5059#line 1980 "dhcp4_lexer.ll"
5060{
5061 switch(driver.ctx_) {
5067 return isc::dhcp::Dhcp4Parser::make_NEXT_SERVER(driver.loc_);
5068 default:
5069 return isc::dhcp::Dhcp4Parser::make_STRING("next-server", driver.loc_);
5070 }
5071}
5072 YY_BREAK
5073case 193:
5075#line 1993 "dhcp4_lexer.ll"
5076{
5077 switch(driver.ctx_) {
5084 default:
5085 return isc::dhcp::Dhcp4Parser::make_STRING("server-hostname", driver.loc_);
5086 }
5087}
5088 YY_BREAK
5089case 194:
5091#line 2006 "dhcp4_lexer.ll"
5092{
5093 switch(driver.ctx_) {
5100 default:
5101 return isc::dhcp::Dhcp4Parser::make_STRING("boot-file-name", driver.loc_);
5102 }
5103}
5104 YY_BREAK
5105case 195:
5107#line 2019 "dhcp4_lexer.ll"
5108{
5109 switch(driver.ctx_) {
5112 default:
5113 return isc::dhcp::Dhcp4Parser::make_STRING("early-global-reservations-lookup", driver.loc_);
5114 }
5115}
5116 YY_BREAK
5117case 196:
5119#line 2028 "dhcp4_lexer.ll"
5120{
5121 switch(driver.ctx_) {
5124 default:
5125 return isc::dhcp::Dhcp4Parser::make_STRING("ip-reservations-unique", driver.loc_);
5126 }
5127}
5128 YY_BREAK
5129case 197:
5131#line 2037 "dhcp4_lexer.ll"
5132{
5133 switch(driver.ctx_) {
5136 default:
5137 return isc::dhcp::Dhcp4Parser::make_STRING("reservations-lookup-first", driver.loc_);
5138 }
5139}
5140 YY_BREAK
5141case 198:
5143#line 2046 "dhcp4_lexer.ll"
5144{
5145 switch(driver.ctx_) {
5148 default:
5149 return isc::dhcp::Dhcp4Parser::make_STRING("compatibility", driver.loc_);
5150 }
5151}
5152 YY_BREAK
5153case 199:
5155#line 2055 "dhcp4_lexer.ll"
5156{
5157 switch(driver.ctx_) {
5160 default:
5161 return isc::dhcp::Dhcp4Parser::make_STRING("lenient-option-parsing", driver.loc_);
5162 }
5163}
5164 YY_BREAK
5165case 200:
5167#line 2064 "dhcp4_lexer.ll"
5168{
5169 switch(driver.ctx_) {
5172 default:
5173 return isc::dhcp::Dhcp4Parser::make_STRING("ignore-dhcp-server-identifier", driver.loc_);
5174 }
5175}
5176 YY_BREAK
5177case 201:
5179#line 2073 "dhcp4_lexer.ll"
5180{
5181 switch(driver.ctx_) {
5184 default:
5185 return isc::dhcp::Dhcp4Parser::make_STRING("ignore-rai-link-selection", driver.loc_);
5186 }
5187}
5188 YY_BREAK
5189case 202:
5191#line 2082 "dhcp4_lexer.ll"
5192{
5193 switch(driver.ctx_) {
5196 default:
5197 return isc::dhcp::Dhcp4Parser::make_STRING("exclude-first-last-24", driver.loc_);
5198 }
5199}
5200 YY_BREAK
5201case 203:
5203#line 2091 "dhcp4_lexer.ll"
5204{
5205 switch(driver.ctx_) {
5210 return isc::dhcp::Dhcp4Parser::make_OFFER_LFT(driver.loc_);
5211 default:
5212 return isc::dhcp::Dhcp4Parser::make_STRING("offer-lifetime", driver.loc_);
5213 }
5214}
5215 YY_BREAK
5216case 204:
5218#line 2103 "dhcp4_lexer.ll"
5219{
5220 switch(driver.ctx_) {
5223 default:
5224 return isc::dhcp::Dhcp4Parser::make_STRING("stash-agent-options", driver.loc_);
5225 }
5226}
5227 YY_BREAK
5228case 205:
5230#line 2112 "dhcp4_lexer.ll"
5231{
5232 /* A string has been matched. It contains the actual string and single quotes.
5233 We need to get those quotes out of the way and just use its content, e.g.
5234 for 'foo' we should get foo */
5235 std::string raw(yytext+1);
5236 size_t len = raw.size() - 1;
5237 raw.resize(len);
5238 std::string decoded;
5239 decoded.reserve(len);
5240 for (size_t pos = 0; pos < len; ++pos) {
5241 int b = 0;
5242 char c = raw[pos];
5243 switch (c) {
5244 case '"':
5245 /* impossible condition */
5246 driver.error(driver.loc_, "Bad quote in \"" + raw + "\"");
5247 break;
5248 case '\\':
5249 ++pos;
5250 if (pos >= len) {
5251 /* impossible condition */
5252 driver.error(driver.loc_, "Overflow escape in \"" + raw + "\"");
5253 }
5254 c = raw[pos];
5255 switch (c) {
5256 case '"':
5257 case '\\':
5258 case '/':
5259 decoded.push_back(c);
5260 break;
5261 case 'b':
5262 decoded.push_back('\b');
5263 break;
5264 case 'f':
5265 decoded.push_back('\f');
5266 break;
5267 case 'n':
5268 decoded.push_back('\n');
5269 break;
5270 case 'r':
5271 decoded.push_back('\r');
5272 break;
5273 case 't':
5274 decoded.push_back('\t');
5275 break;
5276 case 'u':
5277 /* support only \u0000 to \u00ff */
5278 ++pos;
5279 if (pos + 4 > len) {
5280 /* impossible condition */
5281 driver.error(driver.loc_,
5282 "Overflow unicode escape in \"" + raw + "\"");
5283 }
5284 if ((raw[pos] != '0') || (raw[pos + 1] != '0')) {
5285 driver.error(driver.loc_,
5286 "Unsupported unicode escape in \"" + raw + "\"",
5287 pos + 1);
5288 }
5289 pos += 2;
5290 c = raw[pos];
5291 if ((c >= '0') && (c <= '9')) {
5292 b = (c - '0') << 4;
5293 } else if ((c >= 'A') && (c <= 'F')) {
5294 b = (c - 'A' + 10) << 4;
5295 } else if ((c >= 'a') && (c <= 'f')) {
5296 b = (c - 'a' + 10) << 4;
5297 } else {
5298 /* impossible condition */
5299 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
5300 }
5301 pos++;
5302 c = raw[pos];
5303 if ((c >= '0') && (c <= '9')) {
5304 b |= c - '0';
5305 } else if ((c >= 'A') && (c <= 'F')) {
5306 b |= c - 'A' + 10;
5307 } else if ((c >= 'a') && (c <= 'f')) {
5308 b |= c - 'a' + 10;
5309 } else {
5310 /* impossible condition */
5311 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
5312 }
5313 decoded.push_back(static_cast<char>(b & 0xff));
5314 break;
5315 default:
5316 /* impossible condition */
5317 driver.error(driver.loc_, "Bad escape in \"" + raw + "\"");
5318 }
5319 break;
5320 default:
5321 if ((c >= 0) && (c < 0x20)) {
5322 /* impossible condition */
5323 driver.error(driver.loc_, "Invalid control in \"" + raw + "\"");
5324 }
5325 decoded.push_back(c);
5326 }
5327 }
5328
5329 return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
5330}
5331 YY_BREAK
5332case 206:
5333/* rule 206 can match eol */
5335#line 2213 "dhcp4_lexer.ll"
5336{
5337 /* Bad string with a forbidden control character inside */
5338 std::string raw(yytext+1);
5339 size_t len = raw.size() - 1;
5340 size_t pos = 0;
5341 for (; pos < len; ++pos) {
5342 char c = raw[pos];
5343 if ((c >= 0) && (c < 0x20)) {
5344 break;
5345 }
5346 }
5347 driver.error(driver.loc_,
5348 "Invalid control in " + std::string(yytext),
5349 pos + 1);
5350}
5351 YY_BREAK
5352case 207:
5353/* rule 207 can match eol */
5355#line 2229 "dhcp4_lexer.ll"
5356{
5357 /* Bad string with a bad escape inside */
5358 std::string raw(yytext+1);
5359 size_t len = raw.size() - 1;
5360 size_t pos = 0;
5361 bool found = false;
5362 for (; pos < len; ++pos) {
5363 if (found) {
5364 break;
5365 }
5366 char c = raw[pos];
5367 if (c == '\\') {
5368 ++pos;
5369 c = raw[pos];
5370 switch (c) {
5371 case '"':
5372 case '\\':
5373 case '/':
5374 case 'b':
5375 case 'f':
5376 case 'n':
5377 case 'r':
5378 case 't':
5379 break;
5380 case 'u':
5381 if ((pos + 4 > len) ||
5382 !std::isxdigit(raw[pos + 1]) ||
5383 !std::isxdigit(raw[pos + 2]) ||
5384 !std::isxdigit(raw[pos + 3]) ||
5385 !std::isxdigit(raw[pos + 4])) {
5386 found = true;
5387 }
5388 break;
5389 default:
5390 found = true;
5391 break;
5392 }
5393 }
5394 }
5395 /* The rule stops on the first " including on \" so add ... in this case */
5396 std::string trailer = "";
5397 if (raw[len - 1] == '\\') {
5398 trailer = "...";
5399 }
5400 driver.error(driver.loc_,
5401 "Bad escape in " + std::string(yytext) + trailer,
5402 pos);
5403}
5404 YY_BREAK
5405case 208:
5407#line 2278 "dhcp4_lexer.ll"
5408{
5409 /* Bad string with an open escape at the end */
5410 std::string raw(yytext+1);
5411 driver.error(driver.loc_,
5412 "Overflow escape in " + std::string(yytext),
5413 raw.size() + 1);
5414}
5415 YY_BREAK
5416case 209:
5418#line 2286 "dhcp4_lexer.ll"
5419{
5420 /* Bad string with an open unicode escape at the end */
5421 std::string raw(yytext+1);
5422 size_t pos = raw.size() - 1;
5423 for (; pos > 0; --pos) {
5424 char c = raw[pos];
5425 if (c == 'u') {
5426 break;
5427 }
5428 }
5429 driver.error(driver.loc_,
5430 "Overflow unicode escape in " + std::string(yytext),
5431 pos + 1);
5432}
5433 YY_BREAK
5434case 210:
5436#line 2301 "dhcp4_lexer.ll"
5437{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
5438 YY_BREAK
5439case 211:
5441#line 2302 "dhcp4_lexer.ll"
5442{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
5443 YY_BREAK
5444case 212:
5446#line 2303 "dhcp4_lexer.ll"
5447{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
5448 YY_BREAK
5449case 213:
5451#line 2304 "dhcp4_lexer.ll"
5452{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
5453 YY_BREAK
5454case 214:
5456#line 2305 "dhcp4_lexer.ll"
5457{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
5458 YY_BREAK
5459case 215:
5461#line 2306 "dhcp4_lexer.ll"
5462{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
5463 YY_BREAK
5464case 216:
5466#line 2308 "dhcp4_lexer.ll"
5467{
5468 /* An integer was found. */
5469 std::string tmp(yytext);
5470 int64_t integer = 0;
5471 try {
5472 /* In substring we want to use negative values (e.g. -1).
5473 In enterprise-id we need to use values up to 0xffffffff.
5474 To cover both of those use cases, we need at least
5475 int64_t. */
5476 integer = boost::lexical_cast<int64_t>(tmp);
5477 } catch (const boost::bad_lexical_cast &) {
5478 driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
5479 }
5480
5481 /* The parser needs the string form as double conversion is no lossless */
5482 return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
5483}
5484 YY_BREAK
5485case 217:
5487#line 2326 "dhcp4_lexer.ll"
5488{
5489 /* A floating point was found. */
5490 std::string tmp(yytext);
5491 double fp = 0.0;
5492 try {
5493 fp = boost::lexical_cast<double>(tmp);
5494 } catch (const boost::bad_lexical_cast &) {
5495 driver.error(driver.loc_, "Failed to convert " + tmp + " to a floating point.");
5496 }
5497
5498 return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
5499}
5500 YY_BREAK
5501case 218:
5503#line 2339 "dhcp4_lexer.ll"
5504{
5505 string tmp(yytext);
5506 return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
5507}
5508 YY_BREAK
5509case 219:
5511#line 2344 "dhcp4_lexer.ll"
5512{
5513 return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
5514}
5515 YY_BREAK
5516case 220:
5518#line 2348 "dhcp4_lexer.ll"
5519driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
5520 YY_BREAK
5521case 221:
5523#line 2350 "dhcp4_lexer.ll"
5524driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
5525 YY_BREAK
5526case 222:
5528#line 2352 "dhcp4_lexer.ll"
5529driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
5530 YY_BREAK
5531case 223:
5533#line 2354 "dhcp4_lexer.ll"
5534driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
5535 YY_BREAK
5536case YY_STATE_EOF(INITIAL):
5537#line 2356 "dhcp4_lexer.ll"
5538{
5539 if (driver.states_.empty()) {
5540 return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
5541 }
5542 driver.loc_ = driver.locs_.back();
5543 driver.locs_.pop_back();
5544 driver.file_ = driver.files_.back();
5545 driver.files_.pop_back();
5546 if (driver.sfile_) {
5547 fclose(driver.sfile_);
5548 driver.sfile_ = 0;
5549 }
5550 if (!driver.sfiles_.empty()) {
5551 driver.sfile_ = driver.sfiles_.back();
5552 driver.sfiles_.pop_back();
5553 }
5554 parser4__delete_buffer(YY_CURRENT_BUFFER);
5555 parser4__switch_to_buffer(driver.states_.back());
5556 driver.states_.pop_back();
5557
5558 BEGIN(DIR_EXIT);
5559}
5560 YY_BREAK
5561case 224:
5563#line 2379 "dhcp4_lexer.ll"
5564ECHO;
5565 YY_BREAK
5566#line 5566 "dhcp4_lexer.cc"
5567
5568 case YY_END_OF_BUFFER:
5569 {
5570 /* Amount of text matched not including the EOB char. */
5571 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5572
5573 /* Undo the effects of YY_DO_BEFORE_ACTION. */
5574 *yy_cp = (yy_hold_char);
5576
5577 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
5578 {
5579 /* We're scanning a new file or input source. It's
5580 * possible that this happened because the user
5581 * just pointed yyin at a new source and called
5582 * yylex(). If so, then we have to assure
5583 * consistency between YY_CURRENT_BUFFER and our
5584 * globals. Here is the right place to do so, because
5585 * this is the first action (other than possibly a
5586 * back-up) that will match for the new input source.
5587 */
5588 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5589/* %if-c-only */
5590 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
5591/* %endif */
5592/* %if-c++-only */
5593/* %endif */
5594 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5595 }
5596
5597 /* Note that here we test for yy_c_buf_p "<=" to the position
5598 * of the first EOB in the buffer, since yy_c_buf_p will
5599 * already have been incremented past the NUL character
5600 * (since all states make transitions on EOB to the
5601 * end-of-buffer state). Contrast this with the test
5602 * in input().
5603 */
5604 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5605 { /* This was really a NUL. */
5606 yy_state_type yy_next_state;
5607
5608 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5609
5610 yy_current_state = yy_get_previous_state( );
5611
5612 /* Okay, we're now positioned to make the NUL
5613 * transition. We couldn't have
5614 * yy_get_previous_state() go ahead and do it
5615 * for us because it doesn't know how to deal
5616 * with the possibility of jamming (and we don't
5617 * want to build jamming into it because then it
5618 * will run more slowly).
5619 */
5620
5621 yy_next_state = yy_try_NUL_trans( yy_current_state );
5622
5624
5625 if ( yy_next_state )
5626 {
5627 /* Consume the NUL. */
5628 yy_cp = ++(yy_c_buf_p);
5629 yy_current_state = yy_next_state;
5630 goto yy_match;
5631 }
5632
5633 else
5634 {
5635/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
5636 yy_cp = (yy_last_accepting_cpos);
5637 yy_current_state = (yy_last_accepting_state);
5638 goto yy_find_action;
5639 }
5640 }
5641
5642 else switch ( yy_get_next_buffer( ) )
5643 {
5645 {
5646 (yy_did_buffer_switch_on_eof) = 0;
5647
5648 if ( yywrap( ) )
5649 {
5650 /* Note: because we've taken care in
5651 * yy_get_next_buffer() to have set up
5652 * yytext, we can now set up
5653 * yy_c_buf_p so that if some total
5654 * hoser (like flex itself) wants to
5655 * call the scanner after we return the
5656 * YY_NULL, it'll still work - another
5657 * YY_NULL will get returned.
5658 */
5659 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5660
5662 goto do_action;
5663 }
5664
5665 else
5666 {
5667 if ( ! (yy_did_buffer_switch_on_eof) )
5669 }
5670 break;
5671 }
5672
5674 (yy_c_buf_p) =
5675 (yytext_ptr) + yy_amount_of_matched_text;
5676
5677 yy_current_state = yy_get_previous_state( );
5678
5679 yy_cp = (yy_c_buf_p);
5681 goto yy_match;
5682
5683 case EOB_ACT_LAST_MATCH:
5684 (yy_c_buf_p) =
5685 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5686
5687 yy_current_state = yy_get_previous_state( );
5688
5689 yy_cp = (yy_c_buf_p);
5691 goto yy_find_action;
5692 }
5693 break;
5694 }
5695
5696 default:
5698 "fatal flex scanner internal error--no action found" );
5699 } /* end of action switch */
5700 } /* end of scanning one token */
5701 } /* end of user's declarations */
5702} /* end of yylex */
5703/* %ok-for-header */
5704
5705/* %if-c++-only */
5706/* %not-for-header */
5707/* %ok-for-header */
5708
5709/* %endif */
5710
5711/* yy_get_next_buffer - try to read in a new buffer
5712 *
5713 * Returns a code representing an action:
5714 * EOB_ACT_LAST_MATCH -
5715 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5716 * EOB_ACT_END_OF_FILE - end of file
5717 */
5718/* %if-c-only */
5719static int yy_get_next_buffer (void)
5720/* %endif */
5721/* %if-c++-only */
5722/* %endif */
5723{
5724 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5725 char *source = (yytext_ptr);
5726 int number_to_move, i;
5727 int ret_val;
5728
5729 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
5731 "fatal flex scanner internal error--end of buffer missed" );
5732
5733 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
5734 { /* Don't try to fill the buffer, so this is an EOF. */
5735 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
5736 {
5737 /* We matched a single character, the EOB, so
5738 * treat this as a final EOF.
5739 */
5740 return EOB_ACT_END_OF_FILE;
5741 }
5742
5743 else
5744 {
5745 /* We matched some text prior to the EOB, first
5746 * process it.
5747 */
5748 return EOB_ACT_LAST_MATCH;
5749 }
5750 }
5751
5752 /* Try to read more data. */
5753
5754 /* First move last chars to start of buffer. */
5755 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
5756
5757 for ( i = 0; i < number_to_move; ++i )
5758 *(dest++) = *(source++);
5759
5760 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
5761 /* don't do the read, it's not guaranteed to return an EOF,
5762 * just force an EOF
5763 */
5764 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
5765
5766 else
5767 {
5768 int num_to_read =
5769 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
5770
5771 while ( num_to_read <= 0 )
5772 { /* Not enough room in the buffer - grow it. */
5773
5774 /* just a shorter name for the current buffer */
5776
5777 int yy_c_buf_p_offset =
5778 (int) ((yy_c_buf_p) - b->yy_ch_buf);
5779
5780 if ( b->yy_is_our_buffer )
5781 {
5782 int new_size = b->yy_buf_size * 2;
5783
5784 if ( new_size <= 0 )
5785 b->yy_buf_size += b->yy_buf_size / 8;
5786 else
5787 b->yy_buf_size *= 2;
5788
5789 b->yy_ch_buf = (char *)
5790 /* Include room in for 2 EOB chars. */
5791 yyrealloc( (void *) b->yy_ch_buf,
5792 (yy_size_t) (b->yy_buf_size + 2) );
5793 }
5794 else
5795 /* Can't grow it, we don't own it. */
5796 b->yy_ch_buf = NULL;
5797
5798 if ( ! b->yy_ch_buf )
5800 "fatal error - scanner input buffer overflow" );
5801
5802 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
5803
5804 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
5805 number_to_move - 1;
5806
5807 }
5808
5809 if ( num_to_read > YY_READ_BUF_SIZE )
5810 num_to_read = YY_READ_BUF_SIZE;
5811
5812 /* Read in more data. */
5813 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
5814 (yy_n_chars), num_to_read );
5815
5816 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5817 }
5818
5819 if ( (yy_n_chars) == 0 )
5820 {
5821 if ( number_to_move == YY_MORE_ADJ )
5822 {
5823 ret_val = EOB_ACT_END_OF_FILE;
5824 yyrestart( yyin );
5825 }
5826
5827 else
5828 {
5829 ret_val = EOB_ACT_LAST_MATCH;
5830 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
5832 }
5833 }
5834
5835 else
5836 ret_val = EOB_ACT_CONTINUE_SCAN;
5837
5838 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
5839 /* Extend the array by 50%, plus the number we really need. */
5840 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
5841 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
5842 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
5843 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
5844 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
5845 /* "- 2" to take care of EOB's */
5846 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
5847 }
5848
5849 (yy_n_chars) += number_to_move;
5850 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
5851 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
5852
5853 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
5854
5855 return ret_val;
5856}
5857
5858/* yy_get_previous_state - get the state just before the EOB char was reached */
5859
5860/* %if-c-only */
5861/* %not-for-header */
5862 static yy_state_type yy_get_previous_state (void)
5863/* %endif */
5864/* %if-c++-only */
5865/* %endif */
5866{
5867 yy_state_type yy_current_state;
5868 char *yy_cp;
5869
5870/* %% [15.0] code to get the start state into yy_current_state goes here */
5871 yy_current_state = (yy_start);
5872
5873 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
5874 {
5875/* %% [16.0] code to find the next state goes here */
5876 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
5877 if ( yy_accept[yy_current_state] )
5878 {
5879 (yy_last_accepting_state) = yy_current_state;
5880 (yy_last_accepting_cpos) = yy_cp;
5881 }
5882 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5883 {
5884 yy_current_state = (int) yy_def[yy_current_state];
5885 if ( yy_current_state >= 2259 )
5886 yy_c = yy_meta[yy_c];
5887 }
5888 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5889 }
5890
5891 return yy_current_state;
5892}
5893
5894/* yy_try_NUL_trans - try to make a transition on the NUL character
5895 *
5896 * synopsis
5897 * next_state = yy_try_NUL_trans( current_state );
5898 */
5899/* %if-c-only */
5900 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
5901/* %endif */
5902/* %if-c++-only */
5903/* %endif */
5904{
5905 int yy_is_jam;
5906 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
5907 char *yy_cp = (yy_c_buf_p);
5908
5909 YY_CHAR yy_c = 1;
5910 if ( yy_accept[yy_current_state] )
5911 {
5912 (yy_last_accepting_state) = yy_current_state;
5913 (yy_last_accepting_cpos) = yy_cp;
5914 }
5915 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5916 {
5917 yy_current_state = (int) yy_def[yy_current_state];
5918 if ( yy_current_state >= 2259 )
5919 yy_c = yy_meta[yy_c];
5920 }
5921 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5922 yy_is_jam = (yy_current_state == 2258);
5923
5924 return yy_is_jam ? 0 : yy_current_state;
5925}
5926
5927#ifndef YY_NO_UNPUT
5928/* %if-c-only */
5929
5930/* %endif */
5931#endif
5932
5933/* %if-c-only */
5934#ifndef YY_NO_INPUT
5935#ifdef __cplusplus
5936 static int yyinput (void)
5937#else
5938 static int input (void)
5939#endif
5940
5941/* %endif */
5942/* %if-c++-only */
5943/* %endif */
5944{
5945 int c;
5946
5947 *(yy_c_buf_p) = (yy_hold_char);
5948
5949 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
5950 {
5951 /* yy_c_buf_p now points to the character we want to return.
5952 * If this occurs *before* the EOB characters, then it's a
5953 * valid NUL; if not, then we've hit the end of the buffer.
5954 */
5955 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5956 /* This was really a NUL. */
5957 *(yy_c_buf_p) = '\0';
5958
5959 else
5960 { /* need more input */
5961 int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
5962 ++(yy_c_buf_p);
5963
5964 switch ( yy_get_next_buffer( ) )
5965 {
5966 case EOB_ACT_LAST_MATCH:
5967 /* This happens because yy_g_n_b()
5968 * sees that we've accumulated a
5969 * token and flags that we need to
5970 * try matching the token before
5971 * proceeding. But for input(),
5972 * there's no matching to consider.
5973 * So convert the EOB_ACT_LAST_MATCH
5974 * to EOB_ACT_END_OF_FILE.
5975 */
5976
5977 /* Reset buffer status. */
5978 yyrestart( yyin );
5979
5980 /*FALLTHROUGH*/
5981
5983 {
5984 if ( yywrap( ) )
5985 return 0;
5986
5987 if ( ! (yy_did_buffer_switch_on_eof) )
5989#ifdef __cplusplus
5990 return yyinput();
5991#else
5992 return input();
5993#endif
5994 }
5995
5997 (yy_c_buf_p) = (yytext_ptr) + offset;
5998 break;
5999 }
6000 }
6001 }
6002
6003 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
6004 *(yy_c_buf_p) = '\0'; /* preserve yytext */
6005 (yy_hold_char) = *++(yy_c_buf_p);
6006
6007/* %% [19.0] update BOL and yylineno */
6008
6009 return c;
6010}
6011/* %if-c-only */
6012#endif /* ifndef YY_NO_INPUT */
6013/* %endif */
6014
6020/* %if-c-only */
6021 void yyrestart (FILE * input_file )
6022/* %endif */
6023/* %if-c++-only */
6024/* %endif */
6025{
6026
6027 if ( ! YY_CURRENT_BUFFER ){
6031 }
6032
6033 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
6035}
6036
6037/* %if-c++-only */
6038/* %endif */
6039
6044/* %if-c-only */
6046/* %endif */
6047/* %if-c++-only */
6048/* %endif */
6049{
6050
6051 /* TODO. We should be able to replace this entire function body
6052 * with
6053 * yypop_buffer_state();
6054 * yypush_buffer_state(new_buffer);
6055 */
6057 if ( YY_CURRENT_BUFFER == new_buffer )
6058 return;
6059
6060 if ( YY_CURRENT_BUFFER )
6061 {
6062 /* Flush out information for old buffer. */
6063 *(yy_c_buf_p) = (yy_hold_char);
6064 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6065 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6066 }
6067
6068 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6070
6071 /* We don't actually know whether we did this switch during
6072 * EOF (yywrap()) processing, but the only time this flag
6073 * is looked at is after yywrap() is called, so it's safe
6074 * to go ahead and always set it.
6075 */
6076 (yy_did_buffer_switch_on_eof) = 1;
6077}
6078
6079/* %if-c-only */
6080static void yy_load_buffer_state (void)
6081/* %endif */
6082/* %if-c++-only */
6083/* %endif */
6084{
6085 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6086 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6087/* %if-c-only */
6088 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6089/* %endif */
6090/* %if-c++-only */
6091/* %endif */
6092 (yy_hold_char) = *(yy_c_buf_p);
6093}
6094
6101/* %if-c-only */
6102 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
6103/* %endif */
6104/* %if-c++-only */
6105/* %endif */
6106{
6108
6109 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
6110 if ( ! b )
6111 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
6112
6113 b->yy_buf_size = size;
6114
6115 /* yy_ch_buf has to be 2 characters longer than the size given because
6116 * we need to put in 2 end-of-buffer characters.
6117 */
6118 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
6119 if ( ! b->yy_ch_buf )
6120 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
6121
6122 b->yy_is_our_buffer = 1;
6123
6124 yy_init_buffer( b, file );
6125
6126 return b;
6127}
6128
6129/* %if-c++-only */
6130/* %endif */
6131
6136/* %if-c-only */
6138/* %endif */
6139/* %if-c++-only */
6140/* %endif */
6141{
6142
6143 if ( ! b )
6144 return;
6145
6146 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6148
6149 if ( b->yy_is_our_buffer )
6150 yyfree( (void *) b->yy_ch_buf );
6151
6152 yyfree( (void *) b );
6153}
6154
6155/* Initializes or reinitializes a buffer.
6156 * This function is sometimes called more than once on the same buffer,
6157 * such as during a yyrestart() or at EOF.
6158 */
6159/* %if-c-only */
6160 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
6161/* %endif */
6162/* %if-c++-only */
6163/* %endif */
6164
6165{
6166 int oerrno = errno;
6167
6168 yy_flush_buffer( b );
6169
6170/* %if-c-only */
6171 b->yy_input_file = file;
6172/* %endif */
6173/* %if-c++-only */
6174/* %endif */
6175 b->yy_fill_buffer = 1;
6176
6177 /* If b is the current buffer, then yy_init_buffer was _probably_
6178 * called from yyrestart() or through yy_get_next_buffer.
6179 * In that case, we don't want to reset the lineno or column.
6180 */
6181 if (b != YY_CURRENT_BUFFER){
6182 b->yy_bs_lineno = 1;
6183 b->yy_bs_column = 0;
6184 }
6185
6186/* %if-c-only */
6187
6188 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6189
6190/* %endif */
6191/* %if-c++-only */
6192/* %endif */
6193 errno = oerrno;
6194}
6195
6200/* %if-c-only */
6202/* %endif */
6203/* %if-c++-only */
6204/* %endif */
6205{
6206 if ( ! b )
6207 return;
6208
6209 b->yy_n_chars = 0;
6210
6211 /* We always need two end-of-buffer characters. The first causes
6212 * a transition to the end-of-buffer state. The second causes
6213 * a jam in that state.
6214 */
6217
6218 b->yy_buf_pos = &b->yy_ch_buf[0];
6219
6220 b->yy_at_bol = 1;
6222
6223 if ( b == YY_CURRENT_BUFFER )
6225}
6226
6227/* %if-c-or-c++ */
6234/* %if-c-only */
6236/* %endif */
6237/* %if-c++-only */
6238/* %endif */
6239{
6240 if (new_buffer == NULL)
6241 return;
6242
6244
6245 /* This block is copied from yy_switch_to_buffer. */
6246 if ( YY_CURRENT_BUFFER )
6247 {
6248 /* Flush out information for old buffer. */
6249 *(yy_c_buf_p) = (yy_hold_char);
6250 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6251 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6252 }
6253
6254 /* Only push if top exists. Otherwise, replace top. */
6256 (yy_buffer_stack_top)++;
6257 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6258
6259 /* copied from yy_switch_to_buffer. */
6261 (yy_did_buffer_switch_on_eof) = 1;
6262}
6263/* %endif */
6264
6265/* %if-c-or-c++ */
6270/* %if-c-only */
6272/* %endif */
6273/* %if-c++-only */
6274/* %endif */
6275{
6276 if (!YY_CURRENT_BUFFER)
6277 return;
6278
6281 if ((yy_buffer_stack_top) > 0)
6282 --(yy_buffer_stack_top);
6283
6284 if (YY_CURRENT_BUFFER) {
6286 (yy_did_buffer_switch_on_eof) = 1;
6287 }
6288}
6289/* %endif */
6290
6291/* %if-c-or-c++ */
6292/* Allocates the stack if it does not exist.
6293 * Guarantees space for at least one push.
6294 */
6295/* %if-c-only */
6296static void yyensure_buffer_stack (void)
6297/* %endif */
6298/* %if-c++-only */
6299/* %endif */
6300{
6301 yy_size_t num_to_alloc;
6302
6303 if (!(yy_buffer_stack)) {
6304
6305 /* First allocation is just for 2 elements, since we don't know if this
6306 * scanner will even need a stack. We use 2 instead of 1 to avoid an
6307 * immediate realloc on the next call.
6308 */
6309 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
6310 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
6311 (num_to_alloc * sizeof(struct yy_buffer_state*)
6312 );
6313 if ( ! (yy_buffer_stack) )
6314 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
6315
6316 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6317
6318 (yy_buffer_stack_max) = num_to_alloc;
6319 (yy_buffer_stack_top) = 0;
6320 return;
6321 }
6322
6323 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6324
6325 /* Increase the buffer to prepare for a possible push. */
6326 yy_size_t grow_size = 8 /* arbitrary grow size */;
6327
6328 num_to_alloc = (yy_buffer_stack_max) + grow_size;
6329 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
6330 ((yy_buffer_stack),
6331 num_to_alloc * sizeof(struct yy_buffer_state*)
6332 );
6333 if ( ! (yy_buffer_stack) )
6334 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
6335
6336 /* zero only the new slots.*/
6337 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6338 (yy_buffer_stack_max) = num_to_alloc;
6339 }
6340}
6341/* %endif */
6342
6343/* %if-c-only */
6351{
6353
6354 if ( size < 2 ||
6355 base[size-2] != YY_END_OF_BUFFER_CHAR ||
6356 base[size-1] != YY_END_OF_BUFFER_CHAR )
6357 /* They forgot to leave room for the EOB's. */
6358 return NULL;
6359
6360 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
6361 if ( ! b )
6362 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
6363
6364 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
6365 b->yy_buf_pos = b->yy_ch_buf = base;
6366 b->yy_is_our_buffer = 0;
6367 b->yy_input_file = NULL;
6368 b->yy_n_chars = b->yy_buf_size;
6369 b->yy_is_interactive = 0;
6370 b->yy_at_bol = 1;
6371 b->yy_fill_buffer = 0;
6373
6375
6376 return b;
6377}
6378/* %endif */
6379
6380/* %if-c-only */
6389YY_BUFFER_STATE yy_scan_string (const char * yystr )
6390{
6391
6392 return yy_scan_bytes( yystr, (int) strlen(yystr) );
6393}
6394/* %endif */
6395
6396/* %if-c-only */
6404YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
6405{
6407 char *buf;
6408 yy_size_t n;
6409 int i;
6410
6411 /* Get memory for full buffer, including space for trailing EOB's. */
6412 n = (yy_size_t) (_yybytes_len + 2);
6413 buf = (char *) yyalloc( n );
6414 if ( ! buf )
6415 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
6416
6417 for ( i = 0; i < _yybytes_len; ++i )
6418 buf[i] = yybytes[i];
6419
6420 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6421
6422 b = yy_scan_buffer( buf, n );
6423 if ( ! b )
6424 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
6425
6426 /* It's okay to grow etc. this buffer, and we should throw it
6427 * away when we're done.
6428 */
6429 b->yy_is_our_buffer = 1;
6430
6431 return b;
6432}
6433/* %endif */
6434
6435#ifndef YY_EXIT_FAILURE
6436#define YY_EXIT_FAILURE 2
6437#endif
6438
6439/* %if-c-only */
6440static void yynoreturn yy_fatal_error (const char* msg )
6441{
6442 fprintf( stderr, "%s\n", msg );
6443 exit( YY_EXIT_FAILURE );
6444}
6445/* %endif */
6446/* %if-c++-only */
6447/* %endif */
6448
6449/* Redefine yyless() so it works in section 3 code. */
6450
6451#undef yyless
6452#define yyless(n) \
6453 do \
6454 { \
6455 /* Undo effects of setting up yytext. */ \
6456 int yyless_macro_arg = (n); \
6457 YY_LESS_LINENO(yyless_macro_arg);\
6458 yytext[yyleng] = (yy_hold_char); \
6459 (yy_c_buf_p) = yytext + yyless_macro_arg; \
6460 (yy_hold_char) = *(yy_c_buf_p); \
6461 *(yy_c_buf_p) = '\0'; \
6462 yyleng = yyless_macro_arg; \
6463 } \
6464 while ( 0 )
6465
6466/* Accessor methods (get/set functions) to struct members. */
6467
6468/* %if-c-only */
6469/* %if-reentrant */
6470/* %endif */
6471
6476{
6477
6478 return yylineno;
6479}
6480
6484FILE *yyget_in (void)
6485{
6486 return yyin;
6487}
6488
6492FILE *yyget_out (void)
6493{
6494 return yyout;
6495}
6496
6500int yyget_leng (void)
6501{
6502 return yyleng;
6503}
6504
6509char *yyget_text (void)
6510{
6511 return yytext;
6512}
6513
6514/* %if-reentrant */
6515/* %endif */
6516
6521void yyset_lineno (int _line_number )
6522{
6523
6524 yylineno = _line_number;
6525}
6526
6533void yyset_in (FILE * _in_str )
6534{
6535 yyin = _in_str ;
6536}
6537
6538void yyset_out (FILE * _out_str )
6539{
6540 yyout = _out_str ;
6541}
6542
6543int yyget_debug (void)
6544{
6545 return yy_flex_debug;
6546}
6547
6548void yyset_debug (int _bdebug )
6549{
6550 yy_flex_debug = _bdebug ;
6551}
6552
6553/* %endif */
6554
6555/* %if-reentrant */
6556/* %if-bison-bridge */
6557/* %endif */
6558/* %endif if-c-only */
6559
6560/* %if-c-only */
6561static int yy_init_globals (void)
6562{
6563 /* Initialization is the same as for the non-reentrant scanner.
6564 * This function is called from yylex_destroy(), so don't allocate here.
6565 */
6566
6567 (yy_buffer_stack) = NULL;
6568 (yy_buffer_stack_top) = 0;
6569 (yy_buffer_stack_max) = 0;
6570 (yy_c_buf_p) = NULL;
6571 (yy_init) = 0;
6572 (yy_start) = 0;
6573
6574/* Defined in main.c */
6575#ifdef YY_STDINIT
6576 yyin = stdin;
6577 yyout = stdout;
6578#else
6579 yyin = NULL;
6580 yyout = NULL;
6581#endif
6582
6583 /* For future reference: Set errno on error, since we are called by
6584 * yylex_init()
6585 */
6586 return 0;
6587}
6588/* %endif */
6589
6590/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
6591/* yylex_destroy is for both reentrant and non-reentrant scanners. */
6593{
6594
6595 /* Pop the buffer stack, destroying each element. */
6596 while(YY_CURRENT_BUFFER){
6600 }
6601
6602 /* Destroy the stack itself. */
6603 yyfree((yy_buffer_stack) );
6604 (yy_buffer_stack) = NULL;
6605
6606 /* Reset the globals. This is important in a non-reentrant scanner so the next time
6607 * yylex() is called, initialization will occur. */
6608 yy_init_globals( );
6609
6610/* %if-reentrant */
6611/* %endif */
6612 return 0;
6613}
6614/* %endif */
6615
6616/*
6617 * Internal utility routines.
6618 */
6619
6620#ifndef yytext_ptr
6621static void yy_flex_strncpy (char* s1, const char * s2, int n )
6622{
6623
6624 int i;
6625 for ( i = 0; i < n; ++i )
6626 s1[i] = s2[i];
6627}
6628#endif
6629
6630#ifdef YY_NEED_STRLEN
6631static int yy_flex_strlen (const char * s )
6632{
6633 int n;
6634 for ( n = 0; s[n]; ++n )
6635 ;
6636
6637 return n;
6638}
6639#endif
6640
6641void *yyalloc (yy_size_t size )
6642{
6643 return malloc(size);
6644}
6645
6646void *yyrealloc (void * ptr, yy_size_t size )
6647{
6648
6649 /* The cast to (char *) in the following accommodates both
6650 * implementations that use char* generic pointers, and those
6651 * that use void* generic pointers. It works with the latter
6652 * because both ANSI C and C++ allow castless assignment from
6653 * any pointer type to void*, and deal with argument conversions
6654 * as though doing an assignment.
6655 */
6656 return realloc(ptr, size);
6657}
6658
6659void yyfree (void * ptr )
6660{
6661 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
6662}
6663
6664/* %if-tables-serialization definitions */
6665/* %define-yytables The name for this specific scanner's tables. */
6666#define YYTABLES_NAME "yytables"
6667/* %endif */
6668
6669/* %ok-for-header */
6670
6671#line 2379 "dhcp4_lexer.ll"
6672
6673
6674using namespace isc::dhcp;
6675
6676void
6677Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type)
6678{
6679 start_token_flag = true;
6680 start_token_value = parser_type;
6681
6682 file_ = "<string>";
6683 sfile_ = 0;
6684 loc_.initialize(&file_);
6685 yy_flex_debug = trace_scanning_;
6686 YY_BUFFER_STATE buffer;
6687 buffer = parser4__scan_bytes(str.c_str(), str.size());
6688 if (!buffer) {
6689 fatal("cannot scan string");
6690 /* fatal() throws an exception so this can't be reached */
6691 }
6692}
6693
6694void
6696 const std::string& filename,
6697 ParserType parser_type)
6698{
6699 start_token_flag = true;
6700 start_token_value = parser_type;
6701
6702 file_ = filename;
6703 sfile_ = f;
6704 loc_.initialize(&file_);
6705 yy_flex_debug = trace_scanning_;
6706 YY_BUFFER_STATE buffer;
6707
6708 /* See dhcp4_lexer.cc header for available definitions */
6709 buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
6710 if (!buffer) {
6711 fatal("cannot scan file " + filename);
6712 }
6713 parser4__switch_to_buffer(buffer);
6714}
6715
6716void
6718 if (sfile_)
6719 fclose(sfile_);
6720 sfile_ = 0;
6721 static_cast<void>(parser4_lex_destroy());
6722 /* Close files */
6723 while (!sfiles_.empty()) {
6724 FILE* f = sfiles_.back();
6725 if (f) {
6726 fclose(f);
6727 }
6728 sfiles_.pop_back();
6729 }
6730 /* Delete states */
6731 while (!states_.empty()) {
6732 parser4__delete_buffer(states_.back());
6733 states_.pop_back();
6734 }
6735}
6736
6737void
6738Parser4Context::includeFile(const std::string& filename) {
6739 if (states_.size() > 10) {
6740 fatal("Too many nested include.");
6741 }
6742
6743 FILE* f = fopen(filename.c_str(), "r");
6744 if (!f) {
6745 fatal("Can't open include file " + filename);
6746 }
6747 if (sfile_) {
6748 sfiles_.push_back(sfile_);
6749 }
6750 sfile_ = f;
6751 states_.push_back(YY_CURRENT_BUFFER);
6752 YY_BUFFER_STATE buffer;
6753 buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
6754 if (!buffer) {
6755 fatal( "Can't scan include file " + filename);
6756 }
6757 parser4__switch_to_buffer(buffer);
6758 files_.push_back(file_);
6759 file_ = filename;
6760 locs_.push_back(loc_);
6761 loc_.initialize(&file_);
6762
6763 BEGIN(INITIAL);
6764}
6765
6766namespace {
6768class Dummy {
6769 /* cppcheck-suppress unusedPrivateFunction */
6770 void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
6771};
6772}
6773#endif /* !__clang_analyzer__ */
6774
unsigned char flex_uint8_t
short int flex_int16_t
#define yy_flex_debug
int flex_int32_t
int yy_state_type
#define YY_CURRENT_BUFFER
#define INITIAL
#define BEGIN
flex_uint8_t YY_CHAR
size_t yy_size_t
Evaluation error exception raised when trying to parse.
static symbol_type make_SAME_AS_INBOUND(const location_type &l)
static symbol_type make_SOCKET_NAME(const location_type &l)
static symbol_type make_PERSIST(const location_type &l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(const location_type &l)
static symbol_type make_SUBNET_4O6_INTERFACE_ID(const location_type &l)
static symbol_type make_SUB_INTERFACES4(const location_type &l)
static symbol_type make_RETRY_ON_STARTUP(const location_type &l)
static symbol_type make_END(const location_type &l)
static symbol_type make_STATISTIC_DEFAULT_SAMPLE_COUNT(const location_type &l)
static symbol_type make_IP_RESERVATIONS_UNIQUE(const location_type &l)
static symbol_type make_CONTROL_SOCKET(const location_type &l)
static symbol_type make_THREAD_POOL_SIZE(const location_type &l)
static symbol_type make_SUB_OPTION_DATA(const location_type &l)
static symbol_type make_NAME(const location_type &l)
static symbol_type make_MATCH_CLIENT_ID(const location_type &l)
static symbol_type make_MAX_RECLAIM_LEASES(const location_type &l)
static symbol_type make_STORE_EXTENDED_INFO(const location_type &l)
static symbol_type make_SERVICE_SOCKETS_MAX_RETRIES(const location_type &l)
static symbol_type make_LFC_INTERVAL(const location_type &l)
static symbol_type make_HOLD_RECLAIMED_TIME(const location_type &l)
static symbol_type make_MEMFILE(const location_type &l)
static symbol_type make_CONNECT_TIMEOUT(const location_type &l)
static symbol_type make_OPTION_DEF(const location_type &l)
static symbol_type make_NULL_TYPE(const location_type &l)
static symbol_type make_SERVICE_SOCKETS_REQUIRE_ALL(const location_type &l)
static symbol_type make_OUTPUT_OPTIONS(const location_type &l)
static symbol_type make_SENDER_PORT(const location_type &l)
static symbol_type make_CACHE_MAX_AGE(const location_type &l)
static symbol_type make_NCR_PROTOCOL(const location_type &l)
static symbol_type make_NO_CHECK_WITH_DHCID(const location_type &l)
static symbol_type make_CALCULATE_TEE_TIMES(const location_type &l)
static symbol_type make_RE_DETECT(const location_type &l)
static symbol_type make_RELAY(const location_type &l)
static symbol_type make_POOL_ID(const location_type &l)
static symbol_type make_MAX_VALID_LIFETIME(const location_type &l)
static symbol_type make_SERVER_HOSTNAME(const location_type &l)
static symbol_type make_IGNORE_DHCP_SERVER_ID(const location_type &l)
static symbol_type make_KEY_FILE(const location_type &l)
static symbol_type make_TEST(const location_type &l)
static symbol_type make_RECONNECT_WAIT_TIME(const location_type &l)
static symbol_type make_DHCP_MULTI_THREADING(const location_type &l)
static symbol_type make_ARRAY(const location_type &l)
static symbol_type make_SOCKET_TYPE(const location_type &l)
static symbol_type make_CHECK_EXISTS_WITH_DHCID(const location_type &l)
static symbol_type make_SPACE(const location_type &l)
static symbol_type make_HW_ADDRESS(const location_type &l)
static symbol_type make_USE_ROUTING(const location_type &l)
static symbol_type make_MAX_RECLAIM_TIME(const location_type &l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(const location_type &l)
static symbol_type make_VALID_LIFETIME(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
static symbol_type make_DDNS_TTL_PERCENT(const location_type &l)
static symbol_type make_INTERFACE(const location_type &l)
static symbol_type make_REBIND_TIMER(const location_type &l)
static symbol_type make_BOOT_FILE_NAME(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
static symbol_type make_RESERVATIONS_IN_SUBNET(const location_type &l)
static symbol_type make_IP_ADDRESSES(const location_type &l)
static symbol_type make_DDNS_UPDATE_ON_RENEW(const location_type &l)
static symbol_type make_INTERFACES_CONFIG(const location_type &l)
static symbol_type make_UDP(const location_type &l)
static symbol_type make_TCP(const location_type &l)
static symbol_type make_SUBNET4(const location_type &l)
static symbol_type make_COLON(const location_type &l)
static symbol_type make_SERVE_RETRY_CONTINUE(const location_type &l)
static symbol_type make_HOSTS_DATABASES(const location_type &l)
static symbol_type make_SUB_DHCP_DDNS(const location_type &l)
static symbol_type make_DDNS_SEND_UPDATES(const location_type &l)
static symbol_type make_LENIENT_OPTION_PARSING(const location_type &l)
static symbol_type make_MIN_VALID_LIFETIME(const location_type &l)
static symbol_type make_DDNS_QUALIFYING_SUFFIX(const location_type &l)
static symbol_type make_DECLINE_PROBATION_PERIOD(const location_type &l)
static symbol_type make_IP_ADDRESS(const location_type &l)
static symbol_type make_SUB_HOOKS_LIBRARY(const location_type &l)
static symbol_type make_ENABLE_QUEUE(const location_type &l)
static symbol_type make_SUBNET(const location_type &l)
static symbol_type make_FLOAT(const double &v, const location_type &l)
static symbol_type make_HOSTNAME(const location_type &l)
static symbol_type make_DDNS_REPLACE_CLIENT_NAME(const location_type &l)
static symbol_type make_EXCLUDE_FIRST_LAST_24(const location_type &l)
static symbol_type make_SUB_RESERVATION(const location_type &l)
static symbol_type make_SUB_OPTION_DEFS(const location_type &l)
static symbol_type make_OPTION_DATA(const location_type &l)
static symbol_type make_TEMPLATE_TEST(const location_type &l)
static symbol_type make_EARLY_GLOBAL_RESERVATIONS_LOOKUP(const location_type &l)
static symbol_type make_POSTGRESQL(const location_type &l)
static symbol_type make_LOGGERS(const location_type &l)
static symbol_type make_MYSQL(const location_type &l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(const location_type &l)
static symbol_type make_LEASE_CHECKS(const location_type &l)
static symbol_type make_USER(const location_type &l)
static symbol_type make_SERVER_IP(const location_type &l)
static symbol_type make_IGNORE_RAI_LINK_SEL(const location_type &l)
static symbol_type make_HOSTS_DATABASE(const location_type &l)
static symbol_type make_QUEUE_TYPE(const location_type &l)
static symbol_type make_T1_PERCENT(const location_type &l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(const location_type &l)
static symbol_type make_STOP_RETRY_EXIT(const location_type &l)
static symbol_type make_DDNS_OVERRIDE_NO_UPDATE(const location_type &l)
static symbol_type make_ALWAYS_SEND(const location_type &l)
static symbol_type make_CERT_FILE(const location_type &l)
static symbol_type make_ECHO_CLIENT_ID(const location_type &l)
static symbol_type make_CHECK_WITH_DHCID(const location_type &l)
static symbol_type make_CIPHER_LIST(const location_type &l)
static symbol_type make_POOL(const location_type &l)
static symbol_type make_DATA(const location_type &l)
static symbol_type make_ENABLE_MULTI_THREADING(const location_type &l)
static symbol_type make_CSV_FORMAT(const location_type &l)
static symbol_type make_SERVER_PORT(const location_type &l)
static symbol_type make_SUB_SUBNET4(const location_type &l)
static symbol_type make_WHEN_NOT_PRESENT(const location_type &l)
static symbol_type make_READ_TIMEOUT(const location_type &l)
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_ON_FAIL(const location_type &l)
static symbol_type make_EXTENDED_INFO_CHECKS(const location_type &l)
static symbol_type make_JSON(const location_type &l)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_RECORD_TYPES(const location_type &l)
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
static symbol_type make_DUID(const location_type &l)
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_SUBNET_4O6_INTERFACE(const location_type &l)
static symbol_type make_DHCP4(const location_type &l)
static symbol_type make_CAPACITY(const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
static symbol_type make_SUB_OPTION_DEF(const location_type &l)
static symbol_type make_TYPE(const location_type &l)
static symbol_type make_ONLY_IF_REQUIRED(const location_type &l)
static symbol_type make_PASSWORD(const location_type &l)
static symbol_type make_CONFIG_DATABASES(const location_type &l)
static symbol_type make_AUTHORITATIVE(const location_type &l)
static symbol_type make_TCP_USER_TIMEOUT(const location_type &l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(const location_type &l)
static symbol_type make_MAX_ROW_ERRORS(const location_type &l)
static symbol_type make_INTERFACES(const location_type &l)
static symbol_type make_T2_PERCENT(const location_type &l)
static symbol_type make_READONLY(const location_type &l)
static symbol_type make_DDNS_USE_CONFLICT_RESOLUTION(const location_type &l)
static symbol_type make_LSQUARE_BRACKET(const location_type &l)
static symbol_type make_ENABLE_UPDATES(const location_type &l)
static symbol_type make_SERVER_TAG(const location_type &l)
static symbol_type make_DEBUGLEVEL(const location_type &l)
static symbol_type make_DHCP_QUEUE_CONTROL(const location_type &l)
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_PORT(const location_type &l)
static symbol_type make_FLEX_ID(const location_type &l)
static symbol_type make_CLIENT_CLASS(const location_type &l)
static symbol_type make_NEXT_SERVER(const location_type &l)
static symbol_type make_SANITY_CHECKS(const location_type &l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(const location_type &l)
static symbol_type make_RAW(const location_type &l)
static symbol_type make_OUTBOUND_INTERFACE(const location_type &l)
static symbol_type make_RESERVATIONS_OUT_OF_POOL(const location_type &l)
static symbol_type make_ID(const location_type &l)
static symbol_type make_PATTERN(const location_type &l)
static symbol_type make_SUB_POOL4(const location_type &l)
static symbol_type make_NEVER(const location_type &l)
static symbol_type make_TOPLEVEL_JSON(const location_type &l)
static symbol_type make_RESERVATIONS_GLOBAL(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_RESERVATIONS(const location_type &l)
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
static symbol_type make_HOSTNAME_CHAR_SET(const location_type &l)
static symbol_type make_TRUST_ANCHOR(const location_type &l)
static symbol_type make_MAX_QUEUE_SIZE(const location_type &l)
static symbol_type make_SERVE_RETRY_EXIT(const location_type &l)
static symbol_type make_ALLOCATOR(const location_type &l)
static symbol_type make_COMPATIBILITY(const location_type &l)
static symbol_type make_POOLS(const location_type &l)
static symbol_type make_DHCP_DDNS(const location_type &l)
static symbol_type make_ALWAYS(const location_type &l)
static symbol_type make_CLIENT_ID(const location_type &l)
static symbol_type make_OFFER_LFT(const location_type &l)
static symbol_type make_SUB_CONFIG_CONTROL(const location_type &l)
static symbol_type make_RESERVATIONS_LOOKUP_FIRST(const location_type &l)
static symbol_type make_TOPLEVEL_DHCP4(const location_type &l)
static symbol_type make_MAX_RECONNECT_TRIES(const location_type &l)
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_HOST(const location_type &l)
static symbol_type make_WHEN_PRESENT(const location_type &l)
static symbol_type make_SENDER_IP(const location_type &l)
static symbol_type make_DHCP_SOCKET_TYPE(const location_type &l)
static symbol_type make_CONFIG_CONTROL(const location_type &l)
static symbol_type make_CONFIG_FETCH_WAIT_TIME(const location_type &l)
static symbol_type make_DHCP4O6_PORT(const location_type &l)
static symbol_type make_NO_CHECK_WITHOUT_DHCID(const location_type &l)
static symbol_type make_CODE(const location_type &l)
static symbol_type make_SHARED_NETWORKS(const location_type &l)
static symbol_type make_DDNS_GENERATED_PREFIX(const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
static symbol_type make_NCR_FORMAT(const location_type &l)
static symbol_type make_WRITE_TIMEOUT(const location_type &l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(const location_type &l)
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_DDNS_CONFLICT_RESOLUTION_MODE(const location_type &l)
static symbol_type make_SUB_DHCP4(const location_type &l)
static symbol_type make_SUBNET_4O6_SUBNET(const location_type &l)
static symbol_type make_OUTPUT(const location_type &l)
static symbol_type make_NEVER_SEND(const location_type &l)
static symbol_type make_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_RENEW_TIMER(const location_type &l)
static symbol_type make_DDNS_OVERRIDE_CLIENT_UPDATE(const location_type &l)
static symbol_type make_CLIENT_CLASSES(const location_type &l)
static symbol_type make_ENCAPSULATE(const location_type &l)
static symbol_type make_STATISTIC_DEFAULT_SAMPLE_AGE(const location_type &l)
static symbol_type make_CIRCUIT_ID(const location_type &l)
static symbol_type make_CACHE_THRESHOLD(const location_type &l)
static symbol_type make_PARKED_PACKET_LIMIT(const location_type &l)
static symbol_type make_PACKET_QUEUE_SIZE(const location_type &l)
static symbol_type make_SERVICE_SOCKETS_RETRY_WAIT_TIME(const location_type &l)
static symbol_type make_STASH_AGENT_OPTIONS(const location_type &l)
static symbol_type make_LEASE_DATABASE(const location_type &l)
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.
void scanEnd()
Method called after the last tokens are scanned.
std::vector< FILE * > sfiles_
sFile (aka FILE) stack
@ SUBNET4
Used while parsing Dhcp4/Subnet4 structures.
@ DATABASE_TYPE
Used while parsing Dhcp4/*-database/type.
@ POOLS
Used while parsing Dhcp4/subnet4/pools structures.
@ CLIENT_CLASSES
Used while parsing Dhcp4/client-classes structures.
@ RESERVATIONS
Used while parsing Dhcp4/reservations structures.
@ HOSTS_DATABASE
Used while parsing Dhcp4/hosts-database[s] structures.
@ NCR_PROTOCOL
Used while parsing Dhcp4/dhcp-ddns/ncr-protocol.
@ LOGGERS
Used while parsing Dhcp4/loggers structures.
@ DATABASE_ON_FAIL
Used while parsing Dhcp4/*-database/on-fail.
@ NCR_FORMAT
Used while parsing Dhcp4/dhcp-ddns/ncr-format.
@ DDNS_CONFLICT_RESOLUTION_MODE
Used while parsing Dhcp4/ib-ddns-conflict-resolution-mode.
@ COMPATIBILITY
Used while parsing compatibility parameters.
@ OUTBOUND_INTERFACE
Used while parsing Dhcp4/interfaces/outbound-interface structures.
@ CONFIG
Used while parsing content of Dhcp4.
@ OUTPUT_OPTIONS
Used while parsing Dhcp4/loggers/output-options structures.
@ CONTROL_SOCKET
Used while parsing Dhcp4/control-socket structures.
@ DHCP_DDNS
Used while parsing Dhcp4/dhcp-ddns.
@ OPTION_DATA
Used while parsing Dhcp4/option-data, Dhcp4/subnet4/option-data or anywhere option-data is present (c...
@ DHCP_MULTI_THREADING
Used while parsing Dhcp4/multi-threading structures.
@ LEASE_DATABASE
Used while parsing Dhcp4/lease-database structures.
@ SHARED_NETWORK
Used while parsing shared-networks structures.
@ EXPIRED_LEASES_PROCESSING
Used while parsing Dhcp4/expired-leases-processing.
@ CONFIG_CONTROL
Used while parsing Dhcp4/config-control.
@ INTERFACES_CONFIG
Used while parsing Dhcp4/interfaces structures.
@ HOST_RESERVATION_IDENTIFIERS
Used while parsing Dhcp4/host-reservation-identifiers.
@ OPTION_DEF
Used while parsing Dhcp4/option-def structures.
@ CONFIG_DATABASE
Used while parsing config-control/config-databases.
@ HOOKS_LIBRARIES
Used while parsing Dhcp4/hooks-libraries.
@ DHCP_QUEUE_CONTROL
Used while parsing Dhcp4/dhcp-queue-control structures.
@ REPLACE_CLIENT_NAME
Used while parsing Dhcp4/dhcp-ddns/replace-client-name.
@ RELAY
Used while parsing Dhcp4/subnet4relay structures.
@ DHCP_SOCKET_TYPE
Used while parsing Dhcp4/interfaces/dhcp-socket-type structures.
ParserType
Defines currently supported scopes.
@ PARSER_INTERFACES
This will parse the input as interfaces content.
@ PARSER_CONFIG_CONTROL
This will parse the input as config-control.
@ PARSER_DHCP_DDNS
This will parse the input as dhcp-ddns.
@ PARSER_DHCP4
This parser will parse the content as Dhcp4 config wrapped in a map (that's the regular config file)
@ PARSER_OPTION_DEFS
This will parse the input option definitions (for tests).
@ PARSER_HOST_RESERVATION
This will parse the input as host-reservation.
@ PARSER_OPTION_DATA
This will parse the input as option data.
@ PARSER_OPTION_DEF
This will parse the input as option definition.
@ PARSER_JSON
This parser will parse the content as generic JSON.
@ PARSER_POOL4
This will parse the input as pool4 content.
@ SUBPARSER_DHCP4
This parser will parse the content of Dhcp4 (without outer { } and without "Dhcp4").
@ PARSER_HOOKS_LIBRARY
This will parse the input as hooks-library.
@ PARSER_SUBNET4
This will parse the input as Subnet4 content.
FILE * sfile_
sFile (aka FILE)
std::vector< struct yy_buffer_state * > states_
Lexer state stack.
isc::dhcp::location loc_
Location of the current token.
void includeFile(const std::string &filename)
Divert input to an include file.
void scanStringBegin(const std::string &str, ParserType type)
Method called before scanning starts on a string.
std::vector< isc::dhcp::location > locs_
Location stack.
#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
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
@ fatal
Definition db_log.h:117
int yy_bs_column
The column count.
int yy_bs_lineno
The line count.
flex_int32_t yy_verify
flex_int32_t yy_nxt