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