Kea 1.5.0
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 175
695#define YY_END_OF_BUFFER 176
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[1468] =
704 { 0,
705 168, 168, 0, 0, 0, 0, 0, 0, 0, 0,
706 176, 174, 10, 11, 174, 1, 168, 165, 168, 168,
707 174, 167, 166, 174, 174, 174, 174, 174, 161, 162,
708 174, 174, 174, 163, 164, 5, 5, 5, 174, 174,
709 174, 10, 11, 0, 0, 157, 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, 0, 1,
713 168, 168, 0, 167, 168, 3, 2, 6, 0, 168,
714 0, 0, 0, 0, 0, 0, 4, 0, 0, 9,
715
716 0, 158, 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 0, 160, 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, 2, 0,
724 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726
727 0, 159, 0, 0, 0, 0, 0, 0, 0, 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, 67, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 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, 173, 171, 0,
736 170, 169, 0, 0, 0, 0, 0, 0, 0, 0,
737
738 0, 0, 137, 0, 136, 0, 0, 73, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741 0, 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, 70, 0, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
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, 18, 0, 0, 0, 0, 172, 169, 0,
748
749 0, 0, 0, 0, 0, 0, 0, 0, 0, 138,
750 0, 0, 140, 0, 0, 0, 0, 0, 0, 0,
751 0, 74, 0, 0, 0, 0, 0, 0, 59, 0,
752 0, 0, 0, 0, 91, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
755 0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
756 0, 0, 0, 0, 0, 0, 0, 62, 0, 38,
757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
759
760 0, 0, 0, 0, 0, 88, 30, 0, 0, 35,
761 0, 0, 0, 0, 0, 0, 0, 0, 12, 145,
762 0, 142, 0, 141, 0, 0, 0, 101, 0, 0,
763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
765 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 61, 0, 0, 0,
769 0, 0, 0, 0, 0, 102, 0, 0, 0, 0,
770
771 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
772 0, 0, 0, 0, 0, 0, 7, 0, 0, 143,
773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
776 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
778 0, 0, 0, 0, 0, 0, 0, 0, 79, 0,
779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781
782 0, 0, 0, 0, 65, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
784 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 95, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 107, 77,
788 0, 0, 0, 0, 82, 31, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 39, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
792
793 0, 0, 0, 54, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 146, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 96, 0, 0, 0, 0, 0,
798 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
800 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
802 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
803
804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
805 0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
806 120, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 66, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 125, 0, 0, 123, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0, 150, 0,
813 0, 0, 0, 0, 0, 94, 0, 0, 0, 0,
814
815 0, 0, 98, 80, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,
817 22, 0, 103, 0, 0, 0, 0, 0, 0, 0,
818 0, 129, 0, 0, 0, 0, 56, 0, 0, 0,
819 0, 0, 106, 33, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 53,
821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822 0, 0, 0, 60, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
825
826 0, 0, 0, 0, 0, 0, 0, 154, 0, 57,
827 71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
828 50, 0, 0, 0, 0, 0, 0, 0, 126, 0,
829 124, 0, 118, 117, 0, 46, 0, 21, 0, 0,
830 0, 0, 0, 139, 0, 0, 87, 0, 0, 0,
831 0, 0, 0, 0, 0, 0, 115, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0, 104, 15,
833 0, 40, 0, 0, 0, 0, 0, 128, 0, 0,
834 0, 0, 0, 0, 51, 0, 0, 99, 0, 0,
835 0, 0, 90, 0, 0, 0, 0, 0, 0, 63,
836
837 0, 148, 0, 147, 0, 153, 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, 0,
840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0, 14, 0, 0, 45,
842 0, 0, 0, 0, 156, 85, 27, 0, 0, 47,
843 116, 0, 0, 0, 151, 121, 0, 0, 0, 0,
844 0, 0, 0, 0, 25, 0, 0, 24, 0, 127,
845 0, 0, 0, 0, 0, 78, 0, 0, 0, 0,
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
847
848 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
849 0, 105, 0, 0, 0, 26, 0, 152, 0, 0,
850 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
851 0, 0, 20, 155, 55, 0, 149, 144, 28, 0,
852 0, 16, 0, 0, 133, 0, 0, 0, 0, 0,
853 0, 113, 0, 89, 0, 0, 0, 0, 0, 0,
854 0, 0, 68, 0, 0, 0, 0, 0, 0, 0,
855 0, 134, 13, 0, 0, 0, 0, 0, 122, 0,
856 0, 0, 0, 0, 0, 119, 0, 0, 0, 0,
857 0, 112, 0, 19, 0, 130, 0, 0, 0, 0,
858
859 0, 0, 0, 0, 111, 0, 0, 48, 0, 0,
860 43, 132, 0, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
862 0, 0, 0, 0, 0, 0, 0, 131, 0, 86,
863 0, 0, 0, 0, 0, 0, 109, 114, 52, 0,
864 0, 0, 0, 108, 0, 0, 135, 0, 0, 0,
865 0, 0, 75, 0, 0, 110, 0
866 } ;
867
868static const YY_CHAR yy_ec[256] =
869 { 0,
870 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
871 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
872 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
873 1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
874 5, 8, 9, 10, 11, 12, 13, 14, 14, 14,
875 14, 15, 14, 16, 14, 14, 14, 17, 5, 18,
876 5, 19, 20, 5, 21, 22, 23, 24, 25, 26,
877 5, 27, 5, 28, 5, 29, 5, 30, 31, 32,
878 5, 33, 34, 35, 36, 37, 38, 5, 39, 5,
879 40, 41, 42, 5, 43, 5, 44, 45, 46, 47,
880
881 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
882 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
883 68, 69, 70, 5, 71, 5, 5, 5, 5, 5,
884 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
885 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
886 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
887 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
888 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
889 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
890 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
891
892 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
893 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
894 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
895 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
896 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
897 5, 5, 5, 5, 5
898 } ;
899
900static const YY_CHAR yy_meta[72] =
901 { 0,
902 1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
903 3, 3, 3, 5, 5, 5, 3, 3, 3, 3,
904 5, 5, 5, 5, 5, 5, 3, 3, 3, 3,
905 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
906 3, 3, 3, 5, 5, 5, 5, 5, 5, 3,
907 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
908 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
909 3
910 } ;
911
912static const flex_int16_t yy_base[1480] =
913 { 0,
914 0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
915 1830, 1831, 32, 1826, 141, 0, 201, 1831, 206, 88,
916 11, 213, 1831, 1808, 114, 25, 2, 6, 1831, 1831,
917 73, 11, 17, 1831, 1831, 1831, 104, 1814, 1769, 0,
918 1806, 107, 1821, 217, 247, 1831, 1765, 185, 1764, 1770,
919 93, 58, 1762, 91, 211, 195, 14, 273, 195, 1761,
920 181, 275, 207, 211, 76, 68, 188, 1770, 232, 219,
921 296, 284, 280, 1753, 204, 302, 322, 305, 1772, 0,
922 349, 357, 370, 377, 362, 1831, 0, 1831, 301, 342,
923 296, 325, 201, 346, 359, 224, 1831, 1769, 1808, 1831,
924
925 353, 1831, 390, 1797, 357, 1755, 1765, 369, 220, 1760,
926 362, 288, 364, 374, 221, 1803, 0, 441, 366, 1747,
927 1744, 1748, 1744, 1752, 360, 1748, 1737, 1738, 76, 1754,
928 1737, 1746, 1746, 365, 1737, 365, 1738, 1736, 357, 1782,
929 1786, 1728, 1779, 1721, 1744, 1741, 1741, 1735, 268, 1728,
930 1721, 1726, 1720, 371, 1731, 1724, 1715, 1714, 1728, 379,
931 1714, 384, 1730, 1707, 415, 387, 419, 1728, 1725, 1726,
932 1724, 390, 1706, 1708, 420, 1700, 1717, 1709, 0, 386,
933 439, 425, 396, 440, 453, 1708, 1831, 0, 1751, 460,
934 1698, 1701, 437, 452, 1709, 458, 1752, 466, 1751, 462,
935
936 1750, 1831, 506, 1749, 472, 1710, 1702, 1689, 1705, 1702,
937 1701, 1692, 448, 1741, 1735, 1701, 1680, 1688, 1683, 1697,
938 1693, 1681, 1693, 1693, 1684, 1668, 1672, 1685, 1687, 1684,
939 1676, 1666, 1684, 1831, 1679, 1682, 1663, 1662, 1712, 1661,
940 1671, 1674, 496, 1670, 1658, 1669, 1705, 1652, 1708, 1645,
941 1660, 489, 1650, 1666, 1647, 1646, 1652, 1643, 1642, 1649,
942 1697, 1655, 1654, 1648, 77, 1655, 1650, 1642, 1632, 1647,
943 1646, 1641, 1645, 1626, 1642, 1628, 1634, 1641, 1629, 492,
944 1622, 1636, 1677, 1638, 485, 1629, 477, 1831, 1831, 485,
945 1831, 1831, 1616, 0, 456, 473, 1618, 520, 490, 1672,
946
947 1625, 484, 1831, 1670, 1831, 1664, 548, 1831, 474, 1606,
948 1615, 1661, 1607, 1613, 1663, 1620, 1615, 1618, 479, 1831,
949 1616, 1658, 1613, 1610, 528, 1616, 1654, 1648, 1603, 1598,
950 1595, 1644, 1603, 1592, 1608, 1640, 1588, 554, 1602, 1587,
951 1600, 1587, 1597, 1592, 1599, 1594, 1590, 496, 1588, 1591,
952 1586, 1582, 1630, 488, 1624, 1831, 1623, 1575, 1574, 1573,
953 1566, 1568, 1572, 1561, 1574, 518, 1619, 1574, 1571, 1831,
954 1574, 1563, 1563, 1575, 518, 1550, 1551, 1572, 529, 1554,
955 1603, 1550, 1564, 1563, 1549, 1561, 1560, 1559, 1558, 380,
956 1599, 1598, 1831, 1542, 1541, 572, 1554, 1831, 1831, 1553,
957
958 0, 1542, 1534, 525, 1539, 1590, 1589, 1547, 1587, 1831,
959 1535, 1585, 1831, 556, 603, 542, 1584, 1528, 1539, 1535,
960 1523, 1831, 1528, 1534, 1537, 1536, 1523, 1522, 1831, 1524,
961 1521, 538, 1519, 1521, 1831, 1529, 1526, 1511, 1524, 1519,
962 578, 1526, 1514, 1507, 1556, 1831, 1505, 1521, 1553, 1516,
963 1513, 1514, 1516, 1548, 1501, 1496, 1495, 1544, 1490, 1505,
964 1483, 1490, 1495, 1543, 1831, 1490, 1486, 1484, 1493, 1487,
965 1494, 1478, 1478, 1488, 1491, 1480, 1475, 1831, 1530, 1831,
966 1474, 1485, 1470, 1475, 1484, 1478, 1472, 1481, 1521, 1515,
967 1479, 1462, 1462, 1457, 1477, 1452, 1458, 1457, 1465, 1469,
968
969 1452, 1508, 1450, 1464, 1453, 1831, 1831, 1453, 1451, 1831,
970 1462, 1496, 1458, 0, 1442, 1459, 1497, 1447, 1831, 1831,
971 1444, 1831, 1450, 1831, 551, 569, 595, 1831, 1447, 1446,
972 1434, 1485, 1432, 1483, 1430, 1429, 1436, 1429, 1441, 1440,
973 1440, 1422, 1427, 1468, 1435, 1427, 1470, 1416, 1432, 1431,
974 1831, 1416, 1413, 1469, 1426, 1418, 1424, 1415, 1423, 1408,
975 1424, 1406, 1420, 520, 1402, 1396, 1401, 1416, 1413, 1414,
976 1411, 1452, 1409, 1831, 1395, 1397, 1406, 1404, 1441, 1440,
977 1393, 562, 1402, 1385, 1386, 1383, 1831, 1397, 1376, 1395,
978 1387, 1430, 1384, 1391, 1427, 1831, 1374, 1388, 1372, 1386,
979
980 1389, 1370, 1420, 1419, 1418, 1365, 1416, 1415, 1831, 14,
981 1377, 1377, 1375, 1358, 1363, 1365, 1831, 1371, 1361, 1831,
982 1406, 1354, 1409, 568, 501, 1352, 1350, 1357, 1400, 562,
983 1404, 544, 1398, 1397, 1396, 1350, 1340, 1393, 1346, 1354,
984 1355, 1389, 1352, 1346, 1333, 1341, 1384, 1388, 1345, 1344,
985 1831, 1345, 1338, 1327, 1340, 1343, 1338, 1339, 1336, 1335,
986 1331, 1337, 1332, 1373, 1372, 1322, 1312, 552, 1369, 1831,
987 1368, 1317, 1309, 1310, 1359, 1322, 1309, 1320, 1831, 1308,
988 1317, 1316, 1316, 1356, 1299, 1308, 1313, 1290, 1294, 1345,
989 1309, 1291, 1301, 1341, 1340, 1339, 1286, 1337, 1301, 580,
990
991 582, 1278, 1288, 579, 1831, 1338, 1284, 1294, 1294, 1277,
992 1282, 1286, 1276, 1288, 1291, 1328, 1831, 1322, 578, 1284,
993 15, 20, 86, 175, 242, 1831, 274, 374, 536, 561,
994 559, 578, 575, 576, 575, 574, 589, 585, 640, 605,
995 595, 611, 601, 1831, 611, 611, 604, 615, 613, 656,
996 600, 602, 617, 604, 662, 621, 607, 610, 1831, 1831,
997 620, 625, 630, 618, 1831, 1831, 632, 619, 613, 618,
998 636, 623, 671, 624, 674, 625, 681, 1831, 628, 632,
999 627, 685, 640, 630, 631, 627, 640, 651, 635, 653,
1000 648, 649, 651, 644, 646, 647, 647, 649, 664, 703,
1001
1002 662, 667, 644, 1831, 669, 659, 704, 664, 654, 669,
1003 670, 657, 671, 1831, 690, 698, 667, 662, 715, 680,
1004 684, 723, 673, 668, 680, 675, 676, 672, 681, 676,
1005 732, 691, 692, 683, 1831, 685, 696, 681, 697, 692,
1006 737, 706, 690, 691, 1831, 707, 710, 693, 750, 695,
1007 1831, 712, 715, 695, 713, 751, 711, 707, 702, 720,
1008 719, 720, 706, 721, 713, 720, 710, 728, 713, 1831,
1009 721, 727, 772, 1831, 723, 728, 770, 723, 735, 729,
1010 734, 732, 730, 732, 742, 785, 731, 731, 788, 734,
1011 746, 1831, 734, 742, 740, 745, 757, 741, 746, 756,
1012
1013 757, 762, 801, 760, 776, 781, 763, 761, 757, 809,
1014 754, 1831, 754, 774, 763, 768, 775, 816, 817, 766,
1015 1831, 814, 763, 766, 765, 785, 782, 787, 788, 774,
1016 782, 791, 771, 788, 795, 835, 1831, 836, 837, 790,
1017 800, 802, 791, 787, 794, 803, 846, 795, 793, 795,
1018 812, 851, 803, 802, 808, 806, 804, 857, 858, 854,
1019 1831, 818, 811, 802, 821, 809, 819, 816, 821, 817,
1020 830, 830, 1831, 814, 815, 1831, 816, 874, 815, 834,
1021 835, 832, 818, 839, 838, 822, 827, 845, 1831, 835,
1022 868, 859, 889, 831, 853, 1831, 836, 838, 855, 853,
1023
1024 845, 849, 1831, 1831, 859, 859, 895, 844, 897, 846,
1025 904, 849, 860, 852, 858, 854, 873, 874, 875, 1831,
1026 1831, 874, 1831, 859, 861, 880, 870, 863, 875, 917,
1027 883, 1831, 875, 925, 868, 927, 1831, 928, 872, 878,
1028 885, 927, 1831, 1831, 877, 879, 893, 898, 881, 938,
1029 897, 898, 899, 937, 891, 896, 945, 895, 947, 1831,
1030 896, 949, 950, 892, 952, 913, 954, 898, 910, 915,
1031 901, 931, 960, 1831, 919, 912, 963, 912, 927, 914,
1032 910, 926, 931, 918, 914, 972, 927, 932, 1831, 933,
1033 926, 935, 936, 933, 923, 926, 926, 931, 984, 985,
1034
1035 930, 988, 984, 927, 942, 935, 994, 1831, 949, 1831,
1036 1831, 954, 946, 956, 942, 943, 1002, 948, 958, 1006,
1037 1831, 956, 956, 958, 960, 1011, 954, 957, 1831, 976,
1038 1831, 960, 1831, 1831, 974, 1831, 968, 1831, 1018, 969,
1039 1020, 1021, 1003, 1831, 1023, 982, 1831, 970, 978, 972,
1040 971, 974, 974, 975, 982, 972, 1831, 994, 980, 981,
1041 996, 996, 999, 999, 996, 1038, 1002, 995, 1831, 1831,
1042 1005, 1831, 1002, 1007, 1008, 1005, 1047, 1831, 998, 999,
1043 999, 1005, 1004, 1015, 1831, 1054, 1003, 1831, 1004, 1004,
1044 1006, 1012, 1831, 1014, 1066, 1017, 1020, 1069, 1032, 1831,
1045
1046 1029, 1831, 1026, 1831, 1049, 1831, 1074, 1075, 1076, 1035,
1047 1021, 1079, 1080, 1035, 1025, 1030, 1084, 1085, 1081, 1046,
1048 1042, 1084, 1034, 1039, 1037, 1094, 1052, 1096, 1056, 1098,
1049 1061, 1051, 1045, 1061, 1061, 1105, 1049, 1066, 1065, 1049,
1050 1105, 1106, 1055, 1108, 1073, 1074, 1831, 1074, 1061, 1831,
1051 1072, 1119, 1079, 1092, 1831, 1831, 1831, 1066, 1123, 1831,
1052 1831, 1072, 1070, 1084, 1831, 1831, 1074, 1123, 1068, 1073,
1053 1131, 1081, 1091, 1092, 1831, 1135, 1090, 1831, 1137, 1831,
1054 1082, 1097, 1085, 1100, 1104, 1831, 1138, 1106, 1099, 1108,
1055 1090, 1097, 1151, 1112, 1111, 1154, 1155, 1156, 1107, 1831,
1056
1057 1158, 1159, 1160, 1831, 1110, 1110, 1163, 1109, 1108, 1166,
1058 1121, 1831, 1163, 1116, 1113, 1831, 1127, 1831, 1130, 1173,
1059 1128, 1175, 1136, 1119, 1121, 1118, 1134, 1135, 1144, 1831,
1060 1134, 1184, 1831, 1831, 1831, 1180, 1831, 1831, 1831, 1181,
1061 1138, 1831, 1136, 1143, 1831, 1140, 1145, 1143, 1193, 1194,
1062 1139, 1831, 1154, 1831, 1155, 1145, 1157, 1200, 1144, 1152,
1063 1153, 1166, 1831, 1165, 1153, 1207, 1168, 1159, 1168, 1170,
1064 1174, 1831, 1831, 1213, 1158, 1215, 1175, 1217, 1831, 1213,
1065 1177, 1178, 1165, 1160, 1181, 1831, 1182, 1183, 1226, 1185,
1066 1188, 1831, 1229, 1831, 1192, 1831, 1174, 1232, 1233, 1178,
1067
1068 1195, 1181, 1181, 1183, 1831, 1188, 1198, 1831, 1184, 1196,
1069 1831, 1831, 1201, 1195, 1199, 1190, 1242, 1191, 1199, 1208,
1070 1201, 1196, 1211, 1202, 1209, 1196, 1211, 1216, 1259, 1218,
1071 1261, 1206, 1222, 1213, 1227, 1223, 1216, 1831, 1268, 1831,
1072 1269, 1270, 1227, 1226, 1227, 1217, 1831, 1831, 1831, 1275,
1073 1219, 1235, 1278, 1831, 1274, 1225, 1831, 1224, 1226, 1237,
1074 1284, 1235, 1831, 1244, 1287, 1831, 1831, 1293, 1298, 1303,
1075 1308, 1313, 1318, 1323, 1326, 1300, 1305, 1307, 1320
1076 } ;
1077
1078static const flex_int16_t yy_def[1480] =
1079 { 0,
1080 1468, 1468, 1469, 1469, 1468, 1468, 1468, 1468, 1468, 1468,
1081 1467, 1467, 1467, 1467, 1467, 1470, 1467, 1467, 1467, 1467,
1082 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1083 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471,
1084 1467, 1467, 1467, 1472, 15, 1467, 45, 45, 45, 45,
1085 45, 45, 45, 45, 45, 45, 45, 1473, 45, 45,
1086 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1087 45, 45, 45, 45, 45, 45, 45, 45, 45, 1470,
1088 1467, 1467, 1467, 1467, 1467, 1467, 1474, 1467, 1467, 1467,
1089 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, 1467,
1090
1091 1472, 1467, 1467, 45, 45, 45, 45, 45, 45, 45,
1092 45, 45, 45, 45, 45, 1475, 45, 1473, 45, 45,
1093 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1094 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1095 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1096 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1097 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1098 45, 45, 45, 45, 45, 45, 45, 45, 1474, 1467,
1099 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1476, 45, 45,
1100 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1101
1102 1475, 1467, 1473, 45, 45, 45, 45, 45, 45, 45,
1103 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1104 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1105 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1106 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1107 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1108 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1109 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1110 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 1467,
1111 1467, 1467, 1467, 1477, 45, 45, 45, 45, 45, 45,
1112
1113 45, 45, 1467, 45, 1467, 45, 1473, 1467, 45, 45,
1114 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1115 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1116 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1117 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1118 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1119 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1120 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1121 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1122 45, 45, 1467, 45, 45, 45, 45, 1467, 1467, 1467,
1123
1124 1478, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1125 45, 45, 1467, 45, 1473, 45, 45, 45, 45, 45,
1126 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45,
1127 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
1128 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1129 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1130 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
1131 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
1132 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1133 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1134
1135 45, 45, 45, 45, 45, 1467, 1467, 45, 45, 1467,
1136 45, 45, 1467, 1479, 45, 45, 45, 45, 1467, 1467,
1137 45, 1467, 45, 1467, 45, 45, 45, 1467, 45, 45,
1138 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1139 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1140 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1141 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1142 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1143 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
1144 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1145
1146 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
1147 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
1148 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1149 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1150 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1151 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1152 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1153 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
1154 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1155 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1156
1157 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
1158 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
1159 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1160 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1161 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1162 45, 45, 45, 45, 45, 45, 45, 45, 1467, 1467,
1163 45, 45, 45, 45, 1467, 1467, 45, 45, 45, 45,
1164 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
1165 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1166 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1167
1168 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1169 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1170 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1171 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
1172 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
1173 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1174 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1175 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1176 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1177 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
1178
1179 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1180 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
1181 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1182 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
1183 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1184 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1185 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1186 45, 45, 1467, 45, 45, 1467, 45, 45, 45, 45,
1187 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
1188 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1189
1190 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45,
1191 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1192 1467, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
1193 45, 1467, 45, 45, 45, 45, 1467, 45, 45, 45,
1194 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45,
1195 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1196 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1197 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1198 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
1199 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1200
1201 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
1202 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1203 1467, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
1204 1467, 45, 1467, 1467, 45, 1467, 45, 1467, 45, 45,
1205 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45,
1206 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
1207 45, 45, 45, 45, 45, 45, 45, 45, 1467, 1467,
1208 45, 1467, 45, 45, 45, 45, 45, 1467, 45, 45,
1209 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 45,
1210 45, 45, 1467, 45, 45, 45, 45, 45, 45, 1467,
1211
1212 45, 1467, 45, 1467, 45, 1467, 45, 45, 45, 45,
1213 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1214 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1215 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1216 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
1217 45, 45, 45, 45, 1467, 1467, 1467, 45, 45, 1467,
1218 1467, 45, 45, 45, 1467, 1467, 45, 45, 45, 45,
1219 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 1467,
1220 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1221 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1222
1223 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
1224 45, 1467, 45, 45, 45, 1467, 45, 1467, 45, 45,
1225 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
1226 45, 45, 1467, 1467, 1467, 45, 1467, 1467, 1467, 45,
1227 45, 1467, 45, 45, 1467, 45, 45, 45, 45, 45,
1228 45, 1467, 45, 1467, 45, 45, 45, 45, 45, 45,
1229 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
1230 45, 1467, 1467, 45, 45, 45, 45, 45, 1467, 45,
1231 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
1232 45, 1467, 45, 1467, 45, 1467, 45, 45, 45, 45,
1233
1234 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 45,
1235 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
1236 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1237 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
1238 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 45,
1239 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45,
1240 45, 45, 1467, 45, 45, 1467, 0, 1467, 1467, 1467,
1241 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467
1242 } ;
1243
1244static const flex_int16_t yy_nxt[1903] =
1245 { 0,
1246 1467, 13, 14, 13, 1467, 15, 16, 1467, 17, 18,
1247 19, 20, 21, 22, 22, 22, 23, 24, 86, 705,
1248 37, 14, 37, 87, 25, 26, 38, 1467, 706, 27,
1249 37, 14, 37, 42, 28, 42, 38, 92, 93, 29,
1250 115, 30, 13, 14, 13, 91, 92, 25, 31, 93,
1251 13, 14, 13, 13, 14, 13, 32, 40, 818, 13,
1252 14, 13, 33, 40, 115, 92, 93, 819, 91, 34,
1253 35, 13, 14, 13, 95, 15, 16, 96, 17, 18,
1254 19, 20, 21, 22, 22, 22, 23, 24, 13, 14,
1255 13, 109, 39, 91, 25, 26, 13, 14, 13, 27,
1256
1257 39, 85, 85, 85, 28, 42, 41, 42, 42, 29,
1258 42, 30, 83, 108, 41, 111, 94, 25, 31, 109,
1259 217, 218, 89, 137, 89, 139, 32, 90, 90, 90,
1260 138, 374, 33, 140, 375, 83, 108, 820, 111, 34,
1261 35, 44, 44, 44, 45, 45, 46, 45, 45, 45,
1262 45, 45, 45, 45, 45, 47, 45, 45, 45, 45,
1263 45, 48, 45, 49, 50, 45, 51, 45, 52, 53,
1264 54, 45, 45, 45, 45, 55, 56, 45, 57, 45,
1265 45, 58, 45, 45, 59, 60, 61, 62, 63, 64,
1266 65, 66, 67, 52, 68, 69, 70, 71, 72, 73,
1267
1268 74, 75, 76, 77, 78, 79, 57, 45, 45, 45,
1269 45, 45, 81, 105, 82, 82, 82, 81, 114, 84,
1270 84, 84, 102, 105, 81, 83, 84, 84, 84, 821,
1271 83, 108, 123, 112, 141, 124, 182, 83, 125, 105,
1272 126, 114, 127, 113, 142, 200, 143, 164, 83, 119,
1273 194, 165, 133, 83, 108, 120, 112, 103, 121, 182,
1274 83, 45, 149, 134, 182, 136, 150, 45, 200, 45,
1275 45, 113, 45, 135, 45, 45, 45, 194, 117, 145,
1276 146, 45, 45, 147, 45, 45, 151, 185, 822, 148,
1277 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1278
1279 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1280 45, 45, 45, 45, 90, 90, 90, 45, 128, 197,
1281 111, 45, 129, 160, 180, 130, 131, 161, 114, 45,
1282 242, 823, 155, 45, 243, 45, 118, 162, 132, 152,
1283 156, 153, 157, 154, 112, 166, 197, 158, 159, 167,
1284 180, 175, 168, 181, 113, 90, 90, 90, 102, 169,
1285 170, 176, 85, 85, 85, 171, 177, 172, 81, 173,
1286 82, 82, 82, 83, 180, 85, 85, 85, 89, 181,
1287 89, 83, 113, 90, 90, 90, 83, 181, 81, 174,
1288 84, 84, 84, 103, 190, 101, 83, 193, 196, 198,
1289
1290 183, 83, 101, 190, 83, 199, 211, 196, 223, 83,
1291 224, 230, 226, 184, 231, 212, 213, 824, 232, 287,
1292 204, 197, 190, 193, 83, 262, 196, 198, 227, 287,
1293 101, 205, 199, 504, 101, 196, 505, 248, 101, 254,
1294 255, 257, 271, 272, 258, 259, 101, 287, 280, 289,
1295 101, 199, 101, 188, 203, 203, 203, 290, 263, 264,
1296 265, 203, 203, 203, 203, 203, 203, 288, 288, 266,
1297 299, 267, 289, 268, 269, 273, 270, 289, 283, 274,
1298 296, 300, 302, 275, 203, 203, 203, 203, 203, 203,
1299 304, 306, 296, 288, 291, 395, 317, 303, 299, 359,
1300
1301 292, 398, 390, 296, 318, 302, 348, 402, 300, 398,
1302 319, 404, 404, 304, 409, 309, 412, 403, 306, 307,
1303 307, 307, 426, 478, 398, 719, 307, 307, 307, 307,
1304 307, 307, 399, 360, 406, 407, 466, 409, 432, 427,
1305 404, 416, 433, 408, 412, 396, 467, 361, 719, 307,
1306 307, 307, 307, 307, 307, 459, 460, 349, 517, 446,
1307 350, 415, 415, 415, 447, 661, 662, 679, 415, 415,
1308 415, 415, 415, 415, 487, 517, 492, 510, 488, 479,
1309 493, 624, 511, 551, 541, 525, 517, 526, 552, 727,
1310 728, 415, 415, 415, 415, 415, 415, 542, 825, 543,
1311
1312 620, 625, 718, 527, 680, 626, 763, 724, 624, 764,
1313 448, 816, 525, 725, 526, 449, 45, 45, 45, 826,
1314 827, 828, 829, 45, 45, 45, 45, 45, 45, 625,
1315 718, 794, 796, 797, 830, 802, 831, 832, 795, 816,
1316 798, 803, 833, 834, 799, 835, 45, 45, 45, 45,
1317 45, 45, 836, 837, 838, 839, 840, 841, 842, 843,
1318 844, 845, 847, 848, 849, 850, 846, 851, 852, 853,
1319 854, 855, 856, 857, 858, 859, 860, 861, 862, 863,
1320 865, 866, 867, 864, 868, 869, 870, 871, 872, 873,
1321 874, 875, 876, 877, 878, 879, 880, 881, 882, 883,
1322
1323 884, 885, 886, 887, 888, 889, 890, 891, 892, 893,
1324 894, 895, 896, 897, 898, 899, 900, 901, 902, 903,
1325 904, 905, 906, 907, 908, 909, 910, 911, 912, 913,
1326 914, 915, 916, 917, 918, 919, 920, 921, 922, 923,
1327 924, 925, 926, 927, 928, 906, 929, 930, 905, 931,
1328 932, 933, 934, 935, 936, 937, 939, 940, 941, 942,
1329 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
1330 953, 954, 955, 956, 958, 959, 960, 961, 962, 963,
1331 964, 965, 966, 967, 957, 968, 969, 970, 971, 972,
1332 973, 974, 975, 976, 977, 978, 979, 980, 981, 982,
1333
1334 983, 984, 985, 986, 987, 988, 989, 990, 991, 993,
1335 992, 938, 994, 995, 996, 997, 998, 999, 1000, 1001,
1336 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
1337 1012, 1013, 1014, 1015, 1016, 1017, 991, 992, 1018, 1019,
1338 1020, 1021, 1023, 1025, 1026, 1027, 1022, 1028, 1029, 1030,
1339 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
1340 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
1341 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
1342 1061, 1062, 1063, 1064, 1024, 1065, 1066, 1067, 1068, 1069,
1343 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
1344
1345 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
1346 1090, 1091, 1092, 1093, 1094, 1072, 1095, 1096, 1097, 1098,
1347 1099, 1073, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
1348 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
1349 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1127, 1128,
1350 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
1351 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1149,
1352 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
1353 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169,
1354 1170, 1171, 1143, 1172, 1173, 1174, 1175, 1177, 1126, 1178,
1355
1356 1179, 1180, 1181, 1182, 1176, 1183, 1184, 1185, 1186, 1187,
1357 1148, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
1358 1197, 1198, 1199, 1200, 1201, 1202, 1204, 1205, 1206, 1207,
1359 1203, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
1360 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
1361 1205, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
1362 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
1363 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
1364 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
1365 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
1366
1367 1277, 1278, 1279, 1280, 1281, 1254, 1282, 1283, 1284, 1285,
1368 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
1369 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
1370 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
1371 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325,
1372 1326, 1327, 1328, 1329, 1302, 1276, 1330, 1331, 1332, 1333,
1373 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
1374 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
1375 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
1376 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
1377
1378 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
1379 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
1380 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
1381 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413,
1382 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423,
1383 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433,
1384 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443,
1385 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453,
1386 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463,
1387 1464, 1465, 1466, 12, 12, 12, 12, 12, 36, 36,
1388
1389 36, 36, 36, 80, 294, 80, 80, 80, 99, 401,
1390 99, 514, 99, 101, 101, 101, 101, 101, 116, 116,
1391 116, 116, 116, 179, 101, 179, 179, 179, 201, 201,
1392 201, 817, 815, 814, 813, 812, 811, 810, 809, 808,
1393 807, 806, 805, 804, 801, 800, 793, 792, 791, 790,
1394 789, 788, 787, 786, 785, 784, 783, 782, 781, 780,
1395 779, 778, 777, 776, 775, 774, 773, 772, 771, 770,
1396 769, 768, 767, 766, 765, 762, 761, 760, 759, 758,
1397 757, 756, 755, 754, 753, 752, 751, 750, 749, 748,
1398 747, 746, 745, 744, 743, 742, 741, 740, 739, 738,
1399
1400 737, 736, 735, 734, 733, 732, 731, 730, 729, 726,
1401 723, 722, 721, 720, 717, 716, 715, 714, 713, 712,
1402 711, 710, 709, 708, 707, 704, 703, 702, 701, 700,
1403 699, 698, 697, 696, 695, 694, 693, 692, 691, 690,
1404 689, 688, 687, 686, 685, 684, 683, 682, 681, 678,
1405 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
1406 667, 666, 665, 664, 663, 660, 659, 658, 657, 656,
1407 655, 654, 653, 652, 651, 650, 649, 648, 647, 646,
1408 645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
1409 635, 634, 633, 632, 631, 630, 629, 628, 627, 623,
1410
1411 622, 621, 620, 619, 618, 617, 616, 615, 614, 613,
1412 612, 611, 610, 609, 608, 607, 606, 605, 604, 603,
1413 602, 601, 600, 599, 598, 597, 596, 595, 594, 593,
1414 592, 591, 590, 589, 588, 587, 586, 585, 584, 583,
1415 582, 581, 580, 579, 578, 577, 576, 575, 574, 573,
1416 572, 571, 570, 569, 568, 567, 566, 565, 564, 563,
1417 562, 561, 560, 559, 558, 557, 556, 555, 554, 553,
1418 550, 549, 548, 547, 546, 545, 544, 540, 539, 538,
1419 537, 536, 535, 534, 533, 532, 531, 530, 529, 528,
1420 524, 523, 522, 521, 520, 519, 518, 516, 515, 513,
1421
1422 512, 509, 508, 507, 506, 503, 502, 501, 500, 499,
1423 498, 497, 496, 495, 494, 491, 490, 489, 486, 485,
1424 484, 483, 482, 481, 480, 477, 476, 475, 474, 473,
1425 472, 471, 470, 469, 468, 465, 464, 463, 462, 461,
1426 458, 457, 456, 455, 454, 453, 452, 451, 450, 445,
1427 444, 443, 442, 441, 440, 439, 438, 437, 436, 435,
1428 434, 431, 430, 429, 428, 425, 424, 423, 422, 421,
1429 420, 419, 418, 417, 414, 413, 411, 410, 405, 400,
1430 397, 394, 393, 392, 391, 389, 388, 387, 386, 385,
1431 384, 383, 382, 381, 380, 379, 378, 377, 376, 373,
1432
1433 372, 371, 370, 369, 368, 367, 366, 365, 364, 363,
1434 362, 358, 357, 356, 355, 354, 353, 352, 351, 347,
1435 346, 345, 344, 343, 342, 341, 340, 339, 338, 337,
1436 336, 335, 334, 333, 332, 331, 330, 329, 328, 327,
1437 326, 325, 324, 323, 322, 321, 320, 316, 315, 314,
1438 313, 312, 311, 310, 308, 202, 305, 303, 301, 298,
1439 297, 295, 293, 286, 285, 284, 282, 281, 279, 278,
1440 277, 276, 261, 260, 256, 253, 252, 251, 250, 249,
1441 247, 246, 245, 244, 241, 240, 239, 238, 237, 236,
1442 235, 234, 233, 229, 228, 225, 222, 221, 220, 219,
1443
1444 216, 215, 214, 210, 209, 208, 207, 206, 202, 195,
1445 192, 191, 189, 187, 186, 178, 163, 144, 122, 110,
1446 107, 106, 104, 43, 100, 98, 97, 88, 43, 1467,
1447 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1448 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1449 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1450 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1451 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1452 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1453 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1454
1455 1467, 1467
1456 } ;
1457
1458static const flex_int16_t yy_chk[1903] =
1459 { 0,
1460 0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1461 1, 1, 1, 1, 1, 1, 1, 1, 21, 610,
1462 3, 3, 3, 21, 1, 1, 3, 0, 610, 1,
1463 4, 4, 4, 13, 1, 13, 4, 27, 28, 1,
1464 57, 1, 5, 5, 5, 26, 32, 1, 1, 33,
1465 6, 6, 6, 7, 7, 7, 1, 7, 721, 8,
1466 8, 8, 1, 8, 57, 27, 28, 722, 26, 1,
1467 1, 2, 2, 2, 32, 2, 2, 33, 2, 2,
1468 2, 2, 2, 2, 2, 2, 2, 2, 9, 9,
1469 9, 52, 5, 31, 2, 2, 10, 10, 10, 2,
1470
1471 6, 20, 20, 20, 2, 37, 9, 37, 42, 2,
1472 42, 2, 20, 51, 10, 54, 31, 2, 2, 52,
1473 129, 129, 25, 65, 25, 66, 2, 25, 25, 25,
1474 65, 265, 2, 66, 265, 20, 51, 723, 54, 2,
1475 2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1476 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1477 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1478 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1479 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1480 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1481
1482 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1483 15, 15, 17, 48, 17, 17, 17, 19, 56, 19,
1484 19, 19, 44, 59, 22, 17, 22, 22, 22, 724,
1485 19, 64, 61, 55, 67, 61, 93, 22, 61, 48,
1486 61, 56, 61, 55, 67, 115, 67, 75, 17, 59,
1487 109, 75, 63, 19, 64, 59, 55, 44, 59, 96,
1488 22, 45, 70, 63, 93, 64, 70, 45, 115, 45,
1489 45, 55, 45, 63, 45, 45, 45, 109, 58, 69,
1490 69, 45, 45, 69, 45, 58, 70, 96, 725, 69,
1491 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1492
1493 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1494 45, 45, 45, 58, 89, 89, 89, 58, 62, 112,
1495 71, 58, 62, 73, 91, 62, 62, 73, 78, 58,
1496 149, 727, 72, 58, 149, 58, 58, 73, 62, 71,
1497 72, 71, 72, 71, 77, 76, 112, 72, 72, 76,
1498 91, 78, 76, 92, 77, 90, 90, 90, 101, 76,
1499 76, 78, 81, 81, 81, 76, 78, 77, 82, 77,
1500 82, 82, 82, 81, 94, 85, 85, 85, 83, 92,
1501 83, 82, 77, 83, 83, 83, 85, 95, 84, 77,
1502 84, 84, 84, 101, 105, 103, 81, 108, 111, 113,
1503
1504 94, 84, 103, 119, 82, 114, 125, 154, 134, 85,
1505 134, 139, 136, 95, 139, 125, 125, 728, 139, 180,
1506 119, 172, 105, 108, 84, 165, 111, 113, 136, 183,
1507 103, 119, 114, 390, 103, 154, 390, 154, 103, 160,
1508 160, 162, 166, 166, 162, 162, 103, 180, 172, 182,
1509 103, 175, 103, 103, 118, 118, 118, 183, 165, 165,
1510 165, 118, 118, 118, 118, 118, 118, 181, 184, 165,
1511 193, 165, 182, 165, 165, 167, 165, 185, 175, 167,
1512 190, 194, 196, 167, 118, 118, 118, 118, 118, 118,
1513 198, 200, 205, 181, 184, 285, 213, 280, 193, 252,
1514
1515 185, 287, 280, 190, 213, 196, 243, 295, 194, 290,
1516 213, 296, 309, 198, 299, 205, 302, 295, 200, 203,
1517 203, 203, 319, 366, 287, 625, 203, 203, 203, 203,
1518 203, 203, 290, 252, 298, 298, 354, 299, 325, 319,
1519 296, 309, 325, 298, 302, 285, 354, 252, 625, 203,
1520 203, 203, 203, 203, 203, 348, 348, 243, 404, 338,
1521 243, 307, 307, 307, 338, 564, 564, 582, 307, 307,
1522 307, 307, 307, 307, 375, 416, 379, 396, 375, 366,
1523 379, 525, 396, 441, 432, 414, 404, 414, 441, 632,
1524 632, 307, 307, 307, 307, 307, 307, 432, 729, 432,
1525
1526 527, 526, 624, 416, 582, 527, 668, 630, 525, 668,
1527 338, 719, 414, 630, 414, 338, 415, 415, 415, 730,
1528 731, 732, 733, 415, 415, 415, 415, 415, 415, 526,
1529 624, 700, 701, 701, 734, 704, 735, 736, 700, 719,
1530 701, 704, 737, 738, 701, 739, 415, 415, 415, 415,
1531 415, 415, 740, 741, 742, 743, 745, 746, 747, 748,
1532 749, 750, 751, 752, 753, 754, 750, 755, 756, 757,
1533 758, 761, 762, 763, 764, 767, 768, 769, 770, 771,
1534 772, 773, 774, 771, 775, 776, 777, 779, 780, 781,
1535 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
1536
1537 792, 793, 794, 795, 796, 797, 798, 799, 800, 801,
1538 802, 803, 805, 806, 807, 808, 809, 810, 811, 812,
1539 813, 815, 816, 817, 818, 819, 820, 821, 822, 823,
1540 824, 825, 826, 827, 828, 829, 830, 831, 832, 833,
1541 834, 836, 837, 838, 839, 816, 840, 841, 815, 842,
1542 843, 844, 846, 847, 848, 849, 850, 852, 853, 854,
1543 855, 856, 857, 858, 859, 860, 861, 862, 863, 864,
1544 865, 866, 867, 868, 869, 871, 872, 873, 875, 876,
1545 877, 878, 879, 880, 868, 881, 882, 883, 884, 885,
1546 886, 887, 888, 889, 890, 891, 893, 894, 895, 896,
1547
1548 897, 898, 899, 900, 901, 902, 903, 904, 905, 907,
1549 906, 849, 908, 909, 910, 911, 913, 914, 915, 916,
1550 917, 918, 919, 920, 922, 923, 924, 925, 926, 927,
1551 928, 929, 930, 931, 932, 933, 905, 906, 934, 935,
1552 936, 938, 939, 940, 941, 942, 938, 943, 944, 945,
1553 946, 947, 948, 949, 950, 951, 952, 953, 954, 955,
1554 956, 957, 958, 959, 960, 962, 963, 964, 965, 966,
1555 967, 968, 969, 970, 971, 972, 974, 975, 977, 978,
1556 979, 980, 981, 982, 939, 983, 984, 985, 986, 987,
1557 988, 990, 991, 992, 993, 994, 995, 997, 998, 999,
1558
1559 1000, 1001, 1002, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
1560 1012, 1013, 1014, 1015, 1016, 991, 1017, 1018, 1019, 1022,
1561 1024, 992, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1033,
1562 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1045, 1046,
1563 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
1564 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
1565 1068, 1069, 1070, 1071, 1072, 1073, 1075, 1076, 1077, 1078,
1566 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
1567 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
1568 1100, 1101, 1072, 1102, 1103, 1104, 1105, 1106, 1054, 1107,
1569
1570 1109, 1112, 1113, 1114, 1105, 1115, 1116, 1117, 1118, 1119,
1571 1077, 1120, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1130,
1572 1132, 1135, 1137, 1139, 1140, 1141, 1142, 1143, 1145, 1146,
1573 1141, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
1574 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
1575 1143, 1168, 1171, 1173, 1174, 1175, 1176, 1177, 1179, 1180,
1576 1181, 1182, 1183, 1184, 1186, 1187, 1189, 1190, 1191, 1192,
1577 1194, 1195, 1196, 1197, 1198, 1199, 1201, 1203, 1205, 1207,
1578 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
1579 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1225, 1226,
1580
1581 1227, 1228, 1229, 1230, 1231, 1205, 1232, 1233, 1234, 1235,
1582 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
1583 1246, 1248, 1249, 1251, 1252, 1253, 1254, 1258, 1259, 1262,
1584 1263, 1264, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
1585 1276, 1277, 1279, 1281, 1282, 1283, 1284, 1285, 1287, 1288,
1586 1289, 1290, 1291, 1292, 1254, 1226, 1293, 1294, 1295, 1296,
1587 1297, 1298, 1299, 1301, 1302, 1303, 1305, 1306, 1307, 1308,
1588 1309, 1310, 1311, 1313, 1314, 1315, 1317, 1319, 1320, 1321,
1589 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1331, 1332,
1590 1336, 1340, 1341, 1343, 1344, 1346, 1347, 1348, 1349, 1350,
1591
1592 1351, 1353, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
1593 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1374, 1375,
1594 1376, 1377, 1378, 1380, 1381, 1382, 1383, 1384, 1385, 1387,
1595 1388, 1389, 1390, 1391, 1393, 1395, 1397, 1398, 1399, 1400,
1596 1401, 1402, 1403, 1404, 1406, 1407, 1409, 1410, 1413, 1414,
1597 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
1598 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
1599 1435, 1436, 1437, 1439, 1441, 1442, 1443, 1444, 1445, 1446,
1600 1450, 1451, 1452, 1453, 1455, 1456, 1458, 1459, 1460, 1461,
1601 1462, 1464, 1465, 1468, 1468, 1468, 1468, 1468, 1469, 1469,
1602
1603 1469, 1469, 1469, 1470, 1476, 1470, 1470, 1470, 1471, 1477,
1604 1471, 1478, 1471, 1472, 1472, 1472, 1472, 1472, 1473, 1473,
1605 1473, 1473, 1473, 1474, 1479, 1474, 1474, 1474, 1475, 1475,
1606 1475, 720, 718, 716, 715, 714, 713, 712, 711, 710,
1607 709, 708, 707, 706, 703, 702, 699, 698, 697, 696,
1608 695, 694, 693, 692, 691, 690, 689, 688, 687, 686,
1609 685, 684, 683, 682, 681, 680, 678, 677, 676, 675,
1610 674, 673, 672, 671, 669, 667, 666, 665, 664, 663,
1611 662, 661, 660, 659, 658, 657, 656, 655, 654, 653,
1612 652, 650, 649, 648, 647, 646, 645, 644, 643, 642,
1613
1614 641, 640, 639, 638, 637, 636, 635, 634, 633, 631,
1615 629, 628, 627, 626, 623, 622, 621, 619, 618, 616,
1616 615, 614, 613, 612, 611, 608, 607, 606, 605, 604,
1617 603, 602, 601, 600, 599, 598, 597, 595, 594, 593,
1618 592, 591, 590, 589, 588, 586, 585, 584, 583, 581,
1619 580, 579, 578, 577, 576, 575, 573, 572, 571, 570,
1620 569, 568, 567, 566, 565, 563, 562, 561, 560, 559,
1621 558, 557, 556, 555, 554, 553, 552, 550, 549, 548,
1622 547, 546, 545, 544, 543, 542, 541, 540, 539, 538,
1623 537, 536, 535, 534, 533, 532, 531, 530, 529, 523,
1624
1625 521, 518, 517, 516, 515, 513, 512, 511, 509, 508,
1626 505, 504, 503, 502, 501, 500, 499, 498, 497, 496,
1627 495, 494, 493, 492, 491, 490, 489, 488, 487, 486,
1628 485, 484, 483, 482, 481, 479, 477, 476, 475, 474,
1629 473, 472, 471, 470, 469, 468, 467, 466, 464, 463,
1630 462, 461, 460, 459, 458, 457, 456, 455, 454, 453,
1631 452, 451, 450, 449, 448, 447, 445, 444, 443, 442,
1632 440, 439, 438, 437, 436, 434, 433, 431, 430, 428,
1633 427, 426, 425, 424, 423, 421, 420, 419, 418, 417,
1634 412, 411, 409, 408, 407, 406, 405, 403, 402, 400,
1635
1636 397, 395, 394, 392, 391, 389, 388, 387, 386, 385,
1637 384, 383, 382, 381, 380, 378, 377, 376, 374, 373,
1638 372, 371, 369, 368, 367, 365, 364, 363, 362, 361,
1639 360, 359, 358, 357, 355, 353, 352, 351, 350, 349,
1640 347, 346, 345, 344, 343, 342, 341, 340, 339, 337,
1641 336, 335, 334, 333, 332, 331, 330, 329, 328, 327,
1642 326, 324, 323, 322, 321, 318, 317, 316, 315, 314,
1643 313, 312, 311, 310, 306, 304, 301, 300, 297, 293,
1644 286, 284, 283, 282, 281, 279, 278, 277, 276, 275,
1645 274, 273, 272, 271, 270, 269, 268, 267, 266, 264,
1646
1647 263, 262, 261, 260, 259, 258, 257, 256, 255, 254,
1648 253, 251, 250, 249, 248, 247, 246, 245, 244, 242,
1649 241, 240, 239, 238, 237, 236, 235, 233, 232, 231,
1650 230, 229, 228, 227, 226, 225, 224, 223, 222, 221,
1651 220, 219, 218, 217, 216, 215, 214, 212, 211, 210,
1652 209, 208, 207, 206, 204, 201, 199, 197, 195, 192,
1653 191, 189, 186, 178, 177, 176, 174, 173, 171, 170,
1654 169, 168, 164, 163, 161, 159, 158, 157, 156, 155,
1655 153, 152, 151, 150, 148, 147, 146, 145, 144, 143,
1656 142, 141, 140, 138, 137, 135, 133, 132, 131, 130,
1657
1658 128, 127, 126, 124, 123, 122, 121, 120, 116, 110,
1659 107, 106, 104, 99, 98, 79, 74, 68, 60, 53,
1660 50, 49, 47, 43, 41, 39, 38, 24, 14, 11,
1661 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1662 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1663 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1664 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1665 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1666 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1667 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
1668
1669 1467, 1467
1670 } ;
1671
1672static yy_state_type yy_last_accepting_state;
1673static char *yy_last_accepting_cpos;
1674
1675extern int yy_flex_debug;
1677
1678static const flex_int16_t yy_rule_linenum[175] =
1679 { 0,
1680 147, 149, 151, 156, 157, 162, 163, 164, 176, 179,
1681 184, 191, 200, 209, 218, 227, 236, 245, 255, 264,
1682 273, 282, 291, 300, 309, 318, 327, 336, 345, 354,
1683 366, 375, 384, 393, 402, 413, 424, 435, 446, 456,
1684 466, 477, 488, 499, 510, 521, 532, 543, 554, 565,
1685 576, 587, 596, 605, 615, 624, 634, 648, 664, 673,
1686 682, 691, 700, 721, 742, 751, 761, 770, 781, 790,
1687 799, 808, 817, 826, 836, 845, 854, 863, 872, 881,
1688 890, 899, 908, 917, 926, 936, 947, 959, 968, 977,
1689 987, 997, 1007, 1017, 1027, 1037, 1046, 1056, 1065, 1074,
1690
1691 1083, 1092, 1102, 1112, 1121, 1131, 1140, 1149, 1158, 1167,
1692 1176, 1185, 1194, 1203, 1212, 1221, 1230, 1239, 1248, 1257,
1693 1266, 1275, 1284, 1293, 1302, 1311, 1320, 1329, 1338, 1347,
1694 1356, 1365, 1374, 1383, 1392, 1401, 1411, 1421, 1431, 1441,
1695 1451, 1461, 1471, 1481, 1491, 1500, 1509, 1518, 1527, 1536,
1696 1545, 1554, 1565, 1576, 1589, 1602, 1617, 1716, 1721, 1726,
1697 1731, 1732, 1733, 1734, 1735, 1736, 1738, 1756, 1769, 1774,
1698 1778, 1780, 1782, 1784
1699 } ;
1700
1701/* The intent behind this definition is that it'll catch
1702 * any uses of REJECT which flex missed.
1703 */
1704#define REJECT reject_used_but_not_detected
1705#define yymore() yymore_used_but_not_detected
1706#define YY_MORE_ADJ 0
1707#define YY_RESTORE_YY_MORE_OFFSET
1709#line 1 "dhcp4_lexer.ll"
1710/* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
1711
1712 This Source Code Form is subject to the terms of the Mozilla Public
1713 License, v. 2.0. If a copy of the MPL was not distributed with this
1714 file, You can obtain one at http://mozilla.org/MPL/2.0/. */
1715#line 8 "dhcp4_lexer.ll"
1716
1717/* Generated files do not make clang static analyser so happy */
1718#ifndef __clang_analyzer__
1719
1720#include <cerrno>
1721#include <climits>
1722#include <cstdlib>
1723#include <string>
1724#include <dhcp4/parser_context.h>
1725#include <asiolink/io_address.h>
1726#include <boost/lexical_cast.hpp>
1727#include <exceptions/exceptions.h>
1728
1729/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */
1730
1731/* Work around an incompatibility in flex (at least versions
1732 2.5.31 through 2.5.33): it generates code that does
1733 not conform to C89. See Debian bug 333231
1734 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
1735# undef yywrap
1736# define yywrap() 1
1737
1738namespace {
1739
1740bool start_token_flag = false;
1741
1743unsigned int comment_start_line = 0;
1744
1745using namespace isc::dhcp;
1746
1747};
1748
1749/* To avoid the call to exit... oops! */
1750#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
1751#line 1751 "dhcp4_lexer.cc"
1752/* noyywrap disables automatic rewinding for the next file to parse. Since we
1753 always parse only a single string, there's no need to do any wraps. And
1754 using yywrap requires linking with -lfl, which provides the default yywrap
1755 implementation that always returns 1 anyway. */
1756/* nounput simplifies the lexer, by removing support for putting a character
1757 back into the input stream. We never use such capability anyway. */
1758/* batch means that we'll never use the generated lexer interactively. */
1759/* avoid to get static global variables to remain with C++. */
1760/* in last resort %option reentrant */
1761/* Enables debug mode. To see the debug messages, one needs to also set
1762 yy_flex_debug to 1, then the debug messages will be printed on stderr. */
1763/* I have no idea what this option does, except it was specified in the bison
1764 examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
1765 be on the safe side and keep it. */
1766#define YY_NO_INPUT 1
1767
1768/* These are not token expressions yet, just convenience expressions that
1769 can be used during actual token definitions. Note some can match
1770 incorrect inputs (e.g., IP addresses) which must be checked. */
1771/* for errors */
1772#line 94 "dhcp4_lexer.ll"
1773/* This code run each time a pattern is matched. It updates the location
1774 by moving it ahead by yyleng bytes. yyleng specifies the length of the
1775 currently matched token. */
1776#define YY_USER_ACTION driver.loc_.columns(yyleng);
1777#line 1777 "dhcp4_lexer.cc"
1778#line 1778 "dhcp4_lexer.cc"
1779
1780#define INITIAL 0
1781#define COMMENT 1
1782#define DIR_ENTER 2
1783#define DIR_INCLUDE 3
1784#define DIR_EXIT 4
1785
1786#ifndef YY_NO_UNISTD_H
1787/* Special case for "unistd.h", since it is non-ANSI. We include it way
1788 * down here because we want the user's section 1 to have been scanned first.
1789 * The user has a chance to override it with an option.
1790 */
1791/* %if-c-only */
1792#include <unistd.h>
1793/* %endif */
1794/* %if-c++-only */
1795/* %endif */
1796#endif
1797
1798#ifndef YY_EXTRA_TYPE
1799#define YY_EXTRA_TYPE void *
1800#endif
1801
1802/* %if-c-only Reentrant structure and macros (non-C++). */
1803/* %if-reentrant */
1804/* %if-c-only */
1805
1806static int yy_init_globals ( void );
1807
1808/* %endif */
1809/* %if-reentrant */
1810/* %endif */
1811/* %endif End reentrant structures and macros. */
1812
1813/* Accessor methods to globals.
1814 These are made visible to non-reentrant scanners for convenience. */
1815
1816int yylex_destroy ( void );
1817
1818int yyget_debug ( void );
1819
1820void yyset_debug ( int debug_flag );
1821
1822YY_EXTRA_TYPE yyget_extra ( void );
1823
1824void yyset_extra ( YY_EXTRA_TYPE user_defined );
1825
1826FILE *yyget_in ( void );
1827
1828void yyset_in ( FILE * _in_str );
1829
1830FILE *yyget_out ( void );
1831
1832void yyset_out ( FILE * _out_str );
1833
1834 int yyget_leng ( void );
1835
1836char *yyget_text ( void );
1837
1838int yyget_lineno ( void );
1839
1840void yyset_lineno ( int _line_number );
1841
1842/* %if-bison-bridge */
1843/* %endif */
1844
1845/* Macros after this point can all be overridden by user definitions in
1846 * section 1.
1847 */
1848
1849#ifndef YY_SKIP_YYWRAP
1850#ifdef __cplusplus
1851extern "C" int yywrap ( void );
1852#else
1853extern int yywrap ( void );
1854#endif
1855#endif
1856
1857/* %not-for-header */
1858#ifndef YY_NO_UNPUT
1859
1860#endif
1861/* %ok-for-header */
1862
1863/* %endif */
1864
1865#ifndef yytext_ptr
1866static void yy_flex_strncpy ( char *, const char *, int );
1867#endif
1868
1869#ifdef YY_NEED_STRLEN
1870static int yy_flex_strlen ( const char * );
1871#endif
1872
1873#ifndef YY_NO_INPUT
1874/* %if-c-only Standard (non-C++) definition */
1875/* %not-for-header */
1876#ifdef __cplusplus
1877static int yyinput ( void );
1878#else
1879static int input ( void );
1880#endif
1881/* %ok-for-header */
1882
1883/* %endif */
1884#endif
1885
1886/* %if-c-only */
1887
1888/* %endif */
1889
1890/* Amount of stuff to slurp up with each read. */
1891#ifndef YY_READ_BUF_SIZE
1892#ifdef __ia64__
1893/* On IA-64, the buffer size is 16k, not 8k */
1894#define YY_READ_BUF_SIZE 16384
1895#else
1896#define YY_READ_BUF_SIZE 8192
1897#endif /* __ia64__ */
1898#endif
1899
1900/* Copy whatever the last rule matched to the standard output. */
1901#ifndef ECHO
1902/* %if-c-only Standard (non-C++) definition */
1903/* This used to be an fputs(), but since the string might contain NUL's,
1904 * we now use fwrite().
1905 */
1906#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1907/* %endif */
1908/* %if-c++-only C++ definition */
1909/* %endif */
1910#endif
1911
1912/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1913 * is returned in "result".
1914 */
1915#ifndef YY_INPUT
1916#define YY_INPUT(buf,result,max_size) \
1917/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1918 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1919 { \
1920 int c = '*'; \
1921 int n; \
1922 for ( n = 0; n < max_size && \
1923 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1924 buf[n] = (char) c; \
1925 if ( c == '\n' ) \
1926 buf[n++] = (char) c; \
1927 if ( c == EOF && ferror( yyin ) ) \
1928 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1929 result = n; \
1930 } \
1931 else \
1932 { \
1933 errno=0; \
1934 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1935 { \
1936 if( errno != EINTR) \
1937 { \
1938 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1939 break; \
1940 } \
1941 errno=0; \
1942 clearerr(yyin); \
1943 } \
1944 }\
1945\
1946/* %if-c++-only C++ definition \ */\
1947/* %endif */
1948
1949#endif
1950
1951/* No semi-colon after return; correct usage is to write "yyterminate();" -
1952 * we don't want an extra ';' after the "return" because that will cause
1953 * some compilers to complain about unreachable statements.
1954 */
1955#ifndef yyterminate
1956#define yyterminate() return YY_NULL
1957#endif
1958
1959/* Number of entries by which start-condition stack grows. */
1960#ifndef YY_START_STACK_INCR
1961#define YY_START_STACK_INCR 25
1962#endif
1963
1964/* Report a fatal error. */
1965#ifndef YY_FATAL_ERROR
1966/* %if-c-only */
1967#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1968/* %endif */
1969/* %if-c++-only */
1970/* %endif */
1971#endif
1972
1973/* %if-tables-serialization structures and prototypes */
1974/* %not-for-header */
1975/* %ok-for-header */
1976
1977/* %not-for-header */
1978/* %tables-yydmap generated elements */
1979/* %endif */
1980/* end tables serialization structures and prototypes */
1981
1982/* %ok-for-header */
1983
1984/* Default declaration of generated scanner - a define so the user can
1985 * easily add parameters.
1986 */
1987#ifndef YY_DECL
1988#define YY_DECL_IS_OURS 1
1989/* %if-c-only Standard (non-C++) definition */
1990
1991extern int yylex (void);
1992
1993#define YY_DECL int yylex (void)
1994/* %endif */
1995/* %if-c++-only C++ definition */
1996/* %endif */
1997#endif /* !YY_DECL */
1998
1999/* Code executed at the beginning of each rule, after yytext and yyleng
2000 * have been set up.
2001 */
2002#ifndef YY_USER_ACTION
2003#define YY_USER_ACTION
2004#endif
2005
2006/* Code executed at the end of each rule. */
2007#ifndef YY_BREAK
2008#define YY_BREAK /*LINTED*/break;
2009#endif
2010
2011/* %% [6.0] YY_RULE_SETUP definition goes here */
2012#define YY_RULE_SETUP \
2013 YY_USER_ACTION
2014
2015/* %not-for-header */
2019{
2020 yy_state_type yy_current_state;
2021 char *yy_cp, *yy_bp;
2023
2024 if ( !(yy_init) )
2025 {
2026 (yy_init) = 1;
2027
2028#ifdef YY_USER_INIT
2029 YY_USER_INIT;
2030#endif
2031
2032 if ( ! (yy_start) )
2033 (yy_start) = 1; /* first start state */
2034
2035 if ( ! yyin )
2036/* %if-c-only */
2037 yyin = stdin;
2038/* %endif */
2039/* %if-c++-only */
2040/* %endif */
2041
2042 if ( ! yyout )
2043/* %if-c-only */
2044 yyout = stdout;
2045/* %endif */
2046/* %if-c++-only */
2047/* %endif */
2048
2049 if ( ! YY_CURRENT_BUFFER ) {
2053 }
2054
2056 }
2057
2058 {
2059/* %% [7.0] user's declarations go here */
2060#line 100 "dhcp4_lexer.ll"
2061
2062
2063
2064#line 104 "dhcp4_lexer.ll"
2065 /* This part of the code is copied over to the verbatim to the top
2066 of the generated yylex function. Explanation:
2067 http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
2068
2069 /* Code run each time yylex is called. */
2070 driver.loc_.step();
2071
2072 if (start_token_flag) {
2073 start_token_flag = false;
2074 switch (start_token_value) {
2076 default:
2081 return isc::dhcp::Dhcp4Parser::make_SUB_DHCP4(driver.loc_);
2085 return isc::dhcp::Dhcp4Parser::make_SUB_SUBNET4(driver.loc_);
2087 return isc::dhcp::Dhcp4Parser::make_SUB_POOL4(driver.loc_);
2103 return isc::dhcp::Dhcp4Parser::make_SUB_LOGGING(driver.loc_);
2104 }
2105 }
2106
2107
2108#line 2108 "dhcp4_lexer.cc"
2109
2110 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
2111 {
2112/* %% [8.0] yymore()-related code goes here */
2113 yy_cp = (yy_c_buf_p);
2114
2115 /* Support of yytext. */
2116 *yy_cp = (yy_hold_char);
2117
2118 /* yy_bp points to the position in yy_ch_buf of the start of
2119 * the current run.
2120 */
2121 yy_bp = yy_cp;
2122
2123/* %% [9.0] code to set up and find next match goes here */
2124 yy_current_state = (yy_start);
2125yy_match:
2126 do
2127 {
2128 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2129 if ( yy_accept[yy_current_state] )
2130 {
2131 (yy_last_accepting_state) = yy_current_state;
2132 (yy_last_accepting_cpos) = yy_cp;
2133 }
2134 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2135 {
2136 yy_current_state = (int) yy_def[yy_current_state];
2137 if ( yy_current_state >= 1468 )
2138 yy_c = yy_meta[yy_c];
2139 }
2140 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2141 ++yy_cp;
2142 }
2143 while ( yy_current_state != 1467 );
2144 yy_cp = (yy_last_accepting_cpos);
2145 yy_current_state = (yy_last_accepting_state);
2146
2147yy_find_action:
2148/* %% [10.0] code to find the action number goes here */
2149 yy_act = yy_accept[yy_current_state];
2150
2152
2153/* %% [11.0] code for yylineno update goes here */
2154
2155do_action: /* This label is used only to access EOF actions. */
2156
2157/* %% [12.0] debug code goes here */
2158 if ( yy_flex_debug )
2159 {
2160 if ( yy_act == 0 )
2161 fprintf( stderr, "--scanner backing up\n" );
2162 else if ( yy_act < 175 )
2163 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
2164 (long)yy_rule_linenum[yy_act], yytext );
2165 else if ( yy_act == 175 )
2166 fprintf( stderr, "--accepting default rule (\"%s\")\n",
2167 yytext );
2168 else if ( yy_act == 176 )
2169 fprintf( stderr, "--(end of buffer or a NUL)\n" );
2170 else
2171 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
2172 }
2173
2174 switch ( yy_act )
2175 { /* beginning of action switch */
2176/* %% [13.0] actions go here */
2177 case 0: /* must back up */
2178 /* undo the effects of YY_DO_BEFORE_ACTION */
2179 *yy_cp = (yy_hold_char);
2180 yy_cp = (yy_last_accepting_cpos);
2181 yy_current_state = (yy_last_accepting_state);
2182 goto yy_find_action;
2183
2184case 1:
2186#line 147 "dhcp4_lexer.ll"
2187;
2188 YY_BREAK
2189case 2:
2191#line 149 "dhcp4_lexer.ll"
2192;
2193 YY_BREAK
2194case 3:
2196#line 151 "dhcp4_lexer.ll"
2197{
2198 BEGIN(COMMENT);
2199 comment_start_line = driver.loc_.end.line;;
2200}
2201 YY_BREAK
2202case 4:
2204#line 156 "dhcp4_lexer.ll"
2205BEGIN(INITIAL);
2206 YY_BREAK
2207case 5:
2209#line 157 "dhcp4_lexer.ll"
2210;
2211 YY_BREAK
2212case YY_STATE_EOF(COMMENT):
2213#line 158 "dhcp4_lexer.ll"
2214{
2215 isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
2216}
2217 YY_BREAK
2218case 6:
2220#line 162 "dhcp4_lexer.ll"
2222 YY_BREAK
2223case 7:
2225#line 163 "dhcp4_lexer.ll"
2227 YY_BREAK
2228case 8:
2230#line 164 "dhcp4_lexer.ll"
2231{
2232 /* Include directive. */
2233
2234 /* Extract the filename. */
2235 std::string tmp(yytext+1);
2236 tmp.resize(tmp.size() - 1);
2237
2238 driver.includeFile(tmp);
2239}
2240 YY_BREAK
2244#line 173 "dhcp4_lexer.ll"
2245{
2246 isc_throw(Dhcp4ParseError, "Directive not closed.");
2247}
2248 YY_BREAK
2249case 9:
2251#line 176 "dhcp4_lexer.ll"
2252BEGIN(INITIAL);
2253 YY_BREAK
2254case 10:
2256#line 179 "dhcp4_lexer.ll"
2257{
2258 /* Ok, we found a with space. Let's ignore it and update loc variable. */
2259 driver.loc_.step();
2260}
2261 YY_BREAK
2262case 11:
2263/* rule 11 can match eol */
2265#line 184 "dhcp4_lexer.ll"
2266{
2267 /* Newline found. Let's update the location and continue. */
2268 driver.loc_.lines(yyleng);
2269 driver.loc_.step();
2270}
2271 YY_BREAK
2272case 12:
2274#line 191 "dhcp4_lexer.ll"
2275{
2276 switch(driver.ctx_) {
2278 return isc::dhcp::Dhcp4Parser::make_DHCP4(driver.loc_);
2279 default:
2280 return isc::dhcp::Dhcp4Parser::make_STRING("Dhcp4", driver.loc_);
2281 }
2282}
2283 YY_BREAK
2284case 13:
2286#line 200 "dhcp4_lexer.ll"
2287{
2288 switch(driver.ctx_) {
2291 default:
2292 return isc::dhcp::Dhcp4Parser::make_STRING("interfaces-config", driver.loc_);
2293 }
2294}
2295 YY_BREAK
2296case 14:
2298#line 209 "dhcp4_lexer.ll"
2299{
2300 switch(driver.ctx_) {
2303 default:
2304 return isc::dhcp::Dhcp4Parser::make_STRING("sanity-checks", driver.loc_);
2305 }
2306}
2307 YY_BREAK
2308case 15:
2310#line 218 "dhcp4_lexer.ll"
2311{
2312 switch(driver.ctx_) {
2315 default:
2316 return isc::dhcp::Dhcp4Parser::make_STRING("lease-checks", driver.loc_);
2317 }
2318}
2319 YY_BREAK
2320case 16:
2322#line 227 "dhcp4_lexer.ll"
2323{
2324 switch(driver.ctx_) {
2327 default:
2328 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-socket-type", driver.loc_);
2329 }
2330}
2331 YY_BREAK
2332case 17:
2334#line 236 "dhcp4_lexer.ll"
2335{
2336 switch(driver.ctx_) {
2338 return isc::dhcp::Dhcp4Parser::make_RAW(driver.loc_);
2339 default:
2340 return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_);
2341 }
2342}
2343 YY_BREAK
2344case 18:
2346#line 245 "dhcp4_lexer.ll"
2347{
2348 switch(driver.ctx_) {
2351 return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
2352 default:
2353 return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_);
2354 }
2355}
2356 YY_BREAK
2357case 19:
2359#line 255 "dhcp4_lexer.ll"
2360{
2361 switch(driver.ctx_) {
2364 default:
2365 return isc::dhcp::Dhcp4Parser::make_STRING("outbound-interface", driver.loc_);
2366 }
2367}
2368 YY_BREAK
2369case 20:
2371#line 264 "dhcp4_lexer.ll"
2372{
2373 switch(driver.ctx_) {
2375 return Dhcp4Parser::make_SAME_AS_INBOUND(driver.loc_);
2376 default:
2377 return Dhcp4Parser::make_STRING("same-as-inbound", driver.loc_);
2378 }
2379}
2380 YY_BREAK
2381case 21:
2383#line 273 "dhcp4_lexer.ll"
2384{
2385 switch(driver.ctx_) {
2387 return Dhcp4Parser::make_USE_ROUTING(driver.loc_);
2388 default:
2389 return Dhcp4Parser::make_STRING("use-routing", driver.loc_);
2390 }
2391}
2392 YY_BREAK
2393case 22:
2395#line 282 "dhcp4_lexer.ll"
2396{
2397 switch(driver.ctx_) {
2399 return isc::dhcp::Dhcp4Parser::make_INTERFACES(driver.loc_);
2400 default:
2401 return isc::dhcp::Dhcp4Parser::make_STRING("interfaces", driver.loc_);
2402 }
2403}
2404 YY_BREAK
2405case 23:
2407#line 291 "dhcp4_lexer.ll"
2408{
2409 switch(driver.ctx_) {
2411 return isc::dhcp::Dhcp4Parser::make_RE_DETECT(driver.loc_);
2412 default:
2413 return isc::dhcp::Dhcp4Parser::make_STRING("re-detect", driver.loc_);
2414 }
2415}
2416 YY_BREAK
2417case 24:
2419#line 300 "dhcp4_lexer.ll"
2420{
2421 switch(driver.ctx_) {
2424 default:
2425 return isc::dhcp::Dhcp4Parser::make_STRING("lease-database", driver.loc_);
2426 }
2427}
2428 YY_BREAK
2429case 25:
2431#line 309 "dhcp4_lexer.ll"
2432{
2433 switch(driver.ctx_) {
2436 default:
2437 return isc::dhcp::Dhcp4Parser::make_STRING("hosts-database", driver.loc_);
2438 }
2439}
2440 YY_BREAK
2441case 26:
2443#line 318 "dhcp4_lexer.ll"
2444{
2445 switch(driver.ctx_) {
2448 default:
2449 return isc::dhcp::Dhcp4Parser::make_STRING("hosts-databases", driver.loc_);
2450 }
2451}
2452 YY_BREAK
2453case 27:
2455#line 327 "dhcp4_lexer.ll"
2456{
2457 switch(driver.ctx_) {
2460 default:
2461 return isc::dhcp::Dhcp4Parser::make_STRING("config-control", driver.loc_);
2462 }
2463}
2464 YY_BREAK
2465case 28:
2467#line 336 "dhcp4_lexer.ll"
2468{
2469 switch(driver.ctx_) {
2472 default:
2473 return isc::dhcp::Dhcp4Parser::make_STRING("config-databases", driver.loc_);
2474 }
2475}
2476 YY_BREAK
2477case 29:
2479#line 345 "dhcp4_lexer.ll"
2480{
2481 switch(driver.ctx_) {
2483 return isc::dhcp::Dhcp4Parser::make_READONLY(driver.loc_);
2484 default:
2485 return isc::dhcp::Dhcp4Parser::make_STRING("readonly", driver.loc_);
2486 }
2487}
2488 YY_BREAK
2489case 30:
2491#line 354 "dhcp4_lexer.ll"
2492{
2493 switch(driver.ctx_) {
2498 return isc::dhcp::Dhcp4Parser::make_TYPE(driver.loc_);
2499 default:
2500 return isc::dhcp::Dhcp4Parser::make_STRING("type", driver.loc_);
2501 }
2502}
2503 YY_BREAK
2504case 31:
2506#line 366 "dhcp4_lexer.ll"
2507{
2508 switch(driver.ctx_) {
2510 return isc::dhcp::Dhcp4Parser::make_MEMFILE(driver.loc_);
2511 default:
2512 return isc::dhcp::Dhcp4Parser::make_STRING("memfile", driver.loc_);
2513 }
2514}
2515 YY_BREAK
2516case 32:
2518#line 375 "dhcp4_lexer.ll"
2519{
2520 switch(driver.ctx_) {
2522 return isc::dhcp::Dhcp4Parser::make_MYSQL(driver.loc_);
2523 default:
2524 return isc::dhcp::Dhcp4Parser::make_STRING("mysql", driver.loc_);
2525 }
2526}
2527 YY_BREAK
2528case 33:
2530#line 384 "dhcp4_lexer.ll"
2531{
2532 switch(driver.ctx_) {
2534 return isc::dhcp::Dhcp4Parser::make_POSTGRESQL(driver.loc_);
2535 default:
2536 return isc::dhcp::Dhcp4Parser::make_STRING("postgresql", driver.loc_);
2537 }
2538}
2539 YY_BREAK
2540case 34:
2542#line 393 "dhcp4_lexer.ll"
2543{
2544 switch(driver.ctx_) {
2546 return isc::dhcp::Dhcp4Parser::make_CQL(driver.loc_);
2547 default:
2548 return isc::dhcp::Dhcp4Parser::make_STRING("cql", driver.loc_);
2549 }
2550}
2551 YY_BREAK
2552case 35:
2554#line 402 "dhcp4_lexer.ll"
2555{
2556 switch(driver.ctx_) {
2560 return isc::dhcp::Dhcp4Parser::make_USER(driver.loc_);
2561 default:
2562 return isc::dhcp::Dhcp4Parser::make_STRING("user", driver.loc_);
2563 }
2564}
2565 YY_BREAK
2566case 36:
2568#line 413 "dhcp4_lexer.ll"
2569{
2570 switch(driver.ctx_) {
2574 return isc::dhcp::Dhcp4Parser::make_PASSWORD(driver.loc_);
2575 default:
2576 return isc::dhcp::Dhcp4Parser::make_STRING("password", driver.loc_);
2577 }
2578}
2579 YY_BREAK
2580case 37:
2582#line 424 "dhcp4_lexer.ll"
2583{
2584 switch(driver.ctx_) {
2588 return isc::dhcp::Dhcp4Parser::make_HOST(driver.loc_);
2589 default:
2590 return isc::dhcp::Dhcp4Parser::make_STRING("host", driver.loc_);
2591 }
2592}
2593 YY_BREAK
2594case 38:
2596#line 435 "dhcp4_lexer.ll"
2597{
2598 switch(driver.ctx_) {
2602 return isc::dhcp::Dhcp4Parser::make_PORT(driver.loc_);
2603 default:
2604 return isc::dhcp::Dhcp4Parser::make_STRING("port", driver.loc_);
2605 }
2606}
2607 YY_BREAK
2608case 39:
2610#line 446 "dhcp4_lexer.ll"
2611{
2612 switch(driver.ctx_) {
2615 return isc::dhcp::Dhcp4Parser::make_PERSIST(driver.loc_);
2616 default:
2617 return isc::dhcp::Dhcp4Parser::make_STRING("persist", driver.loc_);
2618 }
2619}
2620 YY_BREAK
2621case 40:
2623#line 456 "dhcp4_lexer.ll"
2624{
2625 switch(driver.ctx_) {
2629 default:
2630 return isc::dhcp::Dhcp4Parser::make_STRING("lfc-interval", driver.loc_);
2631 }
2632}
2633 YY_BREAK
2634case 41:
2636#line 466 "dhcp4_lexer.ll"
2637{
2638 switch(driver.ctx_) {
2643 default:
2644 return isc::dhcp::Dhcp4Parser::make_STRING("connect-timeout", driver.loc_);
2645 }
2646}
2647 YY_BREAK
2648case 42:
2650#line 477 "dhcp4_lexer.ll"
2651{
2652 switch(driver.ctx_) {
2656 return isc::dhcp::Dhcp4Parser::make_KEYSPACE(driver.loc_);
2657 default:
2658 return isc::dhcp::Dhcp4Parser::make_STRING("keyspace", driver.loc_);
2659 }
2660}
2661 YY_BREAK
2662case 43:
2664#line 488 "dhcp4_lexer.ll"
2665{
2666 switch(driver.ctx_) {
2671 default:
2672 return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
2673 }
2674}
2675 YY_BREAK
2676case 44:
2678#line 499 "dhcp4_lexer.ll"
2679{
2680 switch(driver.ctx_) {
2685 default:
2686 return isc::dhcp::Dhcp4Parser::make_STRING("request-timeout", driver.loc_);
2687 }
2688}
2689 YY_BREAK
2690case 45:
2692#line 510 "dhcp4_lexer.ll"
2693{
2694 switch(driver.ctx_) {
2699 default:
2700 return isc::dhcp::Dhcp4Parser::make_STRING("tcp-keepalive", driver.loc_);
2701 }
2702}
2703 YY_BREAK
2704case 46:
2706#line 521 "dhcp4_lexer.ll"
2707{
2708 switch(driver.ctx_) {
2712 return isc::dhcp::Dhcp4Parser::make_TCP_NODELAY(driver.loc_);
2713 default:
2714 return isc::dhcp::Dhcp4Parser::make_STRING("tcp-nodelay", driver.loc_);
2715 }
2716}
2717 YY_BREAK
2718case 47:
2720#line 532 "dhcp4_lexer.ll"
2721{
2722 switch(driver.ctx_) {
2727 default:
2728 return isc::dhcp::Dhcp4Parser::make_STRING("contact-points", driver.loc_);
2729 }
2730}
2731 YY_BREAK
2732case 48:
2734#line 543 "dhcp4_lexer.ll"
2735{
2736 switch(driver.ctx_) {
2741 default:
2742 return isc::dhcp::Dhcp4Parser::make_STRING("max-reconnect-tries", driver.loc_);
2743 }
2744}
2745 YY_BREAK
2746case 49:
2748#line 554 "dhcp4_lexer.ll"
2749{
2750 switch(driver.ctx_) {
2755 default:
2756 return isc::dhcp::Dhcp4Parser::make_STRING("valid-lifetime", driver.loc_);
2757 }
2758}
2759 YY_BREAK
2760case 50:
2762#line 565 "dhcp4_lexer.ll"
2763{
2764 switch(driver.ctx_) {
2768 return isc::dhcp::Dhcp4Parser::make_RENEW_TIMER(driver.loc_);
2769 default:
2770 return isc::dhcp::Dhcp4Parser::make_STRING("renew-timer", driver.loc_);
2771 }
2772}
2773 YY_BREAK
2774case 51:
2776#line 576 "dhcp4_lexer.ll"
2777{
2778 switch(driver.ctx_) {
2783 default:
2784 return isc::dhcp::Dhcp4Parser::make_STRING("rebind-timer", driver.loc_);
2785 }
2786}
2787 YY_BREAK
2788case 52:
2790#line 587 "dhcp4_lexer.ll"
2791{
2792 switch(driver.ctx_) {
2795 default:
2796 return isc::dhcp::Dhcp4Parser::make_STRING("decline-probation-period", driver.loc_);
2797 }
2798}
2799 YY_BREAK
2800case 53:
2802#line 596 "dhcp4_lexer.ll"
2803{
2804 switch(driver.ctx_) {
2806 return isc::dhcp::Dhcp4Parser::make_SERVER_TAG(driver.loc_);
2807 default:
2808 return isc::dhcp::Dhcp4Parser::make_STRING("server-tag", driver.loc_);
2809 }
2810}
2811 YY_BREAK
2812case 54:
2814#line 605 "dhcp4_lexer.ll"
2815{
2816 switch(driver.ctx_) {
2819 return isc::dhcp::Dhcp4Parser::make_SUBNET4(driver.loc_);
2820 default:
2821 return isc::dhcp::Dhcp4Parser::make_STRING("subnet4", driver.loc_);
2822 }
2823}
2824 YY_BREAK
2825case 55:
2827#line 615 "dhcp4_lexer.ll"
2828{
2829 switch (driver.ctx_) {
2832 default:
2833 return isc::dhcp::Dhcp4Parser::make_STRING("shared-networks", driver.loc_);
2834 }
2835}
2836 YY_BREAK
2837case 56:
2839#line 624 "dhcp4_lexer.ll"
2840{
2841 switch(driver.ctx_) {
2844 return isc::dhcp::Dhcp4Parser::make_OPTION_DEF(driver.loc_);
2845 default:
2846 return isc::dhcp::Dhcp4Parser::make_STRING("option-def", driver.loc_);
2847 }
2848}
2849 YY_BREAK
2850case 57:
2852#line 634 "dhcp4_lexer.ll"
2853{
2854 switch(driver.ctx_) {
2861 return isc::dhcp::Dhcp4Parser::make_OPTION_DATA(driver.loc_);
2862 default:
2863 return isc::dhcp::Dhcp4Parser::make_STRING("option-data", driver.loc_);
2864 }
2865}
2866 YY_BREAK
2867case 58:
2869#line 648 "dhcp4_lexer.ll"
2870{
2871 switch(driver.ctx_) {
2880 return isc::dhcp::Dhcp4Parser::make_NAME(driver.loc_);
2881 default:
2882 return isc::dhcp::Dhcp4Parser::make_STRING("name", driver.loc_);
2883 }
2884}
2885 YY_BREAK
2886case 59:
2888#line 664 "dhcp4_lexer.ll"
2889{
2890 switch(driver.ctx_) {
2892 return isc::dhcp::Dhcp4Parser::make_DATA(driver.loc_);
2893 default:
2894 return isc::dhcp::Dhcp4Parser::make_STRING("data", driver.loc_);
2895 }
2896}
2897 YY_BREAK
2898case 60:
2900#line 673 "dhcp4_lexer.ll"
2901{
2902 switch(driver.ctx_) {
2904 return isc::dhcp::Dhcp4Parser::make_ALWAYS_SEND(driver.loc_);
2905 default:
2906 return isc::dhcp::Dhcp4Parser::make_STRING("always-send", driver.loc_);
2907 }
2908}
2909 YY_BREAK
2910case 61:
2912#line 682 "dhcp4_lexer.ll"
2913{
2914 switch(driver.ctx_) {
2916 return isc::dhcp::Dhcp4Parser::make_POOLS(driver.loc_);
2917 default:
2918 return isc::dhcp::Dhcp4Parser::make_STRING("pools", driver.loc_);
2919 }
2920}
2921 YY_BREAK
2922case 62:
2924#line 691 "dhcp4_lexer.ll"
2925{
2926 switch(driver.ctx_) {
2928 return isc::dhcp::Dhcp4Parser::make_POOL(driver.loc_);
2929 default:
2930 return isc::dhcp::Dhcp4Parser::make_STRING("pool", driver.loc_);
2931 }
2932}
2933 YY_BREAK
2934case 63:
2936#line 700 "dhcp4_lexer.ll"
2937{
2938 switch(driver.ctx_) {
2953 default:
2954 return isc::dhcp::Dhcp4Parser::make_STRING("user-context", driver.loc_);
2955 }
2956}
2957 YY_BREAK
2958case 64:
2960#line 721 "dhcp4_lexer.ll"
2961{
2962 switch(driver.ctx_) {
2976 return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_);
2977 default:
2978 return isc::dhcp::Dhcp4Parser::make_STRING("comment", driver.loc_);
2979 }
2980}
2981 YY_BREAK
2982case 65:
2984#line 742 "dhcp4_lexer.ll"
2985{
2986 switch(driver.ctx_) {
2988 return isc::dhcp::Dhcp4Parser::make_SUBNET(driver.loc_);
2989 default:
2990 return isc::dhcp::Dhcp4Parser::make_STRING("subnet", driver.loc_);
2991 }
2992}
2993 YY_BREAK
2994case 66:
2996#line 751 "dhcp4_lexer.ll"
2997{
2998 switch(driver.ctx_) {
3001 return isc::dhcp::Dhcp4Parser::make_INTERFACE(driver.loc_);
3002 default:
3003 return isc::dhcp::Dhcp4Parser::make_STRING("interface", driver.loc_);
3004 }
3005}
3006 YY_BREAK
3007case 67:
3009#line 761 "dhcp4_lexer.ll"
3010{
3011 switch(driver.ctx_) {
3013 return isc::dhcp::Dhcp4Parser::make_ID(driver.loc_);
3014 default:
3015 return isc::dhcp::Dhcp4Parser::make_STRING("id", driver.loc_);
3016 }
3017}
3018 YY_BREAK
3019case 68:
3021#line 770 "dhcp4_lexer.ll"
3022{
3023 switch(driver.ctx_) {
3028 default:
3029 return isc::dhcp::Dhcp4Parser::make_STRING("reservation-mode", driver.loc_);
3030 }
3031}
3032 YY_BREAK
3033case 69:
3035#line 781 "dhcp4_lexer.ll"
3036{
3037 switch(driver.ctx_) {
3039 return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
3040 default:
3041 return isc::dhcp::Dhcp4Parser::make_STRING("disabled", driver.loc_);
3042 }
3043}
3044 YY_BREAK
3045case 70:
3047#line 790 "dhcp4_lexer.ll"
3048{
3049 switch(driver.ctx_) {
3051 return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
3052 default:
3053 return isc::dhcp::Dhcp4Parser::make_STRING("off", driver.loc_);
3054 }
3055}
3056 YY_BREAK
3057case 71:
3059#line 799 "dhcp4_lexer.ll"
3060{
3061 switch(driver.ctx_) {
3063 return isc::dhcp::Dhcp4Parser::make_OUT_OF_POOL(driver.loc_);
3064 default:
3065 return isc::dhcp::Dhcp4Parser::make_STRING("out-of-pool", driver.loc_);
3066 }
3067}
3068 YY_BREAK
3069case 72:
3071#line 808 "dhcp4_lexer.ll"
3072{
3073 switch(driver.ctx_) {
3075 return isc::dhcp::Dhcp4Parser::make_GLOBAL(driver.loc_);
3076 default:
3077 return isc::dhcp::Dhcp4Parser::make_STRING("global", driver.loc_);
3078 }
3079}
3080 YY_BREAK
3081case 73:
3083#line 817 "dhcp4_lexer.ll"
3084{
3085 switch(driver.ctx_) {
3087 return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_);
3088 default:
3089 return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_);
3090 }
3091}
3092 YY_BREAK
3093case 74:
3095#line 826 "dhcp4_lexer.ll"
3096{
3097 switch(driver.ctx_) {
3100 return isc::dhcp::Dhcp4Parser::make_CODE(driver.loc_);
3101 default:
3102 return isc::dhcp::Dhcp4Parser::make_STRING("code", driver.loc_);
3103 }
3104}
3105 YY_BREAK
3106case 75:
3108#line 836 "dhcp4_lexer.ll"
3109{
3110 switch(driver.ctx_) {
3113 default:
3114 return isc::dhcp::Dhcp4Parser::make_STRING("host-reservation-identifiers", driver.loc_);
3115 }
3116}
3117 YY_BREAK
3118case 76:
3120#line 845 "dhcp4_lexer.ll"
3121{
3122 switch(driver.ctx_) {
3124 return isc::dhcp::Dhcp4Parser::make_LOGGING(driver.loc_);
3125 default:
3126 return isc::dhcp::Dhcp4Parser::make_STRING("Logging", driver.loc_);
3127 }
3128}
3129 YY_BREAK
3130case 77:
3132#line 854 "dhcp4_lexer.ll"
3133{
3134 switch(driver.ctx_) {
3136 return isc::dhcp::Dhcp4Parser::make_LOGGERS(driver.loc_);
3137 default:
3138 return isc::dhcp::Dhcp4Parser::make_STRING("loggers", driver.loc_);
3139 }
3140}
3141 YY_BREAK
3142case 78:
3144#line 863 "dhcp4_lexer.ll"
3145{
3146 switch(driver.ctx_) {
3149 default:
3150 return isc::dhcp::Dhcp4Parser::make_STRING("output_options", driver.loc_);
3151 }
3152}
3153 YY_BREAK
3154case 79:
3156#line 872 "dhcp4_lexer.ll"
3157{
3158 switch(driver.ctx_) {
3160 return isc::dhcp::Dhcp4Parser::make_OUTPUT(driver.loc_);
3161 default:
3162 return isc::dhcp::Dhcp4Parser::make_STRING("output", driver.loc_);
3163 }
3164}
3165 YY_BREAK
3166case 80:
3168#line 881 "dhcp4_lexer.ll"
3169{
3170 switch(driver.ctx_) {
3172 return isc::dhcp::Dhcp4Parser::make_DEBUGLEVEL(driver.loc_);
3173 default:
3174 return isc::dhcp::Dhcp4Parser::make_STRING("debuglevel", driver.loc_);
3175 }
3176}
3177 YY_BREAK
3178case 81:
3180#line 890 "dhcp4_lexer.ll"
3181{
3182 switch(driver.ctx_) {
3184 return isc::dhcp::Dhcp4Parser::make_FLUSH(driver.loc_);
3185 default:
3186 return isc::dhcp::Dhcp4Parser::make_STRING("flush", driver.loc_);
3187 }
3188}
3189 YY_BREAK
3190case 82:
3192#line 899 "dhcp4_lexer.ll"
3193{
3194 switch(driver.ctx_) {
3196 return isc::dhcp::Dhcp4Parser::make_MAXSIZE(driver.loc_);
3197 default:
3198 return isc::dhcp::Dhcp4Parser::make_STRING("maxsize", driver.loc_);
3199 }
3200}
3201 YY_BREAK
3202case 83:
3204#line 908 "dhcp4_lexer.ll"
3205{
3206 switch(driver.ctx_) {
3208 return isc::dhcp::Dhcp4Parser::make_MAXVER(driver.loc_);
3209 default:
3210 return isc::dhcp::Dhcp4Parser::make_STRING("maxver", driver.loc_);
3211 }
3212}
3213 YY_BREAK
3214case 84:
3216#line 917 "dhcp4_lexer.ll"
3217{
3218 switch(driver.ctx_) {
3220 return isc::dhcp::Dhcp4Parser::make_SEVERITY(driver.loc_);
3221 default:
3222 return isc::dhcp::Dhcp4Parser::make_STRING("severity", driver.loc_);
3223 }
3224}
3225 YY_BREAK
3226case 85:
3228#line 926 "dhcp4_lexer.ll"
3229{
3230 switch(driver.ctx_) {
3234 default:
3235 return isc::dhcp::Dhcp4Parser::make_STRING("client-classes", driver.loc_);
3236 }
3237}
3238 YY_BREAK
3239case 86:
3241#line 936 "dhcp4_lexer.ll"
3242{
3243 switch(driver.ctx_) {
3248 default:
3249 return isc::dhcp::Dhcp4Parser::make_STRING("require-client-classes", driver.loc_);
3250 }
3251}
3252 YY_BREAK
3253case 87:
3255#line 947 "dhcp4_lexer.ll"
3256{
3257 switch(driver.ctx_) {
3263 default:
3264 return isc::dhcp::Dhcp4Parser::make_STRING("client-class", driver.loc_);
3265 }
3266}
3267 YY_BREAK
3268case 88:
3270#line 959 "dhcp4_lexer.ll"
3271{
3272 switch(driver.ctx_) {
3274 return isc::dhcp::Dhcp4Parser::make_TEST(driver.loc_);
3275 default:
3276 return isc::dhcp::Dhcp4Parser::make_STRING("test", driver.loc_);
3277 }
3278}
3279 YY_BREAK
3280case 89:
3282#line 968 "dhcp4_lexer.ll"
3283{
3284 switch(driver.ctx_) {
3287 default:
3288 return isc::dhcp::Dhcp4Parser::make_STRING("only-if-required", driver.loc_);
3289 }
3290}
3291 YY_BREAK
3292case 90:
3294#line 977 "dhcp4_lexer.ll"
3295{
3296 switch(driver.ctx_) {
3300 default:
3301 return isc::dhcp::Dhcp4Parser::make_STRING("reservations", driver.loc_);
3302 }
3303}
3304 YY_BREAK
3305case 91:
3307#line 987 "dhcp4_lexer.ll"
3308{
3309 switch(driver.ctx_) {
3312 return isc::dhcp::Dhcp4Parser::make_DUID(driver.loc_);
3313 default:
3314 return isc::dhcp::Dhcp4Parser::make_STRING("duid", driver.loc_);
3315 }
3316}
3317 YY_BREAK
3318case 92:
3320#line 997 "dhcp4_lexer.ll"
3321{
3322 switch(driver.ctx_) {
3325 return isc::dhcp::Dhcp4Parser::make_HW_ADDRESS(driver.loc_);
3326 default:
3327 return isc::dhcp::Dhcp4Parser::make_STRING("hw-address", driver.loc_);
3328 }
3329}
3330 YY_BREAK
3331case 93:
3333#line 1007 "dhcp4_lexer.ll"
3334{
3335 switch(driver.ctx_) {
3338 return isc::dhcp::Dhcp4Parser::make_CLIENT_ID(driver.loc_);
3339 default:
3340 return isc::dhcp::Dhcp4Parser::make_STRING("client-id", driver.loc_);
3341 }
3342}
3343 YY_BREAK
3344case 94:
3346#line 1017 "dhcp4_lexer.ll"
3347{
3348 switch(driver.ctx_) {
3351 return isc::dhcp::Dhcp4Parser::make_CIRCUIT_ID(driver.loc_);
3352 default:
3353 return isc::dhcp::Dhcp4Parser::make_STRING("circuit-id", driver.loc_);
3354 }
3355}
3356 YY_BREAK
3357case 95:
3359#line 1027 "dhcp4_lexer.ll"
3360{
3361 switch(driver.ctx_) {
3364 return isc::dhcp::Dhcp4Parser::make_FLEX_ID(driver.loc_);
3365 default:
3366 return isc::dhcp::Dhcp4Parser::make_STRING("flex-id", driver.loc_);
3367 }
3368}
3369 YY_BREAK
3370case 96:
3372#line 1037 "dhcp4_lexer.ll"
3373{
3374 switch(driver.ctx_) {
3376 return isc::dhcp::Dhcp4Parser::make_HOSTNAME(driver.loc_);
3377 default:
3378 return isc::dhcp::Dhcp4Parser::make_STRING("hostname", driver.loc_);
3379 }
3380}
3381 YY_BREAK
3382case 97:
3384#line 1046 "dhcp4_lexer.ll"
3385{
3386 switch(driver.ctx_) {
3389 return isc::dhcp::Dhcp4Parser::make_SPACE(driver.loc_);
3390 default:
3391 return isc::dhcp::Dhcp4Parser::make_STRING("space", driver.loc_);
3392 }
3393}
3394 YY_BREAK
3395case 98:
3397#line 1056 "dhcp4_lexer.ll"
3398{
3399 switch(driver.ctx_) {
3401 return isc::dhcp::Dhcp4Parser::make_CSV_FORMAT(driver.loc_);
3402 default:
3403 return isc::dhcp::Dhcp4Parser::make_STRING("csv-format", driver.loc_);
3404 }
3405}
3406 YY_BREAK
3407case 99:
3409#line 1065 "dhcp4_lexer.ll"
3410{
3411 switch(driver.ctx_) {
3414 default:
3415 return isc::dhcp::Dhcp4Parser::make_STRING("record-types", driver.loc_);
3416 }
3417}
3418 YY_BREAK
3419case 100:
3421#line 1074 "dhcp4_lexer.ll"
3422{
3423 switch(driver.ctx_) {
3425 return isc::dhcp::Dhcp4Parser::make_ENCAPSULATE(driver.loc_);
3426 default:
3427 return isc::dhcp::Dhcp4Parser::make_STRING("encapsulate", driver.loc_);
3428 }
3429}
3430 YY_BREAK
3431case 101:
3433#line 1083 "dhcp4_lexer.ll"
3434{
3435 switch(driver.ctx_) {
3437 return isc::dhcp::Dhcp4Parser::make_ARRAY(driver.loc_);
3438 default:
3439 return isc::dhcp::Dhcp4Parser::make_STRING("array", driver.loc_);
3440 }
3441}
3442 YY_BREAK
3443case 102:
3445#line 1092 "dhcp4_lexer.ll"
3446{
3447 switch(driver.ctx_) {
3450 return isc::dhcp::Dhcp4Parser::make_RELAY(driver.loc_);
3451 default:
3452 return isc::dhcp::Dhcp4Parser::make_STRING("relay", driver.loc_);
3453 }
3454}
3455 YY_BREAK
3456case 103:
3458#line 1102 "dhcp4_lexer.ll"
3459{
3460 switch(driver.ctx_) {
3463 return isc::dhcp::Dhcp4Parser::make_IP_ADDRESS(driver.loc_);
3464 default:
3465 return isc::dhcp::Dhcp4Parser::make_STRING("ip-address", driver.loc_);
3466 }
3467}
3468 YY_BREAK
3469case 104:
3471#line 1112 "dhcp4_lexer.ll"
3472{
3473 switch(driver.ctx_) {
3476 default:
3477 return isc::dhcp::Dhcp4Parser::make_STRING("ip-addresses", driver.loc_);
3478 }
3479}
3480 YY_BREAK
3481case 105:
3483#line 1121 "dhcp4_lexer.ll"
3484{
3485 switch(driver.ctx_) {
3488 default:
3489 return isc::dhcp::Dhcp4Parser::make_STRING("hooks-libraries", driver.loc_);
3490 }
3491}
3492 YY_BREAK
3493case 106:
3495#line 1131 "dhcp4_lexer.ll"
3496{
3497 switch(driver.ctx_) {
3499 return isc::dhcp::Dhcp4Parser::make_PARAMETERS(driver.loc_);
3500 default:
3501 return isc::dhcp::Dhcp4Parser::make_STRING("parameters", driver.loc_);
3502 }
3503}
3504 YY_BREAK
3505case 107:
3507#line 1140 "dhcp4_lexer.ll"
3508{
3509 switch(driver.ctx_) {
3511 return isc::dhcp::Dhcp4Parser::make_LIBRARY(driver.loc_);
3512 default:
3513 return isc::dhcp::Dhcp4Parser::make_STRING("library", driver.loc_);
3514 }
3515}
3516 YY_BREAK
3517case 108:
3519#line 1149 "dhcp4_lexer.ll"
3520{
3521 switch(driver.ctx_) {
3524 default:
3525 return isc::dhcp::Dhcp4Parser::make_STRING("expired-leases-processing", driver.loc_);
3526 }
3527}
3528 YY_BREAK
3529case 109:
3531#line 1158 "dhcp4_lexer.ll"
3532{
3533 switch(driver.ctx_) {
3536 default:
3537 return isc::dhcp::Dhcp4Parser::make_STRING("reclaim-timer-wait-time", driver.loc_);
3538 }
3539}
3540 YY_BREAK
3541case 110:
3543#line 1167 "dhcp4_lexer.ll"
3544{
3545 switch(driver.ctx_) {
3548 default:
3549 return isc::dhcp::Dhcp4Parser::make_STRING("flush-reclaimed-timer-wait-time", driver.loc_);
3550 }
3551}
3552 YY_BREAK
3553case 111:
3555#line 1176 "dhcp4_lexer.ll"
3556{
3557 switch(driver.ctx_) {
3560 default:
3561 return isc::dhcp::Dhcp4Parser::make_STRING("hold-reclaimed-time", driver.loc_);
3562 }
3563}
3564 YY_BREAK
3565case 112:
3567#line 1185 "dhcp4_lexer.ll"
3568{
3569 switch(driver.ctx_) {
3572 default:
3573 return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-leases", driver.loc_);
3574 }
3575}
3576 YY_BREAK
3577case 113:
3579#line 1194 "dhcp4_lexer.ll"
3580{
3581 switch(driver.ctx_) {
3584 default:
3585 return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-time", driver.loc_);
3586 }
3587}
3588 YY_BREAK
3589case 114:
3591#line 1203 "dhcp4_lexer.ll"
3592{
3593 switch(driver.ctx_) {
3596 default:
3597 return isc::dhcp::Dhcp4Parser::make_STRING("unwarned-reclaim-cycles", driver.loc_);
3598 }
3599}
3600 YY_BREAK
3601case 115:
3603#line 1212 "dhcp4_lexer.ll"
3604{
3605 switch(driver.ctx_) {
3608 default:
3609 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp4o6-port", driver.loc_);
3610 }
3611}
3612 YY_BREAK
3613case 116:
3615#line 1221 "dhcp4_lexer.ll"
3616{
3617 switch(driver.ctx_) {
3620 default:
3621 return isc::dhcp::Dhcp4Parser::make_STRING("control-socket", driver.loc_);
3622 }
3623}
3624 YY_BREAK
3625case 117:
3627#line 1230 "dhcp4_lexer.ll"
3628{
3629 switch(driver.ctx_) {
3631 return isc::dhcp::Dhcp4Parser::make_SOCKET_TYPE(driver.loc_);
3632 default:
3633 return isc::dhcp::Dhcp4Parser::make_STRING("socket-type", driver.loc_);
3634 }
3635}
3636 YY_BREAK
3637case 118:
3639#line 1239 "dhcp4_lexer.ll"
3640{
3641 switch(driver.ctx_) {
3643 return isc::dhcp::Dhcp4Parser::make_SOCKET_NAME(driver.loc_);
3644 default:
3645 return isc::dhcp::Dhcp4Parser::make_STRING("socket-name", driver.loc_);
3646 }
3647}
3648 YY_BREAK
3649case 119:
3651#line 1248 "dhcp4_lexer.ll"
3652{
3653 switch(driver.ctx_) {
3656 default:
3657 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_);
3658 }
3659}
3660 YY_BREAK
3661case 120:
3663#line 1257 "dhcp4_lexer.ll"
3664{
3665 switch(driver.ctx_) {
3667 return isc::dhcp::Dhcp4Parser::make_DHCP_DDNS(driver.loc_);
3668 default:
3669 return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-ddns", driver.loc_);
3670 }
3671}
3672 YY_BREAK
3673case 121:
3675#line 1266 "dhcp4_lexer.ll"
3676{
3677 switch(driver.ctx_) {
3680 default:
3681 return isc::dhcp::Dhcp4Parser::make_STRING("enable-updates", driver.loc_);
3682 }
3683}
3684 YY_BREAK
3685case 122:
3687#line 1275 "dhcp4_lexer.ll"
3688{
3689 switch(driver.ctx_) {
3692 default:
3693 return isc::dhcp::Dhcp4Parser::make_STRING("qualifying-suffix", driver.loc_);
3694 }
3695}
3696 YY_BREAK
3697case 123:
3699#line 1284 "dhcp4_lexer.ll"
3700{
3701 switch(driver.ctx_) {
3703 return isc::dhcp::Dhcp4Parser::make_SERVER_IP(driver.loc_);
3704 default:
3705 return isc::dhcp::Dhcp4Parser::make_STRING("server-ip", driver.loc_);
3706 }
3707}
3708 YY_BREAK
3709case 124:
3711#line 1293 "dhcp4_lexer.ll"
3712{
3713 switch(driver.ctx_) {
3715 return isc::dhcp::Dhcp4Parser::make_SERVER_PORT(driver.loc_);
3716 default:
3717 return isc::dhcp::Dhcp4Parser::make_STRING("server-port", driver.loc_);
3718 }
3719}
3720 YY_BREAK
3721case 125:
3723#line 1302 "dhcp4_lexer.ll"
3724{
3725 switch(driver.ctx_) {
3727 return isc::dhcp::Dhcp4Parser::make_SENDER_IP(driver.loc_);
3728 default:
3729 return isc::dhcp::Dhcp4Parser::make_STRING("sender-ip", driver.loc_);
3730 }
3731}
3732 YY_BREAK
3733case 126:
3735#line 1311 "dhcp4_lexer.ll"
3736{
3737 switch(driver.ctx_) {
3739 return isc::dhcp::Dhcp4Parser::make_SENDER_PORT(driver.loc_);
3740 default:
3741 return isc::dhcp::Dhcp4Parser::make_STRING("sender-port", driver.loc_);
3742 }
3743}
3744 YY_BREAK
3745case 127:
3747#line 1320 "dhcp4_lexer.ll"
3748{
3749 switch(driver.ctx_) {
3752 default:
3753 return isc::dhcp::Dhcp4Parser::make_STRING("max-queue-size", driver.loc_);
3754 }
3755}
3756 YY_BREAK
3757case 128:
3759#line 1329 "dhcp4_lexer.ll"
3760{
3761 switch(driver.ctx_) {
3764 default:
3765 return isc::dhcp::Dhcp4Parser::make_STRING("ncr-protocol", driver.loc_);
3766 }
3767}
3768 YY_BREAK
3769case 129:
3771#line 1338 "dhcp4_lexer.ll"
3772{
3773 switch(driver.ctx_) {
3775 return isc::dhcp::Dhcp4Parser::make_NCR_FORMAT(driver.loc_);
3776 default:
3777 return isc::dhcp::Dhcp4Parser::make_STRING("ncr-format", driver.loc_);
3778 }
3779}
3780 YY_BREAK
3781case 130:
3783#line 1347 "dhcp4_lexer.ll"
3784{
3785 switch(driver.ctx_) {
3788 default:
3789 return isc::dhcp::Dhcp4Parser::make_STRING("override-no-update", driver.loc_);
3790 }
3791}
3792 YY_BREAK
3793case 131:
3795#line 1356 "dhcp4_lexer.ll"
3796{
3797 switch(driver.ctx_) {
3800 default:
3801 return isc::dhcp::Dhcp4Parser::make_STRING("override-client-update", driver.loc_);
3802 }
3803}
3804 YY_BREAK
3805case 132:
3807#line 1365 "dhcp4_lexer.ll"
3808{
3809 switch(driver.ctx_) {
3812 default:
3813 return isc::dhcp::Dhcp4Parser::make_STRING("replace-client-name", driver.loc_);
3814 }
3815}
3816 YY_BREAK
3817case 133:
3819#line 1374 "dhcp4_lexer.ll"
3820{
3821 switch(driver.ctx_) {
3824 default:
3825 return isc::dhcp::Dhcp4Parser::make_STRING("generated-prefix", driver.loc_);
3826 }
3827}
3828 YY_BREAK
3829case 134:
3831#line 1383 "dhcp4_lexer.ll"
3832{
3833 switch(driver.ctx_) {
3836 default:
3837 return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-set", driver.loc_);
3838 }
3839}
3840 YY_BREAK
3841case 135:
3843#line 1392 "dhcp4_lexer.ll"
3844{
3845 switch(driver.ctx_) {
3848 default:
3849 return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-replacement", driver.loc_);
3850 }
3851}
3852 YY_BREAK
3853case 136:
3855#line 1401 "dhcp4_lexer.ll"
3856{
3857 /* dhcp-ddns value keywords are case insensitive */
3858 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
3859 return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
3860 }
3861 std::string tmp(yytext+1);
3862 tmp.resize(tmp.size() - 1);
3863 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3864}
3865 YY_BREAK
3866case 137:
3868#line 1411 "dhcp4_lexer.ll"
3869{
3870 /* dhcp-ddns value keywords are case insensitive */
3871 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
3872 return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_);
3873 }
3874 std::string tmp(yytext+1);
3875 tmp.resize(tmp.size() - 1);
3876 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3877}
3878 YY_BREAK
3879case 138:
3881#line 1421 "dhcp4_lexer.ll"
3882{
3883 /* dhcp-ddns value keywords are case insensitive */
3884 if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
3885 return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
3886 }
3887 std::string tmp(yytext+1);
3888 tmp.resize(tmp.size() - 1);
3889 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3890}
3891 YY_BREAK
3892case 139:
3894#line 1431 "dhcp4_lexer.ll"
3895{
3896 /* dhcp-ddns value keywords are case insensitive */
3899 }
3900 std::string tmp(yytext+1);
3901 tmp.resize(tmp.size() - 1);
3902 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3903}
3904 YY_BREAK
3905case 140:
3907#line 1441 "dhcp4_lexer.ll"
3908{
3909 /* dhcp-ddns value keywords are case insensitive */
3912 }
3913 std::string tmp(yytext+1);
3914 tmp.resize(tmp.size() - 1);
3915 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3916}
3917 YY_BREAK
3918case 141:
3920#line 1451 "dhcp4_lexer.ll"
3921{
3922 /* dhcp-ddns value keywords are case insensitive */
3924 return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
3925 }
3926 std::string tmp(yytext+1);
3927 tmp.resize(tmp.size() - 1);
3928 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3929}
3930 YY_BREAK
3931case 142:
3933#line 1461 "dhcp4_lexer.ll"
3934{
3935 /* dhcp-ddns value keywords are case insensitive */
3937 return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
3938 }
3939 std::string tmp(yytext+1);
3940 tmp.resize(tmp.size() - 1);
3941 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3942}
3943 YY_BREAK
3944case 143:
3946#line 1471 "dhcp4_lexer.ll"
3947{
3948 /* dhcp-ddns value keywords are case insensitive */
3950 return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
3951 }
3952 std::string tmp(yytext+1);
3953 tmp.resize(tmp.size() - 1);
3954 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3955}
3956 YY_BREAK
3957case 144:
3959#line 1481 "dhcp4_lexer.ll"
3960{
3961 /* dhcp-ddns value keywords are case insensitive */
3964 }
3965 std::string tmp(yytext+1);
3966 tmp.resize(tmp.size() - 1);
3967 return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
3968}
3969 YY_BREAK
3970case 145:
3972#line 1491 "dhcp4_lexer.ll"
3973{
3974 switch(driver.ctx_) {
3976 return isc::dhcp::Dhcp4Parser::make_DHCP6(driver.loc_);
3977 default:
3978 return isc::dhcp::Dhcp4Parser::make_STRING("Dhcp6", driver.loc_);
3979 }
3980}
3981 YY_BREAK
3982case 146:
3984#line 1500 "dhcp4_lexer.ll"
3985{
3986 switch(driver.ctx_) {
3988 return isc::dhcp::Dhcp4Parser::make_DHCPDDNS(driver.loc_);
3989 default:
3990 return isc::dhcp::Dhcp4Parser::make_STRING("DhcpDdns", driver.loc_);
3991 }
3992}
3993 YY_BREAK
3994case 147:
3996#line 1509 "dhcp4_lexer.ll"
3997{
3998 switch(driver.ctx_) {
4001 default:
4002 return isc::dhcp::Dhcp4Parser::make_STRING("Control-agent", driver.loc_);
4003 }
4004}
4005 YY_BREAK
4006case 148:
4008#line 1518 "dhcp4_lexer.ll"
4009{
4010 switch(driver.ctx_) {
4013 default:
4014 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface", driver.loc_);
4015 }
4016}
4017 YY_BREAK
4018case 149:
4020#line 1527 "dhcp4_lexer.ll"
4021{
4022 switch(driver.ctx_) {
4025 default:
4026 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface-id", driver.loc_);
4027 }
4028}
4029 YY_BREAK
4030case 150:
4032#line 1536 "dhcp4_lexer.ll"
4033{
4034 switch(driver.ctx_) {
4037 default:
4038 return isc::dhcp::Dhcp4Parser::make_STRING("4o6-subnet", driver.loc_);
4039 }
4040}
4041 YY_BREAK
4042case 151:
4044#line 1545 "dhcp4_lexer.ll"
4045{
4046 switch(driver.ctx_) {
4049 default:
4050 return isc::dhcp::Dhcp4Parser::make_STRING("echo-client-id", driver.loc_);
4051 }
4052}
4053 YY_BREAK
4054case 152:
4056#line 1554 "dhcp4_lexer.ll"
4057{
4058 switch(driver.ctx_) {
4063 default:
4064 return isc::dhcp::Dhcp4Parser::make_STRING("match-client-id", driver.loc_);
4065 }
4066}
4067 YY_BREAK
4068case 153:
4070#line 1565 "dhcp4_lexer.ll"
4071{
4072 switch(driver.ctx_) {
4077 default:
4078 return isc::dhcp::Dhcp4Parser::make_STRING("authoritative", driver.loc_);
4079 }
4080}
4081 YY_BREAK
4082case 154:
4084#line 1576 "dhcp4_lexer.ll"
4085{
4086 switch(driver.ctx_) {
4092 return isc::dhcp::Dhcp4Parser::make_NEXT_SERVER(driver.loc_);
4093 default:
4094 return isc::dhcp::Dhcp4Parser::make_STRING("next-server", driver.loc_);
4095 }
4096}
4097 YY_BREAK
4098case 155:
4100#line 1589 "dhcp4_lexer.ll"
4101{
4102 switch(driver.ctx_) {
4109 default:
4110 return isc::dhcp::Dhcp4Parser::make_STRING("server-hostname", driver.loc_);
4111 }
4112}
4113 YY_BREAK
4114case 156:
4116#line 1602 "dhcp4_lexer.ll"
4117{
4118 switch(driver.ctx_) {
4125 default:
4126 return isc::dhcp::Dhcp4Parser::make_STRING("boot-file-name", driver.loc_);
4127 }
4128}
4129 YY_BREAK
4130case 157:
4132#line 1617 "dhcp4_lexer.ll"
4133{
4134 /* A string has been matched. It contains the actual string and single quotes.
4135 We need to get those quotes out of the way and just use its content, e.g.
4136 for 'foo' we should get foo */
4137 std::string raw(yytext+1);
4138 size_t len = raw.size() - 1;
4139 raw.resize(len);
4140 std::string decoded;
4141 decoded.reserve(len);
4142 for (size_t pos = 0; pos < len; ++pos) {
4143 int b = 0;
4144 char c = raw[pos];
4145 switch (c) {
4146 case '"':
4147 /* impossible condition */
4148 driver.error(driver.loc_, "Bad quote in \"" + raw + "\"");
4149 break;
4150 case '\\':
4151 ++pos;
4152 if (pos >= len) {
4153 /* impossible condition */
4154 driver.error(driver.loc_, "Overflow escape in \"" + raw + "\"");
4155 }
4156 c = raw[pos];
4157 switch (c) {
4158 case '"':
4159 case '\\':
4160 case '/':
4161 decoded.push_back(c);
4162 break;
4163 case 'b':
4164 decoded.push_back('\b');
4165 break;
4166 case 'f':
4167 decoded.push_back('\f');
4168 break;
4169 case 'n':
4170 decoded.push_back('\n');
4171 break;
4172 case 'r':
4173 decoded.push_back('\r');
4174 break;
4175 case 't':
4176 decoded.push_back('\t');
4177 break;
4178 case 'u':
4179 /* support only \u0000 to \u00ff */
4180 ++pos;
4181 if (pos + 4 > len) {
4182 /* impossible condition */
4183 driver.error(driver.loc_,
4184 "Overflow unicode escape in \"" + raw + "\"");
4185 }
4186 if ((raw[pos] != '0') || (raw[pos + 1] != '0')) {
4187 driver.error(driver.loc_, "Unsupported unicode escape in \"" + raw + "\"");
4188 }
4189 pos += 2;
4190 c = raw[pos];
4191 if ((c >= '0') && (c <= '9')) {
4192 b = (c - '0') << 4;
4193 } else if ((c >= 'A') && (c <= 'F')) {
4194 b = (c - 'A' + 10) << 4;
4195 } else if ((c >= 'a') && (c <= 'f')) {
4196 b = (c - 'a' + 10) << 4;
4197 } else {
4198 /* impossible condition */
4199 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
4200 }
4201 pos++;
4202 c = raw[pos];
4203 if ((c >= '0') && (c <= '9')) {
4204 b |= c - '0';
4205 } else if ((c >= 'A') && (c <= 'F')) {
4206 b |= c - 'A' + 10;
4207 } else if ((c >= 'a') && (c <= 'f')) {
4208 b |= c - 'a' + 10;
4209 } else {
4210 /* impossible condition */
4211 driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
4212 }
4213 decoded.push_back(static_cast<char>(b & 0xff));
4214 break;
4215 default:
4216 /* impossible condition */
4217 driver.error(driver.loc_, "Bad escape in \"" + raw + "\"");
4218 }
4219 break;
4220 default:
4221 if ((c >= 0) && (c < 0x20)) {
4222 /* impossible condition */
4223 driver.error(driver.loc_, "Invalid control in \"" + raw + "\"");
4224 }
4225 decoded.push_back(c);
4226 }
4227 }
4228
4229 return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
4230}
4231 YY_BREAK
4232case 158:
4233/* rule 158 can match eol */
4235#line 1716 "dhcp4_lexer.ll"
4236{
4237 /* Bad string with a forbidden control character inside */
4238 driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
4239}
4240 YY_BREAK
4241case 159:
4242/* rule 159 can match eol */
4244#line 1721 "dhcp4_lexer.ll"
4245{
4246 /* Bad string with a bad escape inside */
4247 driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
4248}
4249 YY_BREAK
4250case 160:
4252#line 1726 "dhcp4_lexer.ll"
4253{
4254 /* Bad string with an open escape at the end */
4255 driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
4256}
4257 YY_BREAK
4258case 161:
4260#line 1731 "dhcp4_lexer.ll"
4261{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
4262 YY_BREAK
4263case 162:
4265#line 1732 "dhcp4_lexer.ll"
4266{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
4267 YY_BREAK
4268case 163:
4270#line 1733 "dhcp4_lexer.ll"
4271{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
4272 YY_BREAK
4273case 164:
4275#line 1734 "dhcp4_lexer.ll"
4276{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
4277 YY_BREAK
4278case 165:
4280#line 1735 "dhcp4_lexer.ll"
4281{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
4282 YY_BREAK
4283case 166:
4285#line 1736 "dhcp4_lexer.ll"
4286{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
4287 YY_BREAK
4288case 167:
4290#line 1738 "dhcp4_lexer.ll"
4291{
4292 /* An integer was found. */
4293 std::string tmp(yytext);
4294 int64_t integer = 0;
4295 try {
4296 /* In substring we want to use negative values (e.g. -1).
4297 In enterprise-id we need to use values up to 0xffffffff.
4298 To cover both of those use cases, we need at least
4299 int64_t. */
4300 integer = boost::lexical_cast<int64_t>(tmp);
4301 } catch (const boost::bad_lexical_cast &) {
4302 driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
4303 }
4304
4305 /* The parser needs the string form as double conversion is no lossless */
4306 return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
4307}
4308 YY_BREAK
4309case 168:
4311#line 1756 "dhcp4_lexer.ll"
4312{
4313 /* A floating point was found. */
4314 std::string tmp(yytext);
4315 double fp = 0.0;
4316 try {
4317 fp = boost::lexical_cast<double>(tmp);
4318 } catch (const boost::bad_lexical_cast &) {
4319 driver.error(driver.loc_, "Failed to convert " + tmp + " to a floating point.");
4320 }
4321
4322 return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
4323}
4324 YY_BREAK
4325case 169:
4327#line 1769 "dhcp4_lexer.ll"
4328{
4329 string tmp(yytext);
4330 return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
4331}
4332 YY_BREAK
4333case 170:
4335#line 1774 "dhcp4_lexer.ll"
4336{
4337 return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
4338}
4339 YY_BREAK
4340case 171:
4342#line 1778 "dhcp4_lexer.ll"
4343driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
4344 YY_BREAK
4345case 172:
4347#line 1780 "dhcp4_lexer.ll"
4348driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
4349 YY_BREAK
4350case 173:
4352#line 1782 "dhcp4_lexer.ll"
4353driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
4354 YY_BREAK
4355case 174:
4357#line 1784 "dhcp4_lexer.ll"
4358driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
4359 YY_BREAK
4360case YY_STATE_EOF(INITIAL):
4361#line 1786 "dhcp4_lexer.ll"
4362{
4363 if (driver.states_.empty()) {
4364 return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
4365 }
4366 driver.loc_ = driver.locs_.back();
4367 driver.locs_.pop_back();
4368 driver.file_ = driver.files_.back();
4369 driver.files_.pop_back();
4370 if (driver.sfile_) {
4371 fclose(driver.sfile_);
4372 driver.sfile_ = 0;
4373 }
4374 if (!driver.sfiles_.empty()) {
4375 driver.sfile_ = driver.sfiles_.back();
4376 driver.sfiles_.pop_back();
4377 }
4378 parser4__delete_buffer(YY_CURRENT_BUFFER);
4379 parser4__switch_to_buffer(driver.states_.back());
4380 driver.states_.pop_back();
4381
4382 BEGIN(DIR_EXIT);
4383}
4384 YY_BREAK
4385case 175:
4387#line 1809 "dhcp4_lexer.ll"
4388ECHO;
4389 YY_BREAK
4390#line 4390 "dhcp4_lexer.cc"
4391
4392 case YY_END_OF_BUFFER:
4393 {
4394 /* Amount of text matched not including the EOB char. */
4395 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
4396
4397 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4398 *yy_cp = (yy_hold_char);
4400
4401 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4402 {
4403 /* We're scanning a new file or input source. It's
4404 * possible that this happened because the user
4405 * just pointed yyin at a new source and called
4406 * yylex(). If so, then we have to assure
4407 * consistency between YY_CURRENT_BUFFER and our
4408 * globals. Here is the right place to do so, because
4409 * this is the first action (other than possibly a
4410 * back-up) that will match for the new input source.
4411 */
4412 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4413/* %if-c-only */
4414 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4415/* %endif */
4416/* %if-c++-only */
4417/* %endif */
4418 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4419 }
4420
4421 /* Note that here we test for yy_c_buf_p "<=" to the position
4422 * of the first EOB in the buffer, since yy_c_buf_p will
4423 * already have been incremented past the NUL character
4424 * (since all states make transitions on EOB to the
4425 * end-of-buffer state). Contrast this with the test
4426 * in input().
4427 */
4428 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4429 { /* This was really a NUL. */
4430 yy_state_type yy_next_state;
4431
4432 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
4433
4434 yy_current_state = yy_get_previous_state( );
4435
4436 /* Okay, we're now positioned to make the NUL
4437 * transition. We couldn't have
4438 * yy_get_previous_state() go ahead and do it
4439 * for us because it doesn't know how to deal
4440 * with the possibility of jamming (and we don't
4441 * want to build jamming into it because then it
4442 * will run more slowly).
4443 */
4444
4445 yy_next_state = yy_try_NUL_trans( yy_current_state );
4446
4448
4449 if ( yy_next_state )
4450 {
4451 /* Consume the NUL. */
4452 yy_cp = ++(yy_c_buf_p);
4453 yy_current_state = yy_next_state;
4454 goto yy_match;
4455 }
4456
4457 else
4458 {
4459/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
4460 yy_cp = (yy_last_accepting_cpos);
4461 yy_current_state = (yy_last_accepting_state);
4462 goto yy_find_action;
4463 }
4464 }
4465
4466 else switch ( yy_get_next_buffer( ) )
4467 {
4469 {
4470 (yy_did_buffer_switch_on_eof) = 0;
4471
4472 if ( yywrap( ) )
4473 {
4474 /* Note: because we've taken care in
4475 * yy_get_next_buffer() to have set up
4476 * yytext, we can now set up
4477 * yy_c_buf_p so that if some total
4478 * hoser (like flex itself) wants to
4479 * call the scanner after we return the
4480 * YY_NULL, it'll still work - another
4481 * YY_NULL will get returned.
4482 */
4483 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4484
4486 goto do_action;
4487 }
4488
4489 else
4490 {
4491 if ( ! (yy_did_buffer_switch_on_eof) )
4493 }
4494 break;
4495 }
4496
4498 (yy_c_buf_p) =
4499 (yytext_ptr) + yy_amount_of_matched_text;
4500
4501 yy_current_state = yy_get_previous_state( );
4502
4503 yy_cp = (yy_c_buf_p);
4505 goto yy_match;
4506
4507 case EOB_ACT_LAST_MATCH:
4508 (yy_c_buf_p) =
4509 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4510
4511 yy_current_state = yy_get_previous_state( );
4512
4513 yy_cp = (yy_c_buf_p);
4515 goto yy_find_action;
4516 }
4517 break;
4518 }
4519
4520 default:
4522 "fatal flex scanner internal error--no action found" );
4523 } /* end of action switch */
4524 } /* end of scanning one token */
4525 } /* end of user's declarations */
4526} /* end of yylex */
4527/* %ok-for-header */
4528
4529/* %if-c++-only */
4530/* %not-for-header */
4531/* %ok-for-header */
4532
4533/* %endif */
4534
4535/* yy_get_next_buffer - try to read in a new buffer
4536 *
4537 * Returns a code representing an action:
4538 * EOB_ACT_LAST_MATCH -
4539 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4540 * EOB_ACT_END_OF_FILE - end of file
4541 */
4542/* %if-c-only */
4543static int yy_get_next_buffer (void)
4544/* %endif */
4545/* %if-c++-only */
4546/* %endif */
4547{
4548 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4549 char *source = (yytext_ptr);
4550 int number_to_move, i;
4551 int ret_val;
4552
4553 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4555 "fatal flex scanner internal error--end of buffer missed" );
4556
4557 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4558 { /* Don't try to fill the buffer, so this is an EOF. */
4559 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4560 {
4561 /* We matched a single character, the EOB, so
4562 * treat this as a final EOF.
4563 */
4564 return EOB_ACT_END_OF_FILE;
4565 }
4566
4567 else
4568 {
4569 /* We matched some text prior to the EOB, first
4570 * process it.
4571 */
4572 return EOB_ACT_LAST_MATCH;
4573 }
4574 }
4575
4576 /* Try to read more data. */
4577
4578 /* First move last chars to start of buffer. */
4579 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
4580
4581 for ( i = 0; i < number_to_move; ++i )
4582 *(dest++) = *(source++);
4583
4584 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4585 /* don't do the read, it's not guaranteed to return an EOF,
4586 * just force an EOF
4587 */
4588 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4589
4590 else
4591 {
4592 int num_to_read =
4593 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4594
4595 while ( num_to_read <= 0 )
4596 { /* Not enough room in the buffer - grow it. */
4597
4598 /* just a shorter name for the current buffer */
4600
4601 int yy_c_buf_p_offset =
4602 (int) ((yy_c_buf_p) - b->yy_ch_buf);
4603
4604 if ( b->yy_is_our_buffer )
4605 {
4606 int new_size = b->yy_buf_size * 2;
4607
4608 if ( new_size <= 0 )
4609 b->yy_buf_size += b->yy_buf_size / 8;
4610 else
4611 b->yy_buf_size *= 2;
4612
4613 b->yy_ch_buf = (char *)
4614 /* Include room in for 2 EOB chars. */
4615 yyrealloc( (void *) b->yy_ch_buf,
4616 (yy_size_t) (b->yy_buf_size + 2) );
4617 }
4618 else
4619 /* Can't grow it, we don't own it. */
4620 b->yy_ch_buf = NULL;
4621
4622 if ( ! b->yy_ch_buf )
4624 "fatal error - scanner input buffer overflow" );
4625
4626 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4627
4628 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4629 number_to_move - 1;
4630
4631 }
4632
4633 if ( num_to_read > YY_READ_BUF_SIZE )
4634 num_to_read = YY_READ_BUF_SIZE;
4635
4636 /* Read in more data. */
4637 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4638 (yy_n_chars), num_to_read );
4639
4640 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4641 }
4642
4643 if ( (yy_n_chars) == 0 )
4644 {
4645 if ( number_to_move == YY_MORE_ADJ )
4646 {
4647 ret_val = EOB_ACT_END_OF_FILE;
4648 yyrestart( yyin );
4649 }
4650
4651 else
4652 {
4653 ret_val = EOB_ACT_LAST_MATCH;
4654 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4656 }
4657 }
4658
4659 else
4660 ret_val = EOB_ACT_CONTINUE_SCAN;
4661
4662 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4663 /* Extend the array by 50%, plus the number we really need. */
4664 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
4665 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
4666 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
4667 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4668 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4669 /* "- 2" to take care of EOB's */
4670 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
4671 }
4672
4673 (yy_n_chars) += number_to_move;
4674 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4675 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4676
4677 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4678
4679 return ret_val;
4680}
4681
4682/* yy_get_previous_state - get the state just before the EOB char was reached */
4683
4684/* %if-c-only */
4685/* %not-for-header */
4686 static yy_state_type yy_get_previous_state (void)
4687/* %endif */
4688/* %if-c++-only */
4689/* %endif */
4690{
4691 yy_state_type yy_current_state;
4692 char *yy_cp;
4693
4694/* %% [15.0] code to get the start state into yy_current_state goes here */
4695 yy_current_state = (yy_start);
4696
4697 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4698 {
4699/* %% [16.0] code to find the next state goes here */
4700 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4701 if ( yy_accept[yy_current_state] )
4702 {
4703 (yy_last_accepting_state) = yy_current_state;
4704 (yy_last_accepting_cpos) = yy_cp;
4705 }
4706 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4707 {
4708 yy_current_state = (int) yy_def[yy_current_state];
4709 if ( yy_current_state >= 1468 )
4710 yy_c = yy_meta[yy_c];
4711 }
4712 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
4713 }
4714
4715 return yy_current_state;
4716}
4717
4718/* yy_try_NUL_trans - try to make a transition on the NUL character
4719 *
4720 * synopsis
4721 * next_state = yy_try_NUL_trans( current_state );
4722 */
4723/* %if-c-only */
4724 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
4725/* %endif */
4726/* %if-c++-only */
4727/* %endif */
4728{
4729 int yy_is_jam;
4730 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
4731 char *yy_cp = (yy_c_buf_p);
4732
4733 YY_CHAR yy_c = 1;
4734 if ( yy_accept[yy_current_state] )
4735 {
4736 (yy_last_accepting_state) = yy_current_state;
4737 (yy_last_accepting_cpos) = yy_cp;
4738 }
4739 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4740 {
4741 yy_current_state = (int) yy_def[yy_current_state];
4742 if ( yy_current_state >= 1468 )
4743 yy_c = yy_meta[yy_c];
4744 }
4745 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
4746 yy_is_jam = (yy_current_state == 1467);
4747
4748 return yy_is_jam ? 0 : yy_current_state;
4749}
4750
4751#ifndef YY_NO_UNPUT
4752/* %if-c-only */
4753
4754/* %endif */
4755#endif
4756
4757/* %if-c-only */
4758#ifndef YY_NO_INPUT
4759#ifdef __cplusplus
4760 static int yyinput (void)
4761#else
4762 static int input (void)
4763#endif
4764
4765/* %endif */
4766/* %if-c++-only */
4767/* %endif */
4768{
4769 int c;
4770
4771 *(yy_c_buf_p) = (yy_hold_char);
4772
4773 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4774 {
4775 /* yy_c_buf_p now points to the character we want to return.
4776 * If this occurs *before* the EOB characters, then it's a
4777 * valid NUL; if not, then we've hit the end of the buffer.
4778 */
4779 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4780 /* This was really a NUL. */
4781 *(yy_c_buf_p) = '\0';
4782
4783 else
4784 { /* need more input */
4785 int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
4786 ++(yy_c_buf_p);
4787
4788 switch ( yy_get_next_buffer( ) )
4789 {
4790 case EOB_ACT_LAST_MATCH:
4791 /* This happens because yy_g_n_b()
4792 * sees that we've accumulated a
4793 * token and flags that we need to
4794 * try matching the token before
4795 * proceeding. But for input(),
4796 * there's no matching to consider.
4797 * So convert the EOB_ACT_LAST_MATCH
4798 * to EOB_ACT_END_OF_FILE.
4799 */
4800
4801 /* Reset buffer status. */
4802 yyrestart( yyin );
4803
4804 /*FALLTHROUGH*/
4805
4807 {
4808 if ( yywrap( ) )
4809 return 0;
4810
4811 if ( ! (yy_did_buffer_switch_on_eof) )
4813#ifdef __cplusplus
4814 return yyinput();
4815#else
4816 return input();
4817#endif
4818 }
4819
4821 (yy_c_buf_p) = (yytext_ptr) + offset;
4822 break;
4823 }
4824 }
4825 }
4826
4827 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
4828 *(yy_c_buf_p) = '\0'; /* preserve yytext */
4829 (yy_hold_char) = *++(yy_c_buf_p);
4830
4831/* %% [19.0] update BOL and yylineno */
4832
4833 return c;
4834}
4835/* %if-c-only */
4836#endif /* ifndef YY_NO_INPUT */
4837/* %endif */
4838
4844/* %if-c-only */
4845 void yyrestart (FILE * input_file )
4846/* %endif */
4847/* %if-c++-only */
4848/* %endif */
4849{
4850
4851 if ( ! YY_CURRENT_BUFFER ){
4855 }
4856
4857 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
4859}
4860
4861/* %if-c++-only */
4862/* %endif */
4863
4868/* %if-c-only */
4870/* %endif */
4871/* %if-c++-only */
4872/* %endif */
4873{
4874
4875 /* TODO. We should be able to replace this entire function body
4876 * with
4877 * yypop_buffer_state();
4878 * yypush_buffer_state(new_buffer);
4879 */
4881 if ( YY_CURRENT_BUFFER == new_buffer )
4882 return;
4883
4884 if ( YY_CURRENT_BUFFER )
4885 {
4886 /* Flush out information for old buffer. */
4887 *(yy_c_buf_p) = (yy_hold_char);
4888 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4889 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4890 }
4891
4892 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4894
4895 /* We don't actually know whether we did this switch during
4896 * EOF (yywrap()) processing, but the only time this flag
4897 * is looked at is after yywrap() is called, so it's safe
4898 * to go ahead and always set it.
4899 */
4900 (yy_did_buffer_switch_on_eof) = 1;
4901}
4902
4903/* %if-c-only */
4904static void yy_load_buffer_state (void)
4905/* %endif */
4906/* %if-c++-only */
4907/* %endif */
4908{
4909 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4910 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4911/* %if-c-only */
4912 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4913/* %endif */
4914/* %if-c++-only */
4915/* %endif */
4916 (yy_hold_char) = *(yy_c_buf_p);
4917}
4918
4925/* %if-c-only */
4926 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
4927/* %endif */
4928/* %if-c++-only */
4929/* %endif */
4930{
4932
4933 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
4934 if ( ! b )
4935 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4936
4937 b->yy_buf_size = size;
4938
4939 /* yy_ch_buf has to be 2 characters longer than the size given because
4940 * we need to put in 2 end-of-buffer characters.
4941 */
4942 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
4943 if ( ! b->yy_ch_buf )
4944 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4945
4946 b->yy_is_our_buffer = 1;
4947
4948 yy_init_buffer( b, file );
4949
4950 return b;
4951}
4952
4953/* %if-c++-only */
4954/* %endif */
4955
4960/* %if-c-only */
4962/* %endif */
4963/* %if-c++-only */
4964/* %endif */
4965{
4966
4967 if ( ! b )
4968 return;
4969
4970 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4972
4973 if ( b->yy_is_our_buffer )
4974 yyfree( (void *) b->yy_ch_buf );
4975
4976 yyfree( (void *) b );
4977}
4978
4979/* Initializes or reinitializes a buffer.
4980 * This function is sometimes called more than once on the same buffer,
4981 * such as during a yyrestart() or at EOF.
4982 */
4983/* %if-c-only */
4984 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
4985/* %endif */
4986/* %if-c++-only */
4987/* %endif */
4988
4989{
4990 int oerrno = errno;
4991
4992 yy_flush_buffer( b );
4993
4994/* %if-c-only */
4995 b->yy_input_file = file;
4996/* %endif */
4997/* %if-c++-only */
4998/* %endif */
4999 b->yy_fill_buffer = 1;
5000
5001 /* If b is the current buffer, then yy_init_buffer was _probably_
5002 * called from yyrestart() or through yy_get_next_buffer.
5003 * In that case, we don't want to reset the lineno or column.
5004 */
5005 if (b != YY_CURRENT_BUFFER){
5006 b->yy_bs_lineno = 1;
5007 b->yy_bs_column = 0;
5008 }
5009
5010/* %if-c-only */
5011
5012 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5013
5014/* %endif */
5015/* %if-c++-only */
5016/* %endif */
5017 errno = oerrno;
5018}
5019
5024/* %if-c-only */
5026/* %endif */
5027/* %if-c++-only */
5028/* %endif */
5029{
5030 if ( ! b )
5031 return;
5032
5033 b->yy_n_chars = 0;
5034
5035 /* We always need two end-of-buffer characters. The first causes
5036 * a transition to the end-of-buffer state. The second causes
5037 * a jam in that state.
5038 */
5041
5042 b->yy_buf_pos = &b->yy_ch_buf[0];
5043
5044 b->yy_at_bol = 1;
5046
5047 if ( b == YY_CURRENT_BUFFER )
5049}
5050
5051/* %if-c-or-c++ */
5058/* %if-c-only */
5060/* %endif */
5061/* %if-c++-only */
5062/* %endif */
5063{
5064 if (new_buffer == NULL)
5065 return;
5066
5068
5069 /* This block is copied from yy_switch_to_buffer. */
5070 if ( YY_CURRENT_BUFFER )
5071 {
5072 /* Flush out information for old buffer. */
5073 *(yy_c_buf_p) = (yy_hold_char);
5074 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5075 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5076 }
5077
5078 /* Only push if top exists. Otherwise, replace top. */
5080 (yy_buffer_stack_top)++;
5081 YY_CURRENT_BUFFER_LVALUE = new_buffer;
5082
5083 /* copied from yy_switch_to_buffer. */
5085 (yy_did_buffer_switch_on_eof) = 1;
5086}
5087/* %endif */
5088
5089/* %if-c-or-c++ */
5094/* %if-c-only */
5095void yypop_buffer_state (void)
5096/* %endif */
5097/* %if-c++-only */
5098/* %endif */
5099{
5100 if (!YY_CURRENT_BUFFER)
5101 return;
5102
5105 if ((yy_buffer_stack_top) > 0)
5106 --(yy_buffer_stack_top);
5107
5108 if (YY_CURRENT_BUFFER) {
5110 (yy_did_buffer_switch_on_eof) = 1;
5111 }
5112}
5113/* %endif */
5114
5115/* %if-c-or-c++ */
5116/* Allocates the stack if it does not exist.
5117 * Guarantees space for at least one push.
5118 */
5119/* %if-c-only */
5120static void yyensure_buffer_stack (void)
5121/* %endif */
5122/* %if-c++-only */
5123/* %endif */
5124{
5125 yy_size_t num_to_alloc;
5126
5127 if (!(yy_buffer_stack)) {
5128
5129 /* First allocation is just for 2 elements, since we don't know if this
5130 * scanner will even need a stack. We use 2 instead of 1 to avoid an
5131 * immediate realloc on the next call.
5132 */
5133 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
5134 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
5135 (num_to_alloc * sizeof(struct yy_buffer_state*)
5136 );
5137 if ( ! (yy_buffer_stack) )
5138 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5139
5140 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
5141
5142 (yy_buffer_stack_max) = num_to_alloc;
5143 (yy_buffer_stack_top) = 0;
5144 return;
5145 }
5146
5147 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
5148
5149 /* Increase the buffer to prepare for a possible push. */
5150 yy_size_t grow_size = 8 /* arbitrary grow size */;
5151
5152 num_to_alloc = (yy_buffer_stack_max) + grow_size;
5153 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
5154 ((yy_buffer_stack),
5155 num_to_alloc * sizeof(struct yy_buffer_state*)
5156 );
5157 if ( ! (yy_buffer_stack) )
5158 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5159
5160 /* zero only the new slots.*/
5161 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
5162 (yy_buffer_stack_max) = num_to_alloc;
5163 }
5164}
5165/* %endif */
5166
5167/* %if-c-only */
5175{
5177
5178 if ( size < 2 ||
5179 base[size-2] != YY_END_OF_BUFFER_CHAR ||
5180 base[size-1] != YY_END_OF_BUFFER_CHAR )
5181 /* They forgot to leave room for the EOB's. */
5182 return NULL;
5183
5184 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
5185 if ( ! b )
5186 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
5187
5188 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
5189 b->yy_buf_pos = b->yy_ch_buf = base;
5190 b->yy_is_our_buffer = 0;
5191 b->yy_input_file = NULL;
5192 b->yy_n_chars = b->yy_buf_size;
5193 b->yy_is_interactive = 0;
5194 b->yy_at_bol = 1;
5195 b->yy_fill_buffer = 0;
5197
5199
5200 return b;
5201}
5202/* %endif */
5203
5204/* %if-c-only */
5213YY_BUFFER_STATE yy_scan_string (const char * yystr )
5214{
5215
5216 return yy_scan_bytes( yystr, (int) strlen(yystr) );
5217}
5218/* %endif */
5219
5220/* %if-c-only */
5228YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
5229{
5231 char *buf;
5232 yy_size_t n;
5233 int i;
5234
5235 /* Get memory for full buffer, including space for trailing EOB's. */
5236 n = (yy_size_t) (_yybytes_len + 2);
5237 buf = (char *) yyalloc( n );
5238 if ( ! buf )
5239 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5240
5241 for ( i = 0; i < _yybytes_len; ++i )
5242 buf[i] = yybytes[i];
5243
5244 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5245
5246 b = yy_scan_buffer( buf, n );
5247 if ( ! b )
5248 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5249
5250 /* It's okay to grow etc. this buffer, and we should throw it
5251 * away when we're done.
5252 */
5253 b->yy_is_our_buffer = 1;
5254
5255 return b;
5256}
5257/* %endif */
5258
5259#ifndef YY_EXIT_FAILURE
5260#define YY_EXIT_FAILURE 2
5261#endif
5262
5263/* %if-c-only */
5264static void yynoreturn yy_fatal_error (const char* msg )
5265{
5266 fprintf( stderr, "%s\n", msg );
5267 exit( YY_EXIT_FAILURE );
5268}
5269/* %endif */
5270/* %if-c++-only */
5271/* %endif */
5272
5273/* Redefine yyless() so it works in section 3 code. */
5274
5275#undef yyless
5276#define yyless(n) \
5277 do \
5278 { \
5279 /* Undo effects of setting up yytext. */ \
5280 int yyless_macro_arg = (n); \
5281 YY_LESS_LINENO(yyless_macro_arg);\
5282 yytext[yyleng] = (yy_hold_char); \
5283 (yy_c_buf_p) = yytext + yyless_macro_arg; \
5284 (yy_hold_char) = *(yy_c_buf_p); \
5285 *(yy_c_buf_p) = '\0'; \
5286 yyleng = yyless_macro_arg; \
5287 } \
5288 while ( 0 )
5289
5290/* Accessor methods (get/set functions) to struct members. */
5291
5292/* %if-c-only */
5293/* %if-reentrant */
5294/* %endif */
5295
5299int yyget_lineno (void)
5300{
5301
5302 return yylineno;
5303}
5304
5308FILE *yyget_in (void)
5309{
5310 return yyin;
5311}
5312
5316FILE *yyget_out (void)
5317{
5318 return yyout;
5319}
5320
5324int yyget_leng (void)
5325{
5326 return yyleng;
5327}
5328
5333char *yyget_text (void)
5334{
5335 return yytext;
5336}
5337
5338/* %if-reentrant */
5339/* %endif */
5340
5345void yyset_lineno (int _line_number )
5346{
5347
5348 yylineno = _line_number;
5349}
5350
5357void yyset_in (FILE * _in_str )
5358{
5359 yyin = _in_str ;
5360}
5361
5362void yyset_out (FILE * _out_str )
5363{
5364 yyout = _out_str ;
5365}
5366
5367int yyget_debug (void)
5368{
5369 return yy_flex_debug;
5370}
5371
5372void yyset_debug (int _bdebug )
5373{
5374 yy_flex_debug = _bdebug ;
5375}
5376
5377/* %endif */
5378
5379/* %if-reentrant */
5380/* %if-bison-bridge */
5381/* %endif */
5382/* %endif if-c-only */
5383
5384/* %if-c-only */
5385static int yy_init_globals (void)
5386{
5387 /* Initialization is the same as for the non-reentrant scanner.
5388 * This function is called from yylex_destroy(), so don't allocate here.
5389 */
5390
5391 (yy_buffer_stack) = NULL;
5392 (yy_buffer_stack_top) = 0;
5393 (yy_buffer_stack_max) = 0;
5394 (yy_c_buf_p) = NULL;
5395 (yy_init) = 0;
5396 (yy_start) = 0;
5397
5398/* Defined in main.c */
5399#ifdef YY_STDINIT
5400 yyin = stdin;
5401 yyout = stdout;
5402#else
5403 yyin = NULL;
5404 yyout = NULL;
5405#endif
5406
5407 /* For future reference: Set errno on error, since we are called by
5408 * yylex_init()
5409 */
5410 return 0;
5411}
5412/* %endif */
5413
5414/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
5415/* yylex_destroy is for both reentrant and non-reentrant scanners. */
5416int yylex_destroy (void)
5417{
5418
5419 /* Pop the buffer stack, destroying each element. */
5420 while(YY_CURRENT_BUFFER){
5424 }
5425
5426 /* Destroy the stack itself. */
5427 yyfree((yy_buffer_stack) );
5428 (yy_buffer_stack) = NULL;
5429
5430 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5431 * yylex() is called, initialization will occur. */
5432 yy_init_globals( );
5433
5434/* %if-reentrant */
5435/* %endif */
5436 return 0;
5437}
5438/* %endif */
5439
5440/*
5441 * Internal utility routines.
5442 */
5443
5444#ifndef yytext_ptr
5445static void yy_flex_strncpy (char* s1, const char * s2, int n )
5446{
5447
5448 int i;
5449 for ( i = 0; i < n; ++i )
5450 s1[i] = s2[i];
5451}
5452#endif
5453
5454#ifdef YY_NEED_STRLEN
5455static int yy_flex_strlen (const char * s )
5456{
5457 int n;
5458 for ( n = 0; s[n]; ++n )
5459 ;
5460
5461 return n;
5462}
5463#endif
5464
5465void *yyalloc (yy_size_t size )
5466{
5467 return malloc(size);
5468}
5469
5470void *yyrealloc (void * ptr, yy_size_t size )
5471{
5472
5473 /* The cast to (char *) in the following accommodates both
5474 * implementations that use char* generic pointers, and those
5475 * that use void* generic pointers. It works with the latter
5476 * because both ANSI C and C++ allow castless assignment from
5477 * any pointer type to void*, and deal with argument conversions
5478 * as though doing an assignment.
5479 */
5480 return realloc(ptr, size);
5481}
5482
5483void yyfree (void * ptr )
5484{
5485 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
5486}
5487
5488/* %if-tables-serialization definitions */
5489/* %define-yytables The name for this specific scanner's tables. */
5490#define YYTABLES_NAME "yytables"
5491/* %endif */
5492
5493/* %ok-for-header */
5494
5495#line 1809 "dhcp4_lexer.ll"
5496
5497
5498using namespace isc::dhcp;
5499
5500void
5501Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type)
5502{
5503 start_token_flag = true;
5504 start_token_value = parser_type;
5505
5506 file_ = "<string>";
5507 sfile_ = 0;
5508 loc_.initialize(&file_);
5509 yy_flex_debug = trace_scanning_;
5510 YY_BUFFER_STATE buffer;
5511 buffer = parser4__scan_bytes(str.c_str(), str.size());
5512 if (!buffer) {
5513 fatal("cannot scan string");
5514 /* fatal() throws an exception so this can't be reached */
5515 }
5516}
5517
5518void
5520 const std::string& filename,
5521 ParserType parser_type)
5522{
5523 start_token_flag = true;
5524 start_token_value = parser_type;
5525
5526 file_ = filename;
5527 sfile_ = f;
5528 loc_.initialize(&file_);
5529 yy_flex_debug = trace_scanning_;
5530 YY_BUFFER_STATE buffer;
5531
5532 /* See dhcp4_lexer.cc header for available definitions */
5533 buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
5534 if (!buffer) {
5535 fatal("cannot scan file " + filename);
5536 }
5537 parser4__switch_to_buffer(buffer);
5538}
5539
5540void
5542 if (sfile_)
5543 fclose(sfile_);
5544 sfile_ = 0;
5545 static_cast<void>(parser4_lex_destroy());
5546 /* Close files */
5547 while (!sfiles_.empty()) {
5548 FILE* f = sfiles_.back();
5549 if (f) {
5550 fclose(f);
5551 }
5552 sfiles_.pop_back();
5553 }
5554 /* Delete states */
5555 while (!states_.empty()) {
5556 parser4__delete_buffer(states_.back());
5557 states_.pop_back();
5558 }
5559}
5560
5561void
5562Parser4Context::includeFile(const std::string& filename) {
5563 if (states_.size() > 10) {
5564 fatal("Too many nested include.");
5565 }
5566
5567 FILE* f = fopen(filename.c_str(), "r");
5568 if (!f) {
5569 fatal("Can't open include file " + filename);
5570 }
5571 if (sfile_) {
5572 sfiles_.push_back(sfile_);
5573 }
5574 sfile_ = f;
5575 states_.push_back(YY_CURRENT_BUFFER);
5576 YY_BUFFER_STATE buffer;
5577 buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
5578 if (!buffer) {
5579 fatal( "Can't scan include file " + filename);
5580 }
5581 parser4__switch_to_buffer(buffer);
5582 files_.push_back(file_);
5583 file_ = filename;
5584 locs_.push_back(loc_);
5585 loc_.initialize(&file_);
5586
5587 BEGIN(INITIAL);
5588}
5589
5590namespace {
5592class Dummy {
5593 /* cppcheck-suppress unusedPrivateFunction */
5594 void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
5595};
5596}
5597#endif /* !__clang_analyzer__ */
5598
unsigned char flex_uint8_t
Definition: agent_lexer.cc:335
short int flex_int16_t
Definition: agent_lexer.cc:333
#define yy_flex_debug
Definition: agent_lexer.cc:24
int flex_int32_t
Definition: agent_lexer.cc:334
int yy_state_type
Definition: agent_lexer.cc:660
#define YY_CURRENT_BUFFER
Definition: agent_lexer.cc:575
#define INITIAL
#define BEGIN
Definition: agent_lexer.cc:414
flex_uint8_t YY_CHAR
Definition: agent_lexer.cc:656
size_t yy_size_t
Definition: agent_lexer.cc:451
Evaluation error exception raised when trying to parse.
static symbol_type make_SUB_OPTION_DEFS(YY_COPY(location_type) l)
static symbol_type make_MAX_QUEUE_SIZE(YY_COPY(location_type) l)
static symbol_type make_COMMA(YY_COPY(location_type) l)
static symbol_type make_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_DATA(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_LEASES(YY_COPY(location_type) l)
static symbol_type make_ALWAYS(YY_COPY(location_type) l)
static symbol_type make_END(YY_COPY(location_type) l)
static symbol_type make_RENEW_TIMER(YY_COPY(location_type) l)
static symbol_type make_SERVER_TAG(YY_COPY(location_type) l)
static symbol_type make_RAW(YY_COPY(location_type) l)
static symbol_type make_ALL(YY_COPY(location_type) l)
static symbol_type make_CONTACT_POINTS(YY_COPY(location_type) l)
static symbol_type make_USER_CONTEXT(YY_COPY(location_type) l)
static symbol_type make_INTEGER(YY_COPY(int64_t) v, YY_COPY(location_type) l)
static symbol_type make_FLEX_ID(YY_COPY(location_type) l)
static symbol_type make_ID(YY_COPY(location_type) l)
static symbol_type make_RESERVATIONS(YY_COPY(location_type) l)
static symbol_type make_DISABLED(YY_COPY(location_type) l)
static symbol_type make_LOGGERS(YY_COPY(location_type) l)
static symbol_type make_PORT(YY_COPY(location_type) l)
static symbol_type make_MAXVER(YY_COPY(location_type) l)
static symbol_type make_LFC_INTERVAL(YY_COPY(location_type) l)
static symbol_type make_LCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_DHCP_QUEUE_CONTROL(YY_COPY(location_type) l)
static symbol_type make_GLOBAL(YY_COPY(location_type) l)
static symbol_type make_RCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SERVER_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_DHCP4(YY_COPY(location_type) l)
static symbol_type make_SPACE(YY_COPY(location_type) l)
static symbol_type make_MAXSIZE(YY_COPY(location_type) l)
static symbol_type make_MEMFILE(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASE(YY_COPY(location_type) l)
static symbol_type make_ENCAPSULATE(YY_COPY(location_type) l)
static symbol_type make_NULL_TYPE(YY_COPY(location_type) l)
static symbol_type make_PARAMETERS(YY_COPY(location_type) l)
static symbol_type make_POSTGRESQL(YY_COPY(location_type) l)
static symbol_type make_USE_ROUTING(YY_COPY(location_type) l)
static symbol_type make_TCP_KEEPALIVE(YY_COPY(location_type) l)
static symbol_type make_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_HOLD_RECLAIMED_TIME(YY_COPY(location_type) l)
static symbol_type make_ECHO_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_RESERVATION_MODE(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_NO_UPDATE(YY_COPY(location_type) l)
static symbol_type make_PERSIST(YY_COPY(location_type) l)
static symbol_type make_REPLACE_CLIENT_NAME(YY_COPY(location_type) l)
static symbol_type make_BOOT_FILE_NAME(YY_COPY(location_type) l)
static symbol_type make_MYSQL(YY_COPY(location_type) l)
static symbol_type make_CONNECT_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_USER(YY_COPY(location_type) l)
static symbol_type make_JSON(YY_COPY(location_type) l)
static symbol_type make_CODE(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_SUB_INTERFACES4(YY_COPY(location_type) l)
static symbol_type make_POOL(YY_COPY(location_type) l)
static symbol_type make_TCP(YY_COPY(location_type) l)
static symbol_type make_SERVER_IP(YY_COPY(location_type) l)
static symbol_type make_OUTBOUND_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_SUBNET4(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASES(YY_COPY(location_type) l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(YY_COPY(location_type) l)
static symbol_type make_REQUEST_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_ALWAYS_SEND(YY_COPY(location_type) l)
static symbol_type make_DHCP4(YY_COPY(location_type) l)
static symbol_type make_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(YY_COPY(location_type) l)
static symbol_type make_NAME(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESSES(YY_COPY(location_type) l)
static symbol_type make_SUB_LOGGING(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP4(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASS(YY_COPY(location_type) l)
static symbol_type make_KEYSPACE(YY_COPY(location_type) l)
static symbol_type make_MAX_RECONNECT_TRIES(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(YY_COPY(location_type) l)
static symbol_type make_DHCP_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_DECLINE_PROBATION_PERIOD(YY_COPY(location_type) l)
static symbol_type make_INTERFACES(YY_COPY(location_type) l)
static symbol_type make_HW_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_SUB_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_INTERFACES_CONFIG(YY_COPY(location_type) l)
static symbol_type make_TEST(YY_COPY(location_type) l)
static symbol_type make_OUTPUT(YY_COPY(location_type) l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_RECONNECT_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_AUTHORITATIVE(YY_COPY(location_type) l)
static symbol_type make_NCR_PROTOCOL(YY_COPY(location_type) l)
static symbol_type make_FLUSH(YY_COPY(location_type) l)
static symbol_type make_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_MATCH_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_FLOAT(YY_COPY(double) v, YY_COPY(location_type) l)
static symbol_type make_LOGGING(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_CLIENT_UPDATE(YY_COPY(location_type) l)
static symbol_type make_SEVERITY(YY_COPY(location_type) l)
static symbol_type make_CQL(YY_COPY(location_type) l)
static symbol_type make_QUALIFYING_SUFFIX(YY_COPY(location_type) l)
static symbol_type make_GENERATED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_RECORD_TYPES(YY_COPY(location_type) l)
static symbol_type make_HOST(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_SET(YY_COPY(location_type) l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_OUT_OF_POOL(YY_COPY(location_type) l)
static symbol_type make_SUB_HOOKS_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_DHCPDDNS(YY_COPY(location_type) l)
static symbol_type make_BOOLEAN(YY_COPY(bool) v, YY_COPY(location_type) l)
static symbol_type make_DUID(YY_COPY(location_type) l)
static symbol_type make_SUBNET(YY_COPY(location_type) l)
static symbol_type make_SOCKET_NAME(YY_COPY(location_type) l)
static symbol_type make_CONFIG_DATABASES(YY_COPY(location_type) l)
static symbol_type make_STRING(YY_COPY(std::string) v, YY_COPY(location_type) l)
static symbol_type make_RELAY(YY_COPY(location_type) l)
static symbol_type make_LEASE_DATABASE(YY_COPY(location_type) l)
static symbol_type make_UDP(YY_COPY(location_type) l)
static symbol_type make_NEVER(YY_COPY(location_type) l)
static symbol_type make_READONLY(YY_COPY(location_type) l)
static symbol_type make_SANITY_CHECKS(YY_COPY(location_type) l)
static symbol_type make_RSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_LEASE_CHECKS(YY_COPY(location_type) l)
static symbol_type make_CSV_FORMAT(YY_COPY(location_type) l)
static symbol_type make_VALID_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_SHARED_NETWORKS(YY_COPY(location_type) l)
static symbol_type make_NEXT_SERVER(YY_COPY(location_type) l)
static symbol_type make_ARRAY(YY_COPY(location_type) l)
static symbol_type make_WHEN_PRESENT(YY_COPY(location_type) l)
static symbol_type make_ENABLE_UPDATES(YY_COPY(location_type) l)
static symbol_type make_DHCP6(YY_COPY(location_type) l)
static symbol_type make_CONTROL_SOCKET(YY_COPY(location_type) l)
static symbol_type make_REBIND_TIMER(YY_COPY(location_type) l)
static symbol_type make_DEBUGLEVEL(YY_COPY(location_type) l)
static symbol_type make_COMMENT(YY_COPY(location_type) l)
static symbol_type make_NCR_FORMAT(YY_COPY(location_type) l)
static symbol_type make_TCP_NODELAY(YY_COPY(location_type) l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_DHCP4O6_PORT(YY_COPY(location_type) l)
static symbol_type make_LSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SAME_AS_INBOUND(YY_COPY(location_type) l)
static symbol_type make_POOLS(YY_COPY(location_type) l)
static symbol_type make_HOOKS_LIBRARIES(YY_COPY(location_type) l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_TIME(YY_COPY(location_type) l)
static symbol_type make_CIRCUIT_ID(YY_COPY(location_type) l)
static symbol_type make_SUB_RESERVATION(YY_COPY(location_type) l)
static symbol_type make_SUB_POOL4(YY_COPY(location_type) l)
static symbol_type make_WHEN_NOT_PRESENT(YY_COPY(location_type) l)
static symbol_type make_TYPE(YY_COPY(location_type) l)
static symbol_type make_COLON(YY_COPY(location_type) l)
static symbol_type make_SENDER_IP(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_SUBNET(YY_COPY(location_type) l)
static symbol_type make_PASSWORD(YY_COPY(location_type) l)
static symbol_type make_SENDER_PORT(YY_COPY(location_type) l)
static symbol_type make_ONLY_IF_REQUIRED(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_JSON(YY_COPY(location_type) l)
static symbol_type make_SERVER_PORT(YY_COPY(location_type) l)
static symbol_type make_OUTPUT_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE_ID(YY_COPY(location_type) l)
static symbol_type make_RE_DETECT(YY_COPY(location_type) l)
static symbol_type make_SUB_SUBNET4(YY_COPY(location_type) l)
static symbol_type make_CONTROL_AGENT(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEF(YY_COPY(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
std::string file_
File name.
@ 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 Logging/loggers structures.
@ NCR_FORMAT
Used while parsing Dhcp4/dhcp-ddns/ncr-format.
@ OUTBOUND_INTERFACE
Used while parsing Dhcp4/interfaces/outbound-interface structures.
@ CONFIG
Used while parsing content of Dhcp4.
@ OUTPUT_OPTIONS
Used while parsing Logging/loggers/output_options structures.
@ RESERVATION_MODE
Used while parsing Dhcp4/reservation-mode.
@ CONTROL_SOCKET
Used while parsing Dhcp4/control-socket structures.
@ LOGGING
Used while parsing content of Logging.
@ 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...
@ 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_LOGGING
This will parse the content of Logging.
@ 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.
static void fatal(const std::string &what)
Fatal error handler.
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
Definition: dhcp4_lexer.cc:19
#define YY_NEW_FILE
Definition: dhcp4_lexer.cc:424
#define yyset_extra
Definition: dhcp4_lexer.cc:176
#define yytext
Definition: dhcp4_lexer.cc:31
unsigned char flex_uint8_t
Definition: dhcp4_lexer.cc:335
#define yyset_lineno
Definition: dhcp4_lexer.cc:224
#define COMMENT
#define yyrestart
Definition: dhcp4_lexer.cc:30
#define yyset_debug
Definition: dhcp4_lexer.cc:164
#define YY_EXTRA_TYPE
#define DIR_INCLUDE
short int flex_int16_t
Definition: dhcp4_lexer.cc:333
#define yy_flex_debug
Definition: dhcp4_lexer.cc:24
unsigned int flex_uint32_t
Definition: dhcp4_lexer.cc:337
#define yy_scan_bytes
Definition: dhcp4_lexer.cc:16
#define YY_BREAK
#define yynoreturn
Definition: dhcp4_lexer.cc:388
#define yyget_debug
Definition: dhcp4_lexer.cc:158
int yy_act
#define yypush_buffer_state
Definition: dhcp4_lexer.cc:21
#define yyget_in
Get the input stream.
Definition: dhcp4_lexer.cc:182
struct yy_buffer_state * YY_BUFFER_STATE
Definition: dhcp4_lexer.cc:446
#define yyfree
Definition: dhcp4_lexer.cc:35
#define yyout
Definition: dhcp4_lexer.cc:29
#define YY_BUFFER_NEW
Definition: dhcp4_lexer.cc:539
#define yylex
Definition: dhcp4_lexer.cc:27
#define YY_RESTORE_YY_MORE_OFFSET
#define yyget_leng
Get the length of the current token.
Definition: dhcp4_lexer.cc:206
#define yywrap
#define yyget_out
Get the output stream.
Definition: dhcp4_lexer.cc:194
#define YY_BUFFER_NORMAL
Definition: dhcp4_lexer.cc:540
char * yy_cp
#define yyensure_buffer_stack
Definition: dhcp4_lexer.cc:23
#define yy_scan_buffer
Definition: dhcp4_lexer.cc:14
#define YY_MORE_ADJ
#define YY_RULE_SETUP
#define yy_scan_string
Definition: dhcp4_lexer.cc:15
#define DIR_EXIT
#define yytext_ptr
Definition: dhcp4_lexer.cc:669
signed char flex_int8_t
Definition: dhcp4_lexer.cc:332
#define EOB_ACT_END_OF_FILE
Definition: dhcp4_lexer.cc:465
#define yyalloc
Definition: dhcp4_lexer.cc:33
#define YY_CURRENT_BUFFER_LVALUE
Definition: dhcp4_lexer.cc:581
int flex_int32_t
Definition: dhcp4_lexer.cc:334
#define yylex_destroy
Definition: dhcp4_lexer.cc:152
#define YY_START
Definition: dhcp4_lexer.cc:419
#define yyget_text
Get the current token.
Definition: dhcp4_lexer.cc:212
#define yy_switch_to_buffer
Definition: dhcp4_lexer.cc:20
int yy_state_type
Definition: dhcp4_lexer.cc:660
#define YY_CURRENT_BUFFER
Definition: dhcp4_lexer.cc:575
#define yy_init_buffer
Definition: dhcp4_lexer.cc:17
#define INITIAL
#define yyget_extra
Definition: dhcp4_lexer.cc:170
char * yy_bp
#define yyin
Definition: dhcp4_lexer.cc:25
#define YY_READ_BUF_SIZE
#define YY_INPUT(buf, result, max_size)
#define ECHO
#define yy_flush_buffer
Definition: dhcp4_lexer.cc:18
#define yyrealloc
Definition: dhcp4_lexer.cc:34
#define YY_END_OF_BUFFER
Definition: dhcp4_lexer.cc:695
#define YY_STATE_EOF(state)
Definition: dhcp4_lexer.cc:422
#define BEGIN
Definition: dhcp4_lexer.cc:414
#define YY_END_OF_BUFFER_CHAR
Definition: dhcp4_lexer.cc:425
#define YY_FATAL_ERROR(msg)
unsigned short int flex_uint16_t
Definition: dhcp4_lexer.cc:336
#define yypop_buffer_state
Removes and deletes the top of the stack, if present.
Definition: dhcp4_lexer.cc:22
#define yy_create_buffer
Definition: dhcp4_lexer.cc:12
flex_uint8_t YY_CHAR
Definition: dhcp4_lexer.cc:656
#define YY_DO_BEFORE_ACTION
Definition: dhcp4_lexer.cc:685
#define yy_delete_buffer
Definition: dhcp4_lexer.cc:13
#define EOB_ACT_LAST_MATCH
Definition: dhcp4_lexer.cc:466
size_t yy_size_t
Definition: dhcp4_lexer.cc:451
#define YY_BUFFER_EOF_PENDING
Definition: dhcp4_lexer.cc:551
#define yylineno
Definition: dhcp4_lexer.cc:28
#define yyset_out
Definition: dhcp4_lexer.cc:200
#define EOB_ACT_CONTINUE_SCAN
Definition: dhcp4_lexer.cc:464
#define yyget_lineno
Get the current line number.
Definition: dhcp4_lexer.cc:218
#define YY_DECL
#define YY_BUF_SIZE
Definition: dhcp4_lexer.cc:436
#define YY_EXIT_FAILURE
#define YY_SC_TO_UI(c)
Definition: dhcp4_lexer.cc:400
#define DIR_ENTER
#define yyleng
Definition: dhcp4_lexer.cc:26
#define yyset_in
Definition: dhcp4_lexer.cc:188
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
int yy_bs_column
The column count.
Definition: agent_lexer.cc:530
FILE * yy_input_file
Definition: agent_lexer.cc:491
int yy_bs_lineno
The line count.
Definition: agent_lexer.cc:529
flex_int32_t yy_verify
Definition: agent_lexer.cc:700
flex_int32_t yy_nxt
Definition: agent_lexer.cc:701