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