Kea  1.9.9-git
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 );
608 void yy_delete_buffer ( YY_BUFFER_STATE b );
609 void yy_flush_buffer ( YY_BUFFER_STATE b );
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 212
695 #define YY_END_OF_BUFFER 213
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[1990] =
704  { 0,
705  205, 205, 0, 0, 0, 0, 0, 0, 0, 0,
706  213, 211, 10, 11, 211, 1, 205, 202, 205, 205,
707  211, 204, 203, 211, 211, 211, 211, 211, 198, 199,
708  211, 211, 211, 200, 201, 5, 5, 5, 211, 211,
709  211, 10, 11, 0, 0, 193, 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, 1, 205, 205,
713  0, 204, 205, 3, 2, 6, 0, 205, 0, 0,
714  0, 0, 0, 0, 4, 0, 0, 9, 0, 194,
715 
716  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717  0, 0, 196, 0, 0, 0, 0, 0, 0, 0,
718  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
720  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
721  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
722  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724  0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
725  8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726 
727  0, 0, 195, 197, 0, 0, 0, 0, 0, 0,
728  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730  0, 0, 0, 0, 0, 0, 0, 0, 0, 88,
731  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737 
738  0, 0, 0, 0, 0, 210, 208, 0, 207, 206,
739  0, 0, 0, 0, 0, 0, 0, 173, 0, 172,
740  0, 0, 94, 0, 0, 0, 0, 0, 0, 0,
741  0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
742  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
744  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
745  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
746  91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
747  0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
748 
749  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
750  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
751  0, 0, 0, 0, 0, 0, 0, 0, 18, 0,
752  0, 0, 0, 209, 206, 0, 0, 0, 0, 0,
753  0, 174, 0, 176, 0, 0, 0, 0, 0, 0,
754  0, 0, 0, 0, 0, 98, 0, 0, 0, 0,
755  0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
756  0, 120, 0, 0, 0, 0, 0, 0, 0, 0,
757  0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
758  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
759 
760  0, 0, 0, 0, 0, 0, 79, 0, 0, 0,
761  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
762  0, 0, 83, 0, 39, 0, 0, 0, 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  0, 0, 0, 0, 0, 0, 0, 117, 0, 31,
766  0, 0, 36, 0, 0, 0, 0, 0, 0, 12,
767  178, 177, 0, 0, 0, 130, 0, 0, 0, 0,
768  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
769  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
770 
771  0, 0, 0, 0, 0, 0, 0, 0, 0, 109,
772  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774  0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
775  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
776  0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
777  0, 0, 0, 0, 131, 0, 0, 0, 0, 0,
778  0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
779  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780  0, 0, 0, 7, 0, 0, 179, 0, 0, 0,
781 
782  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785  0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
786  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788  111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
789  0, 0, 107, 0, 0, 0, 0, 0, 0, 0,
790  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
792 
793  0, 0, 0, 0, 0, 0, 86, 0, 0, 0,
794  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
795  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796  0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
797  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
799  0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
800  0, 0, 0, 0, 0, 0, 0, 0, 136, 105,
801  0, 0, 0, 0, 0, 0, 110, 32, 0, 0,
802  0, 0, 0, 47, 0, 0, 0, 0, 0, 0,
803 
804  0, 0, 0, 112, 40, 0, 0, 0, 0, 0,
805  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
806  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807  0, 0, 0, 0, 0, 0, 74, 0, 0, 0,
808  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
809  0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
810  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
811  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812  0, 0, 90, 0, 0, 0, 0, 0, 0, 0,
813  0, 0, 0, 0, 125, 0, 0, 0, 0, 0,
814 
815  0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
816  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
817  0, 0, 0, 0, 0, 0, 37, 0, 0, 0,
818  0, 30, 0, 0, 0, 0, 0, 0, 0, 0,
819  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820  0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
821  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822  0, 0, 0, 0, 0, 0, 0, 0, 0, 122,
823  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
824  0, 0, 0, 0, 0, 0, 0, 0, 156, 0,
825 
826  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
827  0, 0, 0, 0, 0, 0, 87, 0, 0, 0,
828  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
829  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830  0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
831  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
832  161, 0, 0, 0, 0, 159, 0, 0, 0, 0,
833  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
834  0, 0, 0, 0, 183, 0, 0, 0, 0, 0,
835  0, 0, 0, 123, 0, 0, 0, 0, 0, 0,
836 
837  0, 0, 0, 127, 0, 0, 0, 0, 0, 0,
838  0, 108, 0, 0, 0, 0, 0, 0, 0, 0,
839  0, 0, 0, 0, 0, 0, 0, 0, 0, 121,
840  22, 0, 132, 0, 0, 0, 0, 0, 0, 0,
841  0, 0, 0, 0, 0, 0, 0, 165, 0, 0,
842  0, 0, 77, 0, 0, 0, 0, 0, 0, 135,
843  34, 0, 154, 0, 0, 0, 0, 0, 0, 0,
844  0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
845  0, 0, 0, 0, 0, 0, 101, 102, 0, 0,
846  0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
847 
848  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849  44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850  0, 0, 0, 0, 0, 0, 0, 0, 129, 0,
851  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
853  0, 0, 0, 187, 0, 78, 92, 0, 0, 0,
854  0, 0, 0, 0, 0, 0, 0, 60, 0, 0,
855  0, 0, 0, 0, 0, 162, 0, 0, 0, 160,
856  0, 151, 150, 0, 0, 0, 0, 53, 0, 0,
857  21, 0, 0, 0, 0, 175, 0, 0, 0, 0,
858 
859  0, 116, 0, 0, 0, 0, 0, 0, 0, 0,
860  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861  144, 0, 0, 153, 0, 0, 0, 0, 0, 0,
862  0, 0, 0, 0, 133, 0, 15, 0, 0, 41,
863  0, 0, 0, 0, 0, 0, 0, 0, 0, 164,
864  0, 0, 0, 0, 0, 0, 0, 61, 0, 0,
865  128, 0, 0, 0, 0, 119, 0, 0, 0, 0,
866  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
867  84, 0, 181, 0, 0, 186, 0, 104, 0, 0,
868  0, 191, 0, 0, 0, 0, 0, 0, 0, 0,
869 
870  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
871  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
874  0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
875  0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
876  0, 0, 0, 0, 189, 0, 0, 114, 27, 0,
877  0, 0, 54, 149, 0, 0, 0, 0, 0, 0,
878  0, 0, 0, 0, 0, 184, 0, 157, 0, 0,
879  0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
880 
881  24, 0, 0, 163, 0, 0, 0, 56, 0, 0,
882  0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
883  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884  0, 0, 0, 0, 0, 0, 0, 0, 57, 0,
885  0, 103, 0, 0, 0, 42, 0, 0, 0, 0,
886  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887  0, 0, 134, 0, 0, 0, 26, 0, 0, 0,
888  185, 0, 0, 0, 0, 0, 145, 0, 0, 0,
889  0, 0, 0, 0, 0, 0, 51, 0, 0, 0,
890  0, 0, 20, 0, 0, 0, 188, 76, 0, 48,
891 
892  0, 0, 0, 182, 180, 0, 28, 0, 0, 0,
893  0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
894  0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
895  0, 142, 0, 0, 0, 118, 0, 0, 0, 0,
896  0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
897  0, 49, 0, 0, 147, 0, 0, 0, 0, 0,
898  0, 0, 0, 66, 0, 0, 0, 0, 0, 0,
899  0, 0, 0, 0, 170, 13, 0, 0, 0, 0,
900  0, 0, 0, 0, 0, 148, 158, 0, 0, 0,
901  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
902 
903  0, 0, 0, 0, 0, 0, 0, 0, 0, 152,
904  0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
905  59, 58, 19, 0, 166, 0, 0, 0, 0, 0,
906  0, 0, 45, 0, 0, 0, 0, 100, 0, 0,
907  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908  140, 0, 0, 0, 0, 55, 0, 0, 46, 168,
909  0, 95, 0, 0, 0, 0, 75, 0, 0, 0,
910  0, 0, 0, 0, 72, 0, 0, 0, 0, 0,
911  0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
912  0, 0, 0, 70, 0, 0, 0, 0, 0, 0,
913 
914  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
915  0, 0, 0, 0, 29, 0, 0, 71, 0, 0,
916  0, 146, 0, 0, 0, 0, 190, 192, 167, 0,
917  115, 96, 0, 0, 0, 0, 67, 0, 0, 0,
918  0, 0, 0, 0, 138, 0, 0, 143, 0, 69,
919  0, 62, 0, 0, 0, 0, 97, 0, 0, 0,
920  137, 0, 0, 171, 0, 0, 0, 0, 0, 0,
921  0, 0, 68, 0, 0, 0, 0, 0, 73, 0,
922  99, 65, 0, 0, 0, 0, 64, 139, 0
923  } ;
924 
925 static const YY_CHAR yy_ec[256] =
926  { 0,
927  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
928  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
929  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
930  1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
931  5, 8, 9, 10, 11, 12, 13, 14, 15, 16,
932  14, 17, 14, 18, 14, 14, 14, 19, 5, 20,
933  5, 21, 22, 5, 23, 24, 25, 26, 27, 28,
934  5, 29, 5, 30, 5, 31, 5, 32, 33, 34,
935  5, 35, 36, 37, 38, 39, 40, 5, 41, 5,
936  42, 43, 44, 5, 45, 5, 46, 47, 48, 49,
937 
938  50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
939  60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
940  70, 71, 72, 5, 73, 5, 5, 5, 5, 5,
941  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
942  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
943  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
944  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
945  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
946  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
947  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
948 
949  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
950  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
951  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
952  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
953  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
954  5, 5, 5, 5, 5
955  } ;
956 
957 static const YY_CHAR yy_meta[74] =
958  { 0,
959  1, 1, 2, 1, 1, 3, 1, 1, 1, 1,
960  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
961  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
962  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
963  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
964  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
965  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
966  1, 1, 1
967  } ;
968 
969 static const flex_int16_t yy_base[1998] =
970  { 0,
971  0, 72, 21, 31, 43, 51, 54, 60, 91, 99,
972  2376, 2377, 34, 2372, 145, 0, 207, 2377, 214, 221,
973  13, 228, 2377, 2352, 118, 25, 2, 6, 2377, 2377,
974  73, 11, 17, 2377, 2377, 2377, 104, 2360, 2313, 0,
975  2350, 108, 2367, 24, 262, 2377, 2309, 67, 2315, 84,
976  75, 88, 224, 91, 89, 290, 220, 2307, 206, 285,
977  206, 204, 212, 60, 232, 2316, 247, 294, 315, 307,
978  286, 2299, 230, 325, 354, 328, 2318, 0, 366, 382,
979  397, 411, 404, 2377, 0, 2377, 419, 425, 216, 225,
980  229, 227, 319, 329, 2377, 2315, 2356, 2377, 300, 2377,
981 
982  438, 2343, 390, 2312, 331, 10, 406, 311, 408, 414,
983  420, 2353, 0, 499, 409, 2295, 2292, 2296, 402, 2292,
984  2300, 406, 2296, 2285, 2286, 2291, 78, 2301, 2284, 2293,
985  2293, 95, 2284, 239, 2285, 2283, 396, 2331, 2335, 2275,
986  2328, 2268, 174, 2289, 2289, 2283, 336, 2276, 2274, 2275,
987  2267, 2272, 2266, 413, 2277, 346, 2262, 2261, 2275, 423,
988  2261, 430, 422, 2255, 472, 420, 432, 2276, 2273, 2274,
989  416, 2272, 2307, 2306, 423, 2252, 2252, 2253, 435, 2245,
990  2262, 2254, 0, 464, 475, 471, 466, 478, 510, 2253,
991  2377, 2298, 515, 2247, 475, 508, 514, 2301, 515, 2300,
992 
993  511, 2299, 2377, 2377, 557, 2298, 530, 2257, 2249, 2236,
994  2247, 2251, 2252, 2249, 2246, 2245, 449, 493, 2288, 2282,
995  2246, 2227, 2224, 2232, 2227, 2241, 2237, 2225, 2237, 2237,
996  2228, 2212, 2216, 2229, 2231, 2228, 2220, 2210, 2228, 2377,
997  2223, 505, 2208, 2207, 2216, 2258, 2205, 2215, 2218, 545,
998  2214, 2253, 2198, 2200, 2211, 2249, 2194, 2252, 2206, 2186,
999  2201, 552, 2191, 2197, 2206, 2187, 2185, 2185, 2191, 2182,
1000  2181, 2188, 2178, 2237, 2193, 2192, 2186, 502, 2193, 2188,
1001  2180, 2170, 2185, 2184, 2179, 2183, 512, 2181, 2167, 2173,
1002  2180, 2162, 525, 2167, 2164, 2163, 341, 2158, 2172, 2171,
1003 
1004  2214, 2173, 558, 2164, 527, 2377, 2377, 528, 2377, 2377,
1005  2151, 533, 548, 2199, 564, 2209, 557, 2377, 2208, 2377,
1006  2202, 608, 2377, 549, 2142, 2151, 2199, 2159, 2142, 2159,
1007  2140, 2146, 2198, 2153, 2156, 2147, 2150, 2145, 547, 2377,
1008  2147, 2191, 2185, 2143, 2140, 583, 2146, 2186, 2180, 2133,
1009  2128, 2125, 2176, 2133, 2122, 2138, 2172, 2118, 605, 2132,
1010  2117, 2130, 2128, 2116, 2126, 2125, 2120, 2127, 2122, 2118,
1011  575, 2116, 2119, 2114, 2100, 2112, 2108, 2158, 566, 2152,
1012  2377, 2116, 2150, 2100, 2099, 2098, 2091, 2093, 2105, 2096,
1013  2085, 2102, 2097, 589, 2144, 2097, 2094, 2097, 2377, 2096,
1014 
1015  2085, 2085, 2097, 449, 2072, 2073, 2094, 548, 2076, 2127,
1016  2072, 2086, 2089, 2084, 2070, 2082, 2081, 2080, 2075, 2117,
1017  2077, 2076, 2075, 2074, 584, 2117, 2076, 2115, 2377, 2057,
1018  2056, 590, 2069, 2377, 2377, 2068, 2057, 2049, 603, 2108,
1019  2107, 2377, 2106, 2377, 612, 660, 615, 2105, 2047, 2058,
1020  2097, 2050, 2052, 2051, 2039, 2377, 2044, 2037, 2049, 2052,
1021  2035, 2050, 2037, 2036, 2377, 629, 2038, 2035, 566, 2033,
1022  2035, 2377, 2043, 2040, 2025, 2038, 2033, 639, 2040, 2028,
1023  2021, 2072, 2377, 2019, 2035, 2069, 2030, 2027, 2028, 2012,
1024  2029, 2063, 2014, 2013, 2008, 2007, 2058, 2002, 602, 2021,
1025 
1026  1995, 2002, 2007, 2017, 2051, 2055, 2377, 2000, 1996, 1994,
1027  2003, 2002, 1996, 2003, 1987, 1987, 1997, 1985, 1999, 1988,
1028  1984, 1982, 2377, 2039, 2377, 1981, 1992, 2031, 1976, 1981,
1029  1990, 1984, 1978, 1987, 2029, 2023, 1985, 1968, 1968, 1963,
1030  1983, 1958, 1964, 1969, 636, 1971, 1975, 1958, 2016, 1957,
1031  1957, 2008, 1953, 1954, 1953, 1965, 1954, 2377, 1964, 2377,
1032  1953, 1951, 2377, 1962, 1998, 1958, 1942, 1959, 1999, 2377,
1033  2377, 2377, 608, 631, 654, 2377, 1950, 1949, 605, 1956,
1034  1936, 1935, 1988, 1933, 1943, 1985, 1930, 1929, 1928, 1935,
1035  1928, 1940, 1922, 1922, 1937, 1936, 636, 1935, 1934, 1934,
1036 
1037  1916, 1921, 1962, 1929, 1921, 1966, 1910, 1926, 1925, 2377,
1038  1910, 1907, 1965, 1920, 1912, 1918, 1909, 1917, 1902, 1918,
1039  1900, 1912, 1913, 600, 1895, 1894, 1888, 1893, 1908, 1905,
1040  1906, 1885, 1895, 1901, 1944, 1899, 1891, 1882, 2377, 1883,
1041  1885, 1894, 1886, 1891, 1930, 1929, 1880, 16, 1889, 1926,
1042  1871, 1872, 1875, 1868, 2377, 1882, 1861, 1865, 1879, 1871,
1043  1916, 1868, 1875, 1913, 2377, 1858, 1872, 1856, 1870, 1873,
1044  1854, 1906, 1905, 1904, 1851, 1902, 1847, 1900, 1899, 2377,
1045  1844, 1858, 1857, 655, 1858, 1857, 1854, 1854, 1891, 1851,
1046  1834, 1839, 1841, 2377, 1847, 1837, 2377, 653, 653, 1831,
1047 
1048  1829, 1836, 1846, 1838, 1825, 1819, 1877, 648, 1881, 1839,
1049  664, 1874, 1834, 1872, 1871, 1823, 1821, 1829, 1828, 192,
1050  215, 255, 309, 343, 456, 433, 579, 634, 687, 652,
1051  650, 658, 648, 703, 711, 669, 671, 2377, 674, 669,
1052  661, 676, 681, 678, 681, 680, 668, 682, 680, 688,
1053  724, 686, 731, 732, 682, 674, 684, 731, 689, 739,
1054  2377, 740, 693, 695, 691, 685, 688, 746, 742, 705,
1055  694, 707, 2377, 697, 708, 697, 710, 712, 756, 757,
1056  700, 711, 696, 719, 698, 704, 759, 723, 707, 719,
1057  763, 764, 765, 712, 767, 731, 726, 733, 732, 730,
1058 
1059  715, 727, 729, 735, 725, 723, 2377, 787, 746, 747,
1060  737, 749, 739, 752, 737, 744, 750, 742, 756, 796,
1061  772, 759, 764, 761, 743, 750, 764, 809, 762, 760,
1062  769, 2377, 765, 760, 775, 772, 758, 765, 764, 762,
1063  781, 778, 766, 773, 774, 783, 787, 823, 785, 776,
1064  774, 773, 784, 780, 836, 793, 778, 779, 785, 801,
1065  791, 2377, 801, 801, 794, 805, 803, 848, 790, 792,
1066  807, 794, 793, 855, 812, 798, 804, 802, 2377, 2377,
1067  812, 817, 822, 810, 820, 822, 2377, 2377, 823, 810,
1068  828, 815, 809, 2377, 814, 832, 819, 869, 820, 872,
1069 
1070  818, 822, 880, 2377, 2377, 825, 829, 828, 825, 885,
1071  838, 828, 829, 825, 838, 849, 833, 851, 846, 847,
1072  849, 842, 844, 845, 841, 847, 847, 849, 864, 905,
1073  862, 867, 844, 867, 853, 852, 2377, 859, 860, 874,
1074  864, 862, 912, 870, 860, 875, 876, 863, 895, 903,
1075  872, 867, 922, 923, 885, 925, 2377, 888, 892, 933,
1076  883, 882, 877, 878, 890, 897, 886, 887, 883, 886,
1077  887, 897, 906, 943, 890, 909, 901, 896, 954, 911,
1078  912, 903, 2377, 905, 908, 916, 918, 903, 919, 913,
1079  960, 926, 910, 911, 2377, 927, 930, 913, 972, 915,
1080 
1081  934, 2377, 933, 936, 922, 917, 935, 975, 933, 929,
1082  926, 979, 980, 942, 928, 946, 945, 946, 932, 947,
1083  939, 946, 936, 954, 953, 940, 2377, 948, 954, 957,
1084  1002, 2377, 951, 956, 1000, 951, 964, 958, 962, 960,
1085  958, 960, 970, 1015, 959, 964, 961, 961, 1020, 964,
1086  976, 2377, 964, 972, 970, 1021, 963, 984, 970, 972,
1087  981, 993, 980, 978, 983, 993, 994, 999, 1040, 1012,
1088  1017, 999, 996, 992, 1006, 989, 989, 1049, 992, 2377,
1089  1003, 993, 1013, 1012, 1003, 992, 1009, 1016, 1059, 1020,
1090  1013, 1017, 1021, 1004, 1021, 1012, 1067, 1014, 2377, 1066,
1091 
1092  1013, 1016, 1015, 1016, 1016, 1037, 1034, 1039, 1040, 1026,
1093  1034, 1043, 1023, 1038, 1045, 1087, 2377, 1088, 1089, 1031,
1094  1041, 1051, 1035, 1055, 1043, 1039, 1046, 1055, 1043, 1050,
1095  1051, 1063, 1104, 1051, 1049, 1051, 1068, 1109, 1059, 1058,
1096  1064, 1062, 1060, 1055, 1116, 1117, 1113, 1119, 2377, 1076,
1097  1069, 1060, 1079, 1067, 1077, 1074, 1079, 1075, 1088, 1088,
1098  2377, 1072, 1074, 1070, 1076, 2377, 1077, 1137, 1076, 1095,
1099  1096, 1098, 1137, 1090, 1144, 1145, 1098, 1083, 1097, 1105,
1100  1104, 1088, 1093, 1111, 2377, 1133, 1124, 1156, 1096, 1118,
1101  1113, 1113, 1117, 2377, 1104, 1104, 1107, 1124, 1119, 1123,
1102 
1103  1168, 1116, 1120, 2377, 1112, 1129, 1109, 1130, 1120, 1171,
1104  1125, 2377, 1138, 1138, 1176, 1123, 1179, 1137, 1142, 1128,
1105  1188, 1131, 1142, 1134, 1140, 1136, 1154, 1155, 1156, 2377,
1106  2377, 1155, 2377, 1140, 1151, 1142, 1161, 1154, 1152, 1145,
1107  1157, 1201, 1165, 1154, 1161, 1162, 1168, 2377, 1161, 1213,
1108  1154, 1215, 2377, 1216, 1158, 1164, 1171, 1215, 1177, 2377,
1109  2377, 1164, 2377, 1166, 1180, 1185, 1168, 1227, 1184, 1185,
1110  1186, 1226, 1178, 1183, 1234, 1187, 1231, 1184, 1238, 2377,
1111  1185, 1240, 1241, 1198, 1199, 1201, 2377, 2377, 1184, 1246,
1112  1242, 1206, 1249, 1191, 1203, 1208, 1223, 1254, 2377, 1211,
1113 
1114  1204, 1213, 1204, 1215, 1260, 1197, 1208, 1223, 1259, 1211,
1115  2377, 1207, 1223, 1224, 1225, 1222, 1266, 1229, 1219, 1229,
1116  1235, 1222, 1218, 1278, 1231, 1275, 1282, 1239, 2377, 1241,
1117  1234, 1243, 1244, 1241, 1231, 1234, 1234, 1239, 1294, 1241,
1118  1296, 1239, 1244, 1299, 1295, 1236, 1251, 1244, 1248, 1261,
1119  1262, 1260, 1309, 2377, 1263, 2377, 2377, 1268, 1260, 1270,
1120  1255, 1311, 1257, 1318, 1262, 1272, 1321, 2377, 1269, 1269,
1121  1271, 1273, 1326, 1267, 1270, 2377, 1271, 1288, 1293, 2377,
1122  1277, 2377, 2377, 1290, 1273, 1293, 1294, 2377, 1281, 1289,
1123  2377, 1341, 1290, 1343, 1323, 2377, 1345, 1302, 1347, 1298,
1124 
1125  1345, 2377, 1293, 1352, 1302, 1296, 1293, 1296, 1299, 1299,
1126  1316, 1355, 1308, 1320, 1323, 1311, 1314, 1307, 1315, 1305,
1127  2377, 1327, 1312, 2377, 1314, 1315, 1330, 1330, 1333, 1333,
1128  1330, 1374, 1336, 1328, 2377, 1329, 2377, 1339, 1331, 2377,
1129  1337, 1342, 1343, 1340, 1384, 1332, 1347, 1348, 1340, 2377,
1130  1337, 1338, 1338, 1344, 1343, 1341, 1355, 2377, 1396, 1343,
1131  2377, 1344, 1344, 1346, 1352, 2377, 1361, 1355, 1410, 1352,
1132  1358, 1350, 1362, 1366, 1377, 1370, 1376, 1420, 1373, 1382,
1133  2377, 1379, 2377, 1376, 1399, 2377, 1426, 2377, 1384, 1369,
1134  1429, 2377, 1430, 1387, 1392, 1374, 1434, 1435, 1431, 1395,
1135 
1136  1392, 1388, 1381, 1436, 1394, 1395, 1385, 1390, 1446, 1400,
1137  1449, 1445, 1408, 1405, 1449, 1397, 1402, 1400, 1459, 1415,
1138  1403, 1462, 1458, 1421, 1465, 1426, 1415, 1409, 1469, 1411,
1139  1412, 1426, 1429, 1429, 1475, 1417, 1434, 1430, 1434, 1418,
1140  1476, 1477, 1424, 1479, 1442, 1435, 1434, 1428, 1446, 2377,
1141  1446, 1438, 1444, 1449, 1436, 1435, 1437, 1492, 2377, 1433,
1142  1451, 1500, 1458, 1471, 2377, 1503, 1456, 2377, 2377, 1447,
1143  1458, 1507, 2377, 2377, 1453, 1458, 1456, 1506, 1464, 1469,
1144  1457, 1473, 1462, 1461, 1475, 2377, 1463, 2377, 1466, 1517,
1145  1460, 1465, 1525, 1473, 1483, 1484, 2377, 1529, 1483, 1527,
1146 
1147  2377, 1478, 1534, 2377, 1477, 1492, 1480, 2377, 1490, 1491,
1148  1540, 1498, 1502, 2377, 1538, 1504, 1480, 1498, 1507, 1489,
1149  1496, 1550, 1509, 1508, 1499, 1549, 1496, 1556, 1504, 1499,
1150  1500, 1560, 1561, 1511, 1563, 1516, 1521, 1514, 2377, 1567,
1151  1568, 2377, 1517, 1570, 1512, 2377, 1515, 1525, 1569, 1517,
1152  1532, 1519, 1534, 1520, 1527, 1527, 1582, 1539, 1527, 1526,
1153  1586, 1539, 2377, 1583, 1534, 1531, 2377, 1545, 1532, 1553,
1154  2377, 1550, 1595, 1548, 1545, 1546, 2377, 1599, 1558, 1541,
1155  1543, 1559, 1541, 1557, 1558, 1567, 2377, 1557, 1609, 1569,
1156  1553, 1607, 2377, 1571, 1566, 1615, 2377, 2377, 1557, 2377,
1157 
1158  1564, 1618, 1614, 2377, 2377, 1576, 2377, 1616, 1578, 1579,
1159  1564, 1565, 1573, 1627, 1575, 1624, 1625, 1580, 2377, 1592,
1160  1579, 1586, 2377, 1583, 1588, 1586, 1638, 1639, 1587, 1584,
1161  1584, 2377, 1599, 1600, 1601, 2377, 1602, 1592, 1604, 1649,
1162  1650, 1592, 1600, 1601, 1614, 2377, 1615, 1596, 1603, 1594,
1163  1606, 2377, 1655, 1616, 2377, 1620, 1605, 1605, 1620, 1613,
1164  1612, 1623, 1610, 2377, 1626, 1614, 1617, 1673, 1631, 1633,
1165  1624, 1633, 1635, 1639, 2377, 2377, 1632, 1623, 1682, 1625,
1166  1684, 1685, 1686, 1644, 1688, 2377, 2377, 1684, 1646, 1647,
1167  1634, 1642, 1653, 1650, 1696, 1637, 1640, 1645, 1636, 1701,
1168 
1169  1654, 1655, 1645, 1662, 1661, 1702, 1646, 1665, 1666, 2377,
1170  1663, 1668, 1669, 1714, 1671, 1674, 1661, 1670, 2377, 1719,
1171  2377, 2377, 2377, 1680, 2377, 1662, 1722, 1723, 1666, 1725,
1172  1673, 1722, 2377, 1684, 1689, 1730, 1689, 2377, 1680, 1670,
1173  1729, 1695, 1688, 1684, 1738, 1681, 1683, 1688, 1684, 1686,
1174  2377, 1691, 1701, 1686, 1694, 2377, 1689, 1701, 2377, 2377,
1175  1706, 2377, 1707, 1697, 1753, 1702, 2377, 1704, 1712, 1757,
1176  1698, 1700, 1697, 1721, 2377, 1708, 1715, 1718, 1707, 1761,
1177  1708, 1716, 1725, 1724, 1727, 1720, 1715, 1715, 1721, 2377,
1178  1721, 1733, 1778, 2377, 1724, 1736, 1781, 1730, 1732, 1730,
1179 
1180  1785, 1738, 1725, 1740, 1745, 1790, 1791, 1792, 1749, 1794,
1181  1795, 1742, 1746, 1740, 2377, 1756, 1800, 2377, 1757, 1742,
1182  1760, 2377, 1751, 1765, 1761, 1754, 2377, 2377, 2377, 1808,
1183  2377, 2377, 1758, 1766, 1811, 1772, 2377, 1813, 1755, 1815,
1184  1770, 1769, 1770, 1760, 2377, 1820, 1816, 2377, 1763, 2377,
1185  1775, 2377, 1824, 1766, 1782, 1827, 2377, 1788, 1785, 1777,
1186  2377, 1827, 1776, 2377, 1788, 1781, 1836, 1784, 1779, 1781,
1187  1796, 1781, 2377, 1842, 1795, 1844, 1845, 1793, 2377, 1795,
1188  2377, 2377, 1789, 1805, 1850, 1851, 2377, 2377, 2377, 1857,
1189  1860, 1863, 1864, 1866, 1869, 1872, 1875
1190 
1191  } ;
1192 
1193 static const flex_int16_t yy_def[1998] =
1194  { 0,
1195  1990, 1990, 1991, 1991, 1990, 1990, 1990, 1990, 1990, 1990,
1196  1989, 1989, 1989, 1989, 1989, 1992, 1989, 1989, 1989, 1989,
1197  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1198  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1993,
1199  1989, 1989, 1989, 1994, 15, 1989, 45, 45, 45, 45,
1200  45, 45, 45, 45, 45, 1995, 45, 45, 45, 45,
1201  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1202  45, 45, 45, 45, 45, 45, 45, 1992, 1989, 1989,
1203  1989, 1989, 1989, 1989, 1996, 1989, 1989, 1989, 1989, 1989,
1204  1989, 1989, 1989, 1989, 1989, 1989, 1993, 1989, 1994, 1989,
1205 
1206  1989, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1207  45, 1997, 45, 1995, 45, 45, 45, 45, 45, 45,
1208  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1209  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1210  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1211  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1212  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1213  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1214  45, 45, 1996, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1215  1989, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1216 
1217  45, 1997, 1989, 1989, 114, 45, 45, 45, 45, 45,
1218  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1219  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1220  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1221  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1222  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1223  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1224  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1225  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1226  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1227 
1228  45, 45, 45, 45, 1989, 1989, 1989, 1989, 1989, 1989,
1229  1989, 45, 45, 45, 45, 45, 45, 1989, 45, 1989,
1230  45, 114, 1989, 45, 45, 45, 45, 45, 45, 45,
1231  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1232  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1233  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1234  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1235  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1236  1989, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1237  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1238 
1239  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1240  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1241  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1242  45, 45, 45, 1989, 1989, 1989, 45, 45, 45, 45,
1243  45, 1989, 45, 1989, 45, 114, 45, 45, 45, 45,
1244  45, 45, 45, 45, 45, 1989, 45, 45, 45, 45,
1245  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1246  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1247  45, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1248  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1249 
1250  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1251  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1252  45, 45, 1989, 45, 1989, 45, 45, 45, 45, 45,
1253  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1254  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1255  45, 45, 45, 45, 45, 45, 45, 1989, 45, 1989,
1256  45, 45, 1989, 45, 45, 1989, 45, 45, 45, 1989,
1257  1989, 1989, 45, 45, 45, 1989, 45, 45, 45, 45,
1258  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1259  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1260 
1261  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1262  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1263  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1264  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1265  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1266  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1267  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1268  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1269  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1270  45, 45, 45, 1989, 45, 45, 1989, 45, 45, 45,
1271 
1272  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1273  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1274  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1275  45, 45, 45, 45, 45, 45, 45, 1989, 45, 45,
1276  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1277  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1278  1989, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1279  45, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1280  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1281  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1282 
1283  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1284  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1285  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1286  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1287  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1288  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1289  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1290  45, 45, 45, 45, 45, 45, 45, 45, 1989, 1989,
1291  45, 45, 45, 45, 45, 45, 1989, 1989, 45, 45,
1292  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1293 
1294  45, 45, 45, 1989, 1989, 45, 45, 45, 45, 45,
1295  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1296  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1297  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1298  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1299  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1300  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1301  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1302  45, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1303  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1304 
1305  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1306  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1307  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1308  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1309  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1310  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1311  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1312  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1313  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1314  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1315 
1316  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1317  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1318  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1319  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1320  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1321  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1322  1989, 45, 45, 45, 45, 1989, 45, 45, 45, 45,
1323  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1324  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1325  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1326 
1327  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1328  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1329  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1330  1989, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1331  45, 45, 45, 45, 45, 45, 45, 1989, 45, 45,
1332  45, 45, 1989, 45, 45, 45, 45, 45, 45, 1989,
1333  1989, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1334  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1335  45, 45, 45, 45, 45, 45, 1989, 1989, 45, 45,
1336  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1337 
1338  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1339  1989, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1340  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1341  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1342  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1343  45, 45, 45, 1989, 45, 1989, 1989, 45, 45, 45,
1344  45, 45, 45, 45, 45, 45, 45, 1989, 45, 45,
1345  45, 45, 45, 45, 45, 1989, 45, 45, 45, 1989,
1346  45, 1989, 1989, 45, 45, 45, 45, 1989, 45, 45,
1347  1989, 45, 45, 45, 45, 1989, 45, 45, 45, 45,
1348 
1349  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1350  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1351  1989, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1352  45, 45, 45, 45, 1989, 45, 1989, 45, 45, 1989,
1353  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1354  45, 45, 45, 45, 45, 45, 45, 1989, 45, 45,
1355  1989, 45, 45, 45, 45, 1989, 45, 45, 45, 45,
1356  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1357  1989, 45, 1989, 45, 45, 1989, 45, 1989, 45, 45,
1358  45, 1989, 45, 45, 45, 45, 45, 45, 45, 45,
1359 
1360  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1361  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1362  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1363  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1364  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1365  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1366  45, 45, 45, 45, 1989, 45, 45, 1989, 1989, 45,
1367  45, 45, 1989, 1989, 45, 45, 45, 45, 45, 45,
1368  45, 45, 45, 45, 45, 1989, 45, 1989, 45, 45,
1369  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1370 
1371  1989, 45, 45, 1989, 45, 45, 45, 1989, 45, 45,
1372  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1373  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1374  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1375  45, 1989, 45, 45, 45, 1989, 45, 45, 45, 45,
1376  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1377  45, 45, 1989, 45, 45, 45, 1989, 45, 45, 45,
1378  1989, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1379  45, 45, 45, 45, 45, 45, 1989, 45, 45, 45,
1380  45, 45, 1989, 45, 45, 45, 1989, 1989, 45, 1989,
1381 
1382  45, 45, 45, 1989, 1989, 45, 1989, 45, 45, 45,
1383  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1384  45, 45, 1989, 45, 45, 45, 45, 45, 45, 45,
1385  45, 1989, 45, 45, 45, 1989, 45, 45, 45, 45,
1386  45, 45, 45, 45, 45, 1989, 45, 45, 45, 45,
1387  45, 1989, 45, 45, 1989, 45, 45, 45, 45, 45,
1388  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1389  45, 45, 45, 45, 1989, 1989, 45, 45, 45, 45,
1390  45, 45, 45, 45, 45, 1989, 1989, 45, 45, 45,
1391  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1392 
1393  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1394  45, 45, 45, 45, 45, 45, 45, 45, 1989, 45,
1395  1989, 1989, 1989, 45, 1989, 45, 45, 45, 45, 45,
1396  45, 45, 1989, 45, 45, 45, 45, 1989, 45, 45,
1397  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1398  1989, 45, 45, 45, 45, 1989, 45, 45, 1989, 1989,
1399  45, 1989, 45, 45, 45, 45, 1989, 45, 45, 45,
1400  45, 45, 45, 45, 1989, 45, 45, 45, 45, 45,
1401  45, 45, 45, 45, 45, 45, 45, 45, 45, 1989,
1402  45, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1403 
1404  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1405  45, 45, 45, 45, 1989, 45, 45, 1989, 45, 45,
1406  45, 1989, 45, 45, 45, 45, 1989, 1989, 1989, 45,
1407  1989, 1989, 45, 45, 45, 45, 1989, 45, 45, 45,
1408  45, 45, 45, 45, 1989, 45, 45, 1989, 45, 1989,
1409  45, 1989, 45, 45, 45, 45, 1989, 45, 45, 45,
1410  1989, 45, 45, 1989, 45, 45, 45, 45, 45, 45,
1411  45, 45, 1989, 45, 45, 45, 45, 45, 1989, 45,
1412  1989, 1989, 45, 45, 45, 45, 1989, 1989, 0, 1989,
1413  1989, 1989, 1989, 1989, 1989, 1989, 1989
1414 
1415  } ;
1416 
1417 static const flex_int16_t yy_nxt[2451] =
1418  { 0,
1419  1989, 13, 14, 13, 1989, 15, 16, 1989, 17, 18,
1420  19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
1421  84, 773, 37, 14, 37, 85, 25, 26, 38, 100,
1422  1989, 27, 37, 14, 37, 42, 28, 42, 38, 90,
1423  91, 29, 196, 30, 13, 14, 13, 89, 90, 25,
1424  31, 91, 13, 14, 13, 13, 14, 13, 32, 40,
1425  774, 13, 14, 13, 33, 40, 101, 90, 91, 196,
1426  89, 34, 35, 13, 14, 13, 93, 15, 16, 94,
1427  17, 18, 19, 20, 21, 22, 22, 22, 22, 22,
1428  23, 24, 13, 14, 13, 89, 39, 103, 25, 26,
1429 
1430  13, 14, 13, 27, 39, 42, 105, 42, 28, 42,
1431  106, 42, 41, 29, 107, 30, 110, 111, 92, 137,
1432  41, 25, 31, 103, 223, 224, 87, 138, 87, 105,
1433  32, 88, 88, 88, 88, 88, 33, 107, 106, 110,
1434  229, 111, 230, 34, 35, 44, 44, 44, 45, 45,
1435  46, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1436  45, 47, 45, 45, 45, 45, 45, 48, 45, 45,
1437  49, 45, 50, 45, 51, 45, 52, 45, 45, 45,
1438  45, 53, 54, 45, 55, 45, 45, 56, 45, 45,
1439  57, 58, 59, 60, 61, 62, 63, 64, 65, 51,
1440 
1441  66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1442  76, 77, 55, 45, 45, 45, 45, 45, 79, 244,
1443  80, 80, 80, 80, 80, 79, 105, 82, 82, 82,
1444  82, 82, 245, 81, 83, 83, 83, 83, 83, 79,
1445  81, 82, 82, 82, 82, 82, 184, 81, 108, 105,
1446  103, 119, 845, 131, 81, 185, 81, 184, 109, 120,
1447  134, 135, 121, 81, 132, 122, 186, 123, 136, 124,
1448  81, 108, 184, 846, 133, 164, 115, 81, 45, 165,
1449  139, 185, 116, 187, 45, 117, 109, 45, 232, 45,
1450  140, 45, 141, 45, 186, 113, 143, 144, 45, 45,
1451 
1452  145, 45, 45, 847, 233, 100, 146, 45, 45, 45,
1453  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1454  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1455  125, 160, 45, 126, 127, 161, 45, 128, 129, 147,
1456  45, 107, 101, 148, 198, 162, 318, 149, 45, 185,
1457  130, 425, 45, 110, 45, 114, 259, 155, 848, 150,
1458  152, 195, 153, 151, 154, 156, 186, 157, 173, 174,
1459  166, 198, 158, 159, 167, 188, 179, 168, 108, 83,
1460  83, 83, 83, 83, 169, 170, 180, 195, 109, 171,
1461  172, 181, 81, 79, 189, 80, 80, 80, 80, 80,
1462 
1463  249, 175, 260, 176, 250, 87, 177, 87, 81, 849,
1464  88, 88, 88, 88, 88, 81, 109, 83, 83, 83,
1465  83, 83, 79, 178, 82, 82, 82, 82, 82, 193,
1466  81, 81, 88, 88, 88, 88, 88, 81, 88, 88,
1467  88, 88, 88, 99, 197, 199, 201, 200, 193, 211,
1468  99, 197, 236, 81, 216, 237, 198, 193, 212, 238,
1469  81, 292, 213, 217, 218, 206, 850, 272, 200, 201,
1470  264, 273, 197, 199, 200, 293, 207, 284, 285, 197,
1471  99, 257, 275, 297, 99, 265, 266, 267, 99, 269,
1472  286, 851, 270, 271, 287, 301, 99, 307, 288, 305,
1473 
1474  99, 305, 99, 99, 204, 306, 334, 533, 306, 335,
1475  315, 534, 205, 205, 205, 205, 205, 276, 277, 278,
1476  307, 205, 205, 205, 205, 205, 205, 305, 279, 308,
1477  280, 306, 281, 282, 309, 283, 307, 313, 315, 316,
1478  317, 319, 321, 336, 205, 205, 205, 205, 205, 205,
1479  362, 337, 313, 434, 434, 371, 338, 339, 403, 310,
1480  313, 404, 385, 317, 319, 413, 316, 363, 431, 321,
1481  322, 322, 322, 322, 322, 324, 434, 435, 414, 322,
1482  322, 322, 322, 322, 322, 420, 437, 421, 439, 439,
1483  441, 443, 462, 469, 523, 563, 438, 538, 386, 470,
1484 
1485  564, 539, 322, 322, 322, 322, 322, 322, 372, 463,
1486  483, 373, 387, 441, 600, 484, 508, 439, 447, 443,
1487  432, 446, 446, 446, 446, 446, 509, 601, 852, 602,
1488  446, 446, 446, 446, 446, 446, 498, 499, 569, 556,
1489  698, 500, 557, 573, 610, 574, 675, 749, 750, 611,
1490  569, 631, 524, 446, 446, 446, 446, 446, 446, 697,
1491  807, 632, 703, 485, 700, 699, 569, 698, 486, 704,
1492  573, 808, 574, 45, 45, 45, 45, 45, 575, 821,
1493  592, 853, 45, 45, 45, 45, 45, 45, 593, 820,
1494  594, 595, 596, 699, 597, 830, 722, 854, 676, 723,
1495 
1496  855, 831, 821, 856, 860, 45, 45, 45, 45, 45,
1497  45, 834, 835, 861, 836, 857, 862, 820, 863, 858,
1498  864, 865, 866, 859, 867, 868, 869, 870, 871, 872,
1499  873, 874, 875, 876, 877, 878, 879, 880, 881, 882,
1500  883, 885, 886, 884, 887, 888, 889, 890, 891, 892,
1501  893, 894, 895, 896, 897, 898, 899, 900, 901, 902,
1502  903, 904, 905, 906, 907, 908, 909, 910, 911, 912,
1503  913, 914, 915, 916, 917, 918, 919, 920, 921, 922,
1504  924, 925, 926, 927, 930, 931, 923, 932, 934, 935,
1505  928, 936, 937, 933, 929, 938, 939, 940, 941, 942,
1506 
1507  943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
1508  953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
1509  963, 964, 965, 966, 967, 968, 969, 970, 971, 972,
1510  973, 974, 975, 976, 977, 950, 978, 979, 980, 981,
1511  982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
1512  992, 993, 994, 995, 997, 998, 999, 1000, 996, 1001,
1513  1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
1514  1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1021, 1022,
1515  1023, 1020, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
1516  1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041,
1517 
1518  1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051,
1519  1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061,
1520  1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
1521  1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
1522  1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
1523  1092, 1093, 1071, 1094, 1095, 1070, 1096, 1097, 1098, 1099,
1524  1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
1525  1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1119, 1120,
1526  1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
1527  1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140,
1528 
1529  1141, 1142, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
1530  1152, 1153, 1143, 1154, 1155, 1156, 1157, 1158, 1159, 1160,
1531  1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
1532  1171, 1172, 1173, 1174, 1175, 1118, 1176, 1177, 1178, 1179,
1533  1180, 1181, 1182, 1183, 1184, 1185, 1186, 1188, 1187, 1189,
1534  1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
1535  1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
1536  1210, 1211, 1212, 1213, 1186, 1187, 1214, 1215, 1216, 1217,
1537  1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
1538  1228, 1229, 1230, 1231, 1233, 1235, 1236, 1237, 1232, 1238,
1539 
1540  1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
1541  1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
1542  1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
1543  1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1234, 1277,
1544  1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
1545  1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
1546  1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
1547  1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
1548  1318, 1319, 1297, 1320, 1321, 1322, 1323, 1324, 1298, 1325,
1549  1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335,
1550 
1551  1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345,
1552  1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355,
1553  1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
1554  1366, 1367, 1368, 1369, 1370, 1371, 1372, 1374, 1375, 1376,
1555  1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
1556  1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
1557  1397, 1398, 1399, 1400, 1401, 1402, 1404, 1405, 1406, 1407,
1558  1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417,
1559  1418, 1419, 1420, 1421, 1422, 1423, 1395, 1424, 1425, 1373,
1560  1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
1561 
1562  1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1445, 1403,
1563  1446, 1447, 1448, 1449, 1450, 1444, 1451, 1452, 1453, 1454,
1564  1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464,
1565  1465, 1466, 1468, 1469, 1470, 1471, 1467, 1472, 1473, 1474,
1566  1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1485,
1567  1486, 1487, 1488, 1484, 1489, 1490, 1491, 1492, 1493, 1494,
1568  1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504,
1569  1505, 1506, 1485, 1507, 1508, 1509, 1510, 1511, 1512, 1513,
1570  1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523,
1571  1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533,
1572 
1573  1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
1574  1544, 1545, 1546, 1549, 1547, 1550, 1551, 1552, 1553, 1554,
1575  1548, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563,
1576  1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573,
1577  1574, 1575, 1576, 1578, 1579, 1580, 1581, 1582, 1583, 1584,
1578  1585, 1586, 1587, 1577, 1588, 1589, 1590, 1564, 1591, 1592,
1579  1593, 1594, 1595, 1596, 1597, 1599, 1600, 1601, 1602, 1603,
1580  1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613,
1581  1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623,
1582  1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
1583 
1584  1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643,
1585  1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653,
1586  1654, 1655, 1598, 1656, 1657, 1658, 1659, 1660, 1661, 1662,
1587  1663, 1664, 1665, 1666, 1667, 1641, 1668, 1669, 1670, 1671,
1588  1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681,
1589  1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691,
1590  1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701,
1591  1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
1592  1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721,
1593  1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731,
1594 
1595  1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741,
1596  1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751,
1597  1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761,
1598  1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771,
1599  1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781,
1600  1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791,
1601  1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801,
1602  1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811,
1603  1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
1604  1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831,
1605 
1606  1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841,
1607  1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851,
1608  1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,
1609  1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871,
1610  1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881,
1611  1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891,
1612  1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901,
1613  1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911,
1614  1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921,
1615  1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931,
1616 
1617  1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941,
1618  1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951,
1619  1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961,
1620  1962, 1963, 1964, 1965, 1967, 1966, 1968, 1969, 1970, 1971,
1621  1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981,
1622  1982, 1983, 1984, 1985, 1986, 1987, 1988, 12, 12, 12,
1623  36, 36, 36, 78, 97, 78, 99, 99, 99, 112,
1624  112, 112, 183, 844, 183, 202, 202, 202, 843, 842,
1625  841, 840, 839, 838, 837, 833, 832, 829, 828, 827,
1626  826, 825, 824, 823, 822, 819, 818, 817, 816, 815,
1627 
1628  814, 813, 812, 811, 810, 809, 806, 805, 804, 803,
1629  802, 801, 800, 799, 798, 797, 796, 795, 794, 793,
1630  792, 791, 790, 789, 788, 787, 786, 785, 784, 783,
1631  782, 781, 780, 779, 778, 777, 776, 775, 772, 771,
1632  770, 769, 768, 767, 766, 765, 764, 763, 762, 761,
1633  760, 759, 758, 757, 756, 755, 754, 753, 752, 751,
1634  748, 747, 746, 745, 744, 743, 742, 741, 740, 739,
1635  738, 737, 736, 735, 734, 733, 732, 731, 730, 729,
1636  728, 727, 726, 725, 724, 721, 720, 719, 718, 717,
1637  716, 715, 714, 713, 712, 711, 710, 709, 708, 707,
1638 
1639  706, 705, 702, 701, 697, 696, 695, 694, 693, 692,
1640  691, 690, 689, 688, 687, 686, 685, 684, 683, 682,
1641  681, 680, 679, 678, 677, 674, 673, 672, 671, 670,
1642  669, 668, 667, 666, 665, 664, 663, 662, 661, 660,
1643  659, 658, 657, 656, 655, 654, 653, 652, 651, 650,
1644  649, 648, 647, 646, 645, 644, 643, 642, 641, 640,
1645  639, 638, 637, 636, 635, 634, 633, 630, 629, 628,
1646  627, 626, 625, 624, 623, 622, 621, 620, 619, 618,
1647  617, 616, 615, 614, 613, 612, 609, 608, 607, 606,
1648  605, 604, 603, 599, 598, 591, 590, 589, 588, 587,
1649 
1650  586, 585, 584, 583, 582, 581, 580, 579, 578, 577,
1651  576, 572, 571, 570, 568, 567, 566, 565, 562, 561,
1652  560, 559, 558, 555, 554, 553, 552, 551, 550, 549,
1653  548, 547, 546, 545, 544, 543, 542, 541, 540, 537,
1654  536, 535, 532, 531, 530, 529, 528, 527, 526, 525,
1655  522, 521, 520, 519, 518, 517, 516, 515, 514, 513,
1656  512, 511, 510, 507, 506, 505, 504, 503, 502, 501,
1657  497, 496, 495, 494, 493, 492, 491, 490, 489, 488,
1658  487, 482, 481, 480, 479, 478, 477, 476, 475, 474,
1659  473, 472, 471, 468, 467, 466, 465, 464, 461, 460,
1660 
1661  459, 458, 457, 456, 455, 454, 453, 452, 451, 450,
1662  449, 448, 445, 444, 442, 440, 436, 433, 430, 429,
1663  428, 427, 426, 424, 423, 422, 419, 418, 417, 416,
1664  415, 412, 411, 410, 409, 408, 407, 406, 405, 402,
1665  401, 400, 399, 398, 397, 396, 395, 394, 393, 392,
1666  391, 390, 389, 388, 384, 383, 382, 381, 380, 379,
1667  378, 377, 376, 375, 374, 370, 369, 368, 367, 366,
1668  365, 364, 361, 360, 359, 358, 357, 356, 355, 354,
1669  353, 352, 351, 350, 349, 348, 347, 346, 345, 344,
1670  343, 342, 341, 340, 333, 332, 331, 330, 329, 328,
1671 
1672  327, 326, 325, 323, 203, 320, 318, 314, 312, 311,
1673  304, 303, 302, 300, 299, 298, 296, 295, 294, 291,
1674  290, 289, 274, 268, 263, 262, 261, 258, 256, 255,
1675  254, 253, 252, 251, 248, 247, 246, 243, 242, 241,
1676  240, 239, 235, 234, 231, 228, 227, 226, 225, 222,
1677  221, 220, 219, 215, 214, 210, 209, 208, 203, 194,
1678  192, 191, 190, 182, 163, 142, 118, 104, 102, 43,
1679  98, 96, 95, 86, 43, 1989, 11, 1989, 1989, 1989,
1680  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1681  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1682 
1683  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1684  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1685  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1686  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1687  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989
1688  } ;
1689 
1690 static const flex_int16_t yy_chk[2451] =
1691  { 0,
1692  0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1693  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1694  21, 648, 3, 3, 3, 21, 1, 1, 3, 44,
1695  0, 1, 4, 4, 4, 13, 1, 13, 4, 27,
1696  28, 1, 106, 1, 5, 5, 5, 26, 32, 1,
1697  1, 33, 6, 6, 6, 7, 7, 7, 1, 7,
1698  648, 8, 8, 8, 1, 8, 44, 27, 28, 106,
1699  26, 1, 1, 2, 2, 2, 32, 2, 2, 33,
1700  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1701  2, 2, 9, 9, 9, 31, 5, 48, 2, 2,
1702 
1703  10, 10, 10, 2, 6, 37, 50, 37, 2, 42,
1704  51, 42, 9, 2, 52, 2, 54, 55, 31, 64,
1705  10, 2, 2, 48, 127, 127, 25, 64, 25, 50,
1706  2, 25, 25, 25, 25, 25, 2, 52, 51, 54,
1707  132, 55, 132, 2, 2, 15, 15, 15, 15, 15,
1708  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1709  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1710  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1711  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1712  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1713 
1714  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1715  15, 15, 15, 15, 15, 15, 15, 15, 17, 143,
1716  17, 17, 17, 17, 17, 19, 62, 19, 19, 19,
1717  19, 19, 143, 17, 20, 20, 20, 20, 20, 22,
1718  19, 22, 22, 22, 22, 22, 89, 20, 53, 62,
1719  57, 59, 720, 61, 22, 90, 17, 92, 53, 59,
1720  62, 63, 59, 19, 61, 59, 91, 59, 63, 59,
1721  20, 53, 89, 721, 61, 73, 57, 22, 45, 73,
1722  65, 90, 57, 92, 45, 57, 53, 45, 134, 45,
1723  65, 45, 65, 45, 91, 56, 67, 67, 45, 45,
1724 
1725  67, 45, 56, 722, 134, 99, 67, 45, 45, 45,
1726  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1727  45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1728  60, 71, 56, 60, 60, 71, 56, 60, 60, 68,
1729  56, 69, 99, 68, 108, 71, 297, 68, 56, 93,
1730  60, 297, 56, 76, 56, 56, 156, 70, 723, 68,
1731  69, 105, 69, 68, 69, 70, 94, 70, 75, 75,
1732  74, 108, 70, 70, 74, 93, 76, 74, 75, 79,
1733  79, 79, 79, 79, 74, 74, 76, 105, 75, 74,
1734  74, 76, 79, 80, 94, 80, 80, 80, 80, 80,
1735 
1736  147, 75, 156, 75, 147, 81, 75, 81, 80, 724,
1737  81, 81, 81, 81, 81, 79, 75, 83, 83, 83,
1738  83, 83, 82, 75, 82, 82, 82, 82, 82, 103,
1739  83, 80, 87, 87, 87, 87, 87, 82, 88, 88,
1740  88, 88, 88, 101, 107, 109, 111, 110, 115, 119,
1741  101, 154, 137, 83, 122, 137, 175, 103, 119, 137,
1742  82, 171, 119, 122, 122, 115, 725, 163, 179, 111,
1743  160, 163, 107, 109, 110, 171, 115, 166, 166, 154,
1744  101, 154, 165, 175, 101, 160, 160, 160, 101, 162,
1745  167, 726, 162, 162, 167, 179, 101, 186, 167, 184,
1746 
1747  101, 187, 101, 101, 114, 185, 217, 404, 188, 217,
1748  195, 404, 114, 114, 114, 114, 114, 165, 165, 165,
1749  186, 114, 114, 114, 114, 114, 114, 184, 165, 187,
1750  165, 185, 165, 165, 188, 165, 189, 193, 195, 196,
1751  197, 199, 201, 218, 114, 114, 114, 114, 114, 114,
1752  242, 218, 207, 305, 308, 250, 218, 218, 278, 189,
1753  193, 278, 262, 197, 199, 287, 196, 242, 303, 201,
1754  205, 205, 205, 205, 205, 207, 305, 308, 287, 205,
1755  205, 205, 205, 205, 205, 293, 312, 293, 313, 324,
1756  315, 317, 339, 346, 394, 432, 312, 408, 262, 346,
1757 
1758  432, 408, 205, 205, 205, 205, 205, 205, 250, 339,
1759  359, 250, 262, 315, 469, 359, 379, 313, 324, 317,
1760  303, 322, 322, 322, 322, 322, 379, 469, 727, 469,
1761  322, 322, 322, 322, 322, 322, 371, 371, 439, 425,
1762  573, 371, 425, 445, 478, 445, 545, 624, 624, 478,
1763  447, 499, 394, 322, 322, 322, 322, 322, 322, 575,
1764  684, 499, 579, 359, 575, 574, 439, 573, 359, 579,
1765  445, 684, 445, 446, 446, 446, 446, 446, 447, 699,
1766  466, 728, 446, 446, 446, 446, 446, 446, 466, 698,
1767  466, 466, 466, 574, 466, 708, 597, 729, 545, 597,
1768 
1769  730, 708, 699, 731, 733, 446, 446, 446, 446, 446,
1770  446, 711, 711, 734, 711, 732, 735, 698, 736, 732,
1771  737, 739, 740, 732, 741, 742, 743, 744, 745, 746,
1772  747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
1773  757, 758, 759, 757, 760, 762, 763, 764, 765, 766,
1774  767, 768, 769, 770, 771, 772, 774, 775, 776, 777,
1775  778, 779, 780, 781, 782, 783, 784, 785, 786, 787,
1776  788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
1777  798, 799, 800, 800, 801, 802, 797, 803, 804, 805,
1778  800, 806, 808, 803, 800, 809, 810, 811, 812, 813,
1779 
1780  814, 815, 816, 817, 818, 819, 820, 821, 822, 823,
1781  824, 825, 826, 827, 828, 829, 830, 831, 833, 834,
1782  835, 836, 837, 838, 839, 840, 841, 842, 843, 844,
1783  845, 846, 847, 848, 849, 821, 850, 851, 852, 853,
1784  854, 855, 856, 857, 858, 859, 860, 861, 863, 864,
1785  865, 866, 867, 868, 869, 870, 871, 872, 868, 873,
1786  874, 875, 876, 877, 878, 881, 882, 883, 884, 885,
1787  886, 889, 890, 891, 892, 893, 895, 896, 897, 898,
1788  899, 896, 900, 901, 902, 903, 906, 907, 908, 909,
1789  910, 911, 912, 913, 914, 915, 916, 917, 918, 919,
1790 
1791  920, 921, 922, 923, 924, 925, 926, 927, 928, 929,
1792  930, 931, 932, 933, 934, 935, 936, 938, 939, 940,
1793  941, 942, 943, 944, 945, 946, 947, 948, 949, 950,
1794  951, 952, 953, 954, 955, 956, 958, 959, 960, 961,
1795  962, 963, 964, 965, 966, 967, 968, 969, 970, 971,
1796  972, 973, 950, 974, 975, 949, 976, 977, 978, 979,
1797  980, 981, 982, 984, 985, 986, 987, 988, 989, 990,
1798  991, 992, 993, 994, 996, 997, 998, 999, 1000, 1001,
1799  1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
1800  1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
1801 
1802  1023, 1024, 1025, 1026, 1028, 1029, 1030, 1031, 1033, 1034,
1803  1035, 1036, 1024, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
1804  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1053, 1054,
1805  1055, 1056, 1057, 1058, 1059, 999, 1060, 1061, 1062, 1063,
1806  1064, 1065, 1066, 1067, 1068, 1069, 1070, 1072, 1071, 1073,
1807  1074, 1075, 1076, 1077, 1078, 1079, 1081, 1082, 1083, 1084,
1808  1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
1809  1095, 1096, 1097, 1098, 1070, 1071, 1100, 1101, 1102, 1103,
1810  1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
1811  1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1118, 1123,
1812 
1813  1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
1814  1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
1815  1144, 1145, 1146, 1147, 1148, 1150, 1151, 1152, 1153, 1154,
1816  1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163, 1119, 1164,
1817  1165, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
1818  1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1186,
1819  1187, 1188, 1189, 1190, 1191, 1192, 1193, 1195, 1196, 1197,
1820  1198, 1199, 1200, 1201, 1202, 1203, 1205, 1206, 1207, 1208,
1821  1209, 1210, 1186, 1211, 1213, 1214, 1215, 1216, 1187, 1217,
1822  1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
1823 
1824  1228, 1229, 1232, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
1825  1241, 1242, 1243, 1244, 1245, 1246, 1247, 1249, 1250, 1251,
1826  1252, 1254, 1255, 1256, 1257, 1258, 1259, 1262, 1264, 1265,
1827  1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
1828  1276, 1277, 1278, 1279, 1281, 1282, 1283, 1284, 1285, 1286,
1829  1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298,
1830  1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
1831  1310, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
1832  1321, 1322, 1323, 1324, 1325, 1326, 1297, 1327, 1328, 1272,
1833  1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
1834 
1835  1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1305,
1836  1349, 1350, 1351, 1352, 1353, 1347, 1355, 1358, 1359, 1360,
1837  1361, 1362, 1363, 1364, 1365, 1366, 1367, 1369, 1370, 1371,
1838  1372, 1373, 1374, 1375, 1377, 1378, 1373, 1378, 1379, 1381,
1839  1384, 1385, 1386, 1387, 1389, 1390, 1392, 1393, 1394, 1395,
1840  1397, 1398, 1399, 1394, 1400, 1401, 1403, 1404, 1405, 1406,
1841  1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416,
1842  1417, 1418, 1395, 1419, 1420, 1422, 1423, 1425, 1426, 1427,
1843  1428, 1429, 1430, 1431, 1432, 1433, 1434, 1436, 1438, 1439,
1844  1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1451,
1845 
1846  1452, 1453, 1454, 1455, 1456, 1457, 1459, 1460, 1462, 1463,
1847  1464, 1465, 1467, 1468, 1467, 1469, 1470, 1471, 1472, 1473,
1848  1467, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1482, 1484,
1849  1485, 1487, 1489, 1490, 1491, 1493, 1494, 1495, 1496, 1497,
1850  1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
1851  1508, 1509, 1510, 1500, 1511, 1512, 1513, 1485, 1514, 1515,
1852  1516, 1517, 1518, 1518, 1519, 1520, 1521, 1522, 1523, 1524,
1853  1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534,
1854  1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544,
1855  1545, 1546, 1547, 1548, 1549, 1551, 1552, 1553, 1554, 1555,
1856 
1857  1556, 1557, 1558, 1560, 1561, 1562, 1563, 1564, 1566, 1567,
1858  1570, 1571, 1572, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
1859  1582, 1583, 1519, 1584, 1585, 1587, 1589, 1590, 1591, 1592,
1860  1593, 1594, 1595, 1596, 1598, 1564, 1599, 1600, 1602, 1603,
1861  1605, 1606, 1607, 1609, 1610, 1611, 1612, 1613, 1615, 1616,
1862  1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626,
1863  1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636,
1864  1637, 1638, 1640, 1641, 1643, 1644, 1645, 1647, 1648, 1649,
1865  1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659,
1866  1660, 1661, 1662, 1664, 1665, 1666, 1668, 1669, 1670, 1672,
1867 
1868  1673, 1674, 1675, 1676, 1678, 1679, 1680, 1681, 1682, 1683,
1869  1684, 1685, 1686, 1688, 1689, 1690, 1691, 1692, 1694, 1695,
1870  1696, 1699, 1701, 1702, 1703, 1706, 1708, 1709, 1710, 1711,
1871  1712, 1713, 1714, 1715, 1716, 1717, 1718, 1720, 1721, 1722,
1872  1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1733, 1734,
1873  1735, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745,
1874  1747, 1748, 1749, 1750, 1751, 1753, 1754, 1756, 1757, 1758,
1875  1759, 1760, 1761, 1762, 1763, 1765, 1766, 1767, 1768, 1769,
1876  1770, 1771, 1772, 1773, 1774, 1777, 1778, 1779, 1780, 1781,
1877  1782, 1783, 1784, 1785, 1788, 1789, 1790, 1791, 1792, 1793,
1878 
1879  1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803,
1880  1804, 1805, 1806, 1807, 1808, 1809, 1811, 1812, 1813, 1814,
1881  1815, 1816, 1817, 1818, 1820, 1824, 1826, 1827, 1828, 1829,
1882  1830, 1831, 1832, 1834, 1835, 1836, 1837, 1839, 1840, 1841,
1883  1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1852,
1884  1853, 1854, 1855, 1857, 1858, 1861, 1863, 1864, 1865, 1866,
1885  1868, 1869, 1870, 1871, 1872, 1873, 1874, 1876, 1877, 1878,
1886  1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888,
1887  1889, 1891, 1892, 1893, 1895, 1896, 1897, 1898, 1899, 1900,
1888  1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910,
1889 
1890  1911, 1912, 1913, 1914, 1916, 1917, 1919, 1920, 1921, 1923,
1891  1924, 1925, 1926, 1930, 1933, 1934, 1935, 1936, 1938, 1939,
1892  1940, 1941, 1942, 1943, 1944, 1946, 1947, 1949, 1951, 1953,
1893  1954, 1955, 1956, 1958, 1959, 1958, 1960, 1962, 1963, 1965,
1894  1966, 1967, 1968, 1969, 1970, 1971, 1972, 1974, 1975, 1976,
1895  1977, 1978, 1980, 1983, 1984, 1985, 1986, 1990, 1990, 1990,
1896  1991, 1991, 1991, 1992, 1993, 1992, 1994, 1994, 1994, 1995,
1897  1995, 1995, 1996, 719, 1996, 1997, 1997, 1997, 718, 717,
1898  716, 715, 714, 713, 712, 710, 709, 707, 706, 705,
1899  704, 703, 702, 701, 700, 696, 695, 693, 692, 691,
1900 
1901  690, 689, 688, 687, 686, 685, 683, 682, 681, 679,
1902  678, 677, 676, 675, 674, 673, 672, 671, 670, 669,
1903  668, 667, 666, 664, 663, 662, 661, 660, 659, 658,
1904  657, 656, 654, 653, 652, 651, 650, 649, 647, 646,
1905  645, 644, 643, 642, 641, 640, 638, 637, 636, 635,
1906  634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
1907  623, 622, 621, 620, 619, 618, 617, 616, 615, 614,
1908  613, 612, 611, 609, 608, 607, 606, 605, 604, 603,
1909  602, 601, 600, 599, 598, 596, 595, 594, 593, 592,
1910  591, 590, 589, 588, 587, 586, 585, 584, 583, 582,
1911 
1912  581, 580, 578, 577, 569, 568, 567, 566, 565, 564,
1913  562, 561, 559, 557, 556, 555, 554, 553, 552, 551,
1914  550, 549, 548, 547, 546, 544, 543, 542, 541, 540,
1915  539, 538, 537, 536, 535, 534, 533, 532, 531, 530,
1916  529, 528, 527, 526, 524, 522, 521, 520, 519, 518,
1917  517, 516, 515, 514, 513, 512, 511, 510, 509, 508,
1918  506, 505, 504, 503, 502, 501, 500, 498, 497, 496,
1919  495, 494, 493, 492, 491, 490, 489, 488, 487, 486,
1920  485, 484, 482, 481, 480, 479, 477, 476, 475, 474,
1921  473, 471, 470, 468, 467, 464, 463, 462, 461, 460,
1922 
1923  459, 458, 457, 455, 454, 453, 452, 451, 450, 449,
1924  448, 443, 441, 440, 438, 437, 436, 433, 431, 430,
1925  428, 427, 426, 424, 423, 422, 421, 420, 419, 418,
1926  417, 416, 415, 414, 413, 412, 411, 410, 409, 407,
1927  406, 405, 403, 402, 401, 400, 398, 397, 396, 395,
1928  393, 392, 391, 390, 389, 388, 387, 386, 385, 384,
1929  383, 382, 380, 378, 377, 376, 375, 374, 373, 372,
1930  370, 369, 368, 367, 366, 365, 364, 363, 362, 361,
1931  360, 358, 357, 356, 355, 354, 353, 352, 351, 350,
1932  349, 348, 347, 345, 344, 343, 342, 341, 338, 337,
1933 
1934  336, 335, 334, 333, 332, 331, 330, 329, 328, 327,
1935  326, 325, 321, 319, 316, 314, 311, 304, 302, 301,
1936  300, 299, 298, 296, 295, 294, 292, 291, 290, 289,
1937  288, 286, 285, 284, 283, 282, 281, 280, 279, 277,
1938  276, 275, 274, 273, 272, 271, 270, 269, 268, 267,
1939  266, 265, 264, 263, 261, 260, 259, 258, 257, 256,
1940  255, 254, 253, 252, 251, 249, 248, 247, 246, 245,
1941  244, 243, 241, 239, 238, 237, 236, 235, 234, 233,
1942  232, 231, 230, 229, 228, 227, 226, 225, 224, 223,
1943  222, 221, 220, 219, 216, 215, 214, 213, 212, 211,
1944 
1945  210, 209, 208, 206, 202, 200, 198, 194, 192, 190,
1946  182, 181, 180, 178, 177, 176, 174, 173, 172, 170,
1947  169, 168, 164, 161, 159, 158, 157, 155, 153, 152,
1948  151, 150, 149, 148, 146, 145, 144, 142, 141, 140,
1949  139, 138, 136, 135, 133, 131, 130, 129, 128, 126,
1950  125, 124, 123, 121, 120, 118, 117, 116, 112, 104,
1951  102, 97, 96, 77, 72, 66, 58, 49, 47, 43,
1952  41, 39, 38, 24, 14, 11, 1989, 1989, 1989, 1989,
1953  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1954  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1955 
1956  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1957  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1958  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1959  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
1960  1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989
1961  } ;
1962 
1963 static yy_state_type yy_last_accepting_state;
1964 static char *yy_last_accepting_cpos;
1965 
1966 extern int yy_flex_debug;
1968 
1969 static const flex_int16_t yy_rule_linenum[212] =
1970  { 0,
1971  146, 148, 150, 155, 156, 161, 162, 163, 175, 178,
1972  183, 190, 199, 208, 217, 226, 235, 244, 254, 263,
1973  272, 281, 290, 299, 308, 317, 326, 335, 344, 353,
1974  362, 374, 383, 392, 401, 410, 421, 432, 443, 454,
1975  465, 476, 487, 498, 509, 520, 531, 542, 551, 560,
1976  569, 580, 591, 602, 613, 624, 633, 645, 657, 669,
1977  680, 691, 700, 709, 718, 727, 738, 749, 760, 771,
1978  782, 793, 804, 815, 825, 836, 845, 855, 869, 885,
1979  894, 903, 912, 921, 943, 965, 974, 984, 993, 1004,
1980  1013, 1022, 1031, 1040, 1049, 1060, 1071, 1082, 1092, 1101,
1981 
1982  1112, 1123, 1134, 1145, 1157, 1166, 1175, 1184, 1193, 1202,
1983  1211, 1220, 1229, 1238, 1248, 1259, 1271, 1280, 1289, 1299,
1984  1309, 1319, 1329, 1339, 1349, 1358, 1368, 1377, 1386, 1395,
1985  1404, 1414, 1424, 1433, 1443, 1452, 1461, 1470, 1479, 1488,
1986  1497, 1506, 1515, 1524, 1533, 1542, 1551, 1560, 1569, 1578,
1987  1587, 1596, 1605, 1614, 1623, 1632, 1641, 1650, 1659, 1668,
1988  1677, 1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758,
1989  1770, 1782, 1792, 1802, 1812, 1822, 1832, 1842, 1852, 1862,
1990  1872, 1881, 1890, 1899, 1908, 1919, 1930, 1943, 1956, 1969,
1991  1978, 1987, 1996, 2097, 2113, 2162, 2170, 2185, 2186, 2187,
1992 
1993  2188, 2189, 2190, 2192, 2210, 2223, 2228, 2232, 2234, 2236,
1994  2238
1995  } ;
1996 
1997 /* The intent behind this definition is that it'll catch
1998  * any uses of REJECT which flex missed.
1999  */
2000 #define REJECT reject_used_but_not_detected
2001 #define yymore() yymore_used_but_not_detected
2002 #define YY_MORE_ADJ 0
2003 #define YY_RESTORE_YY_MORE_OFFSET
2004 char *yytext;
2005 #line 1 "dhcp4_lexer.ll"
2006 /* Copyright (C) 2016-2021 Internet Systems Consortium, Inc. ("ISC")
2007 
2008  This Source Code Form is subject to the terms of the Mozilla Public
2009  License, v. 2.0. If a copy of the MPL was not distributed with this
2010  file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2011 #line 8 "dhcp4_lexer.ll"
2012 
2013 /* Generated files do not make clang static analyser so happy */
2014 #ifndef __clang_analyzer__
2015 
2016 #include <cctype>
2017 #include <cerrno>
2018 #include <climits>
2019 #include <cstdlib>
2020 #include <string>
2021 #include <dhcp4/parser_context.h>
2022 #include <asiolink/io_address.h>
2023 #include <boost/lexical_cast.hpp>
2024 #include <exceptions/exceptions.h>
2025 
2026 /* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */
2027 
2028 /* Work around an incompatibility in flex (at least versions
2029  2.5.31 through 2.5.33): it generates code that does
2030  not conform to C89. See Debian bug 333231
2031  <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
2032 # undef yywrap
2033 # define yywrap() 1
2034 
2035 namespace {
2036 
2037 bool start_token_flag = false;
2038 
2039 isc::dhcp::Parser4Context::ParserType start_token_value;
2040 unsigned int comment_start_line = 0;
2041 
2042 using namespace isc::dhcp;
2043 
2044 };
2045 
2046 /* To avoid the call to exit... oops! */
2047 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
2048 #line 2048 "dhcp4_lexer.cc"
2049 /* noyywrap disables automatic rewinding for the next file to parse. Since we
2050  always parse only a single string, there's no need to do any wraps. And
2051  using yywrap requires linking with -lfl, which provides the default yywrap
2052  implementation that always returns 1 anyway. */
2053 /* nounput simplifies the lexer, by removing support for putting a character
2054  back into the input stream. We never use such capability anyway. */
2055 /* batch means that we'll never use the generated lexer interactively. */
2056 /* avoid to get static global variables to remain with C++. */
2057 /* in last resort %option reentrant */
2058 /* Enables debug mode. To see the debug messages, one needs to also set
2059  yy_flex_debug to 1, then the debug messages will be printed on stderr. */
2060 /* I have no idea what this option does, except it was specified in the bison
2061  examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
2062  be on the safe side and keep it. */
2063 #define YY_NO_INPUT 1
2064 
2065 /* These are not token expressions yet, just convenience expressions that
2066  can be used during actual token definitions. Note some can match
2067  incorrect inputs (e.g., IP addresses) which must be checked. */
2068 /* for errors */
2069 #line 95 "dhcp4_lexer.ll"
2070 /* This code run each time a pattern is matched. It updates the location
2071  by moving it ahead by yyleng bytes. yyleng specifies the length of the
2072  currently matched token. */
2073 #define YY_USER_ACTION driver.loc_.columns(yyleng);
2074 #line 2074 "dhcp4_lexer.cc"
2075 #line 2075 "dhcp4_lexer.cc"
2076 
2077 #define INITIAL 0
2078 #define COMMENT 1
2079 #define DIR_ENTER 2
2080 #define DIR_INCLUDE 3
2081 #define DIR_EXIT 4
2082 
2083 #ifndef YY_NO_UNISTD_H
2084 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2085  * down here because we want the user's section 1 to have been scanned first.
2086  * The user has a chance to override it with an option.
2087  */
2088 /* %if-c-only */
2089 #include <unistd.h>
2090 /* %endif */
2091 /* %if-c++-only */
2092 /* %endif */
2093 #endif
2094 
2095 #ifndef YY_EXTRA_TYPE
2096 #define YY_EXTRA_TYPE void *
2097 #endif
2098 
2099 /* %if-c-only Reentrant structure and macros (non-C++). */
2100 /* %if-reentrant */
2101 /* %if-c-only */
2102 
2103 static int yy_init_globals ( void );
2104 
2105 /* %endif */
2106 /* %if-reentrant */
2107 /* %endif */
2108 /* %endif End reentrant structures and macros. */
2109 
2110 /* Accessor methods to globals.
2111  These are made visible to non-reentrant scanners for convenience. */
2112 
2113 int yylex_destroy ( void );
2114 
2115 int yyget_debug ( void );
2116 
2117 void yyset_debug ( int debug_flag );
2118 
2119 YY_EXTRA_TYPE yyget_extra ( void );
2120 
2121 void yyset_extra ( YY_EXTRA_TYPE user_defined );
2122 
2123 FILE *yyget_in ( void );
2124 
2125 void yyset_in ( FILE * _in_str );
2126 
2127 FILE *yyget_out ( void );
2128 
2129 void yyset_out ( FILE * _out_str );
2130 
2131  int yyget_leng ( void );
2132 
2133 char *yyget_text ( void );
2134 
2135 int yyget_lineno ( void );
2136 
2137 void yyset_lineno ( int _line_number );
2138 
2139 /* %if-bison-bridge */
2140 /* %endif */
2141 
2142 /* Macros after this point can all be overridden by user definitions in
2143  * section 1.
2144  */
2145 
2146 #ifndef YY_SKIP_YYWRAP
2147 #ifdef __cplusplus
2148 extern "C" int yywrap ( void );
2149 #else
2150 extern int yywrap ( void );
2151 #endif
2152 #endif
2153 
2154 /* %not-for-header */
2155 #ifndef YY_NO_UNPUT
2156 
2157 #endif
2158 /* %ok-for-header */
2159 
2160 /* %endif */
2161 
2162 #ifndef yytext_ptr
2163 static void yy_flex_strncpy ( char *, const char *, int );
2164 #endif
2165 
2166 #ifdef YY_NEED_STRLEN
2167 static int yy_flex_strlen ( const char * );
2168 #endif
2169 
2170 #ifndef YY_NO_INPUT
2171 /* %if-c-only Standard (non-C++) definition */
2172 /* %not-for-header */
2173 #ifdef __cplusplus
2174 static int yyinput ( void );
2175 #else
2176 static int input ( void );
2177 #endif
2178 /* %ok-for-header */
2179 
2180 /* %endif */
2181 #endif
2182 
2183 /* %if-c-only */
2184 
2185 /* %endif */
2186 
2187 /* Amount of stuff to slurp up with each read. */
2188 #ifndef YY_READ_BUF_SIZE
2189 #ifdef __ia64__
2190 /* On IA-64, the buffer size is 16k, not 8k */
2191 #define YY_READ_BUF_SIZE 16384
2192 #else
2193 #define YY_READ_BUF_SIZE 8192
2194 #endif /* __ia64__ */
2195 #endif
2196 
2197 /* Copy whatever the last rule matched to the standard output. */
2198 #ifndef ECHO
2199 /* %if-c-only Standard (non-C++) definition */
2200 /* This used to be an fputs(), but since the string might contain NUL's,
2201  * we now use fwrite().
2202  */
2203 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
2204 /* %endif */
2205 /* %if-c++-only C++ definition */
2206 /* %endif */
2207 #endif
2208 
2209 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2210  * is returned in "result".
2211  */
2212 #ifndef YY_INPUT
2213 #define YY_INPUT(buf,result,max_size) \
2214 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
2215  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2216  { \
2217  int c = '*'; \
2218  int n; \
2219  for ( n = 0; n < max_size && \
2220  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2221  buf[n] = (char) c; \
2222  if ( c == '\n' ) \
2223  buf[n++] = (char) c; \
2224  if ( c == EOF && ferror( yyin ) ) \
2225  YY_FATAL_ERROR( "input in flex scanner failed" ); \
2226  result = n; \
2227  } \
2228  else \
2229  { \
2230  errno=0; \
2231  while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
2232  { \
2233  if( errno != EINTR) \
2234  { \
2235  YY_FATAL_ERROR( "input in flex scanner failed" ); \
2236  break; \
2237  } \
2238  errno=0; \
2239  clearerr(yyin); \
2240  } \
2241  }\
2242 \
2243 /* %if-c++-only C++ definition \ */\
2244 /* %endif */
2245 
2246 #endif
2247 
2248 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2249  * we don't want an extra ';' after the "return" because that will cause
2250  * some compilers to complain about unreachable statements.
2251  */
2252 #ifndef yyterminate
2253 #define yyterminate() return YY_NULL
2254 #endif
2255 
2256 /* Number of entries by which start-condition stack grows. */
2257 #ifndef YY_START_STACK_INCR
2258 #define YY_START_STACK_INCR 25
2259 #endif
2260 
2261 /* Report a fatal error. */
2262 #ifndef YY_FATAL_ERROR
2263 /* %if-c-only */
2264 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2265 /* %endif */
2266 /* %if-c++-only */
2267 /* %endif */
2268 #endif
2269 
2270 /* %if-tables-serialization structures and prototypes */
2271 /* %not-for-header */
2272 /* %ok-for-header */
2273 
2274 /* %not-for-header */
2275 /* %tables-yydmap generated elements */
2276 /* %endif */
2277 /* end tables serialization structures and prototypes */
2278 
2279 /* %ok-for-header */
2280 
2281 /* Default declaration of generated scanner - a define so the user can
2282  * easily add parameters.
2283  */
2284 #ifndef YY_DECL
2285 #define YY_DECL_IS_OURS 1
2286 /* %if-c-only Standard (non-C++) definition */
2287 
2288 extern int yylex (void);
2289 
2290 #define YY_DECL int yylex (void)
2291 /* %endif */
2292 /* %if-c++-only C++ definition */
2293 /* %endif */
2294 #endif /* !YY_DECL */
2295 
2296 /* Code executed at the beginning of each rule, after yytext and yyleng
2297  * have been set up.
2298  */
2299 #ifndef YY_USER_ACTION
2300 #define YY_USER_ACTION
2301 #endif
2302 
2303 /* Code executed at the end of each rule. */
2304 #ifndef YY_BREAK
2305 #define YY_BREAK /*LINTED*/break;
2306 #endif
2307 
2308 /* %% [6.0] YY_RULE_SETUP definition goes here */
2309 #define YY_RULE_SETUP \
2310  YY_USER_ACTION
2311 
2312 /* %not-for-header */
2315 YY_DECL
2317  yy_state_type yy_current_state;
2318  char *yy_cp, *yy_bp;
2319  int yy_act;
2320 
2321  if ( !(yy_init) )
2322  {
2323  (yy_init) = 1;
2324 
2325 #ifdef YY_USER_INIT
2326  YY_USER_INIT;
2327 #endif
2328 
2329  if ( ! (yy_start) )
2330  (yy_start) = 1; /* first start state */
2331 
2332  if ( ! yyin )
2333 /* %if-c-only */
2334  yyin = stdin;
2335 /* %endif */
2336 /* %if-c++-only */
2337 /* %endif */
2338 
2339  if ( ! yyout )
2340 /* %if-c-only */
2341  yyout = stdout;
2342 /* %endif */
2343 /* %if-c++-only */
2344 /* %endif */
2345 
2346  if ( ! YY_CURRENT_BUFFER ) {
2350  }
2351 
2353  }
2354 
2355  {
2356 /* %% [7.0] user's declarations go here */
2357 #line 101 "dhcp4_lexer.ll"
2358 
2359 
2360 
2361 #line 105 "dhcp4_lexer.ll"
2362  /* This part of the code is copied over to the verbatim to the top
2363  of the generated yylex function. Explanation:
2364  http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
2365 
2366  /* Code run each time yylex is called. */
2367  driver.loc_.step();
2368 
2369  if (start_token_flag) {
2370  start_token_flag = false;
2371  switch (start_token_value) {
2372  case Parser4Context::PARSER_JSON:
2373  default:
2374  return isc::dhcp::Dhcp4Parser::make_TOPLEVEL_JSON(driver.loc_);
2375  case Parser4Context::PARSER_DHCP4:
2376  return isc::dhcp::Dhcp4Parser::make_TOPLEVEL_DHCP4(driver.loc_);
2377  case Parser4Context::SUBPARSER_DHCP4:
2378  return isc::dhcp::Dhcp4Parser::make_SUB_DHCP4(driver.loc_);
2379  case Parser4Context::PARSER_INTERFACES:
2381  case Parser4Context::PARSER_SUBNET4:
2382  return isc::dhcp::Dhcp4Parser::make_SUB_SUBNET4(driver.loc_);
2383  case Parser4Context::PARSER_POOL4:
2384  return isc::dhcp::Dhcp4Parser::make_SUB_POOL4(driver.loc_);
2385  case Parser4Context::PARSER_HOST_RESERVATION:
2387  case Parser4Context::PARSER_OPTION_DEFS:
2389  case Parser4Context::PARSER_OPTION_DEF:
2390  return isc::dhcp::Dhcp4Parser::make_SUB_OPTION_DEF(driver.loc_);
2391  case Parser4Context::PARSER_OPTION_DATA:
2393  case Parser4Context::PARSER_HOOKS_LIBRARY:
2395  case Parser4Context::PARSER_DHCP_DDNS:
2396  return isc::dhcp::Dhcp4Parser::make_SUB_DHCP_DDNS(driver.loc_);
2397  case Parser4Context::PARSER_CONFIG_CONTROL:
2399  }
2400  }
2401 
2402 
2403 #line 2403 "dhcp4_lexer.cc"
2404 
2405  while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
2406  {
2407 /* %% [8.0] yymore()-related code goes here */
2408  yy_cp = (yy_c_buf_p);
2409 
2410  /* Support of yytext. */
2411  *yy_cp = (yy_hold_char);
2412 
2413  /* yy_bp points to the position in yy_ch_buf of the start of
2414  * the current run.
2415  */
2416  yy_bp = yy_cp;
2417 
2418 /* %% [9.0] code to set up and find next match goes here */
2419  yy_current_state = (yy_start);
2420 yy_match:
2421  do
2422  {
2423  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2424  if ( yy_accept[yy_current_state] )
2425  {
2426  (yy_last_accepting_state) = yy_current_state;
2427  (yy_last_accepting_cpos) = yy_cp;
2428  }
2429  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2430  {
2431  yy_current_state = (int) yy_def[yy_current_state];
2432  if ( yy_current_state >= 1990 )
2433  yy_c = yy_meta[yy_c];
2434  }
2435  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2436  ++yy_cp;
2437  }
2438  while ( yy_current_state != 1989 );
2439  yy_cp = (yy_last_accepting_cpos);
2440  yy_current_state = (yy_last_accepting_state);
2441 
2442 yy_find_action:
2443 /* %% [10.0] code to find the action number goes here */
2444  yy_act = yy_accept[yy_current_state];
2445 
2447 
2448 /* %% [11.0] code for yylineno update goes here */
2449 
2450 do_action: /* This label is used only to access EOF actions. */
2451 
2452 /* %% [12.0] debug code goes here */
2453  if ( yy_flex_debug )
2454  {
2455  if ( yy_act == 0 )
2456  fprintf( stderr, "--scanner backing up\n" );
2457  else if ( yy_act < 212 )
2458  fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
2459  (long)yy_rule_linenum[yy_act], yytext );
2460  else if ( yy_act == 212 )
2461  fprintf( stderr, "--accepting default rule (\"%s\")\n",
2462  yytext );
2463  else if ( yy_act == 213 )
2464  fprintf( stderr, "--(end of buffer or a NUL)\n" );
2465  else
2466  fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
2467  }
2468 
2469  switch ( yy_act )
2470  { /* beginning of action switch */
2471 /* %% [13.0] actions go here */
2472  case 0: /* must back up */
2473  /* undo the effects of YY_DO_BEFORE_ACTION */
2474  *yy_cp = (yy_hold_char);
2475  yy_cp = (yy_last_accepting_cpos);
2476  yy_current_state = (yy_last_accepting_state);
2477  goto yy_find_action;
2478 
2479 case 1:
2481 #line 146 "dhcp4_lexer.ll"
2482 ;
2483  YY_BREAK
2484 case 2:
2486 #line 148 "dhcp4_lexer.ll"
2487 ;
2488  YY_BREAK
2489 case 3:
2491 #line 150 "dhcp4_lexer.ll"
2492 {
2493  BEGIN(COMMENT);
2494  comment_start_line = driver.loc_.end.line;;
2495 }
2496  YY_BREAK
2497 case 4:
2499 #line 155 "dhcp4_lexer.ll"
2500 BEGIN(INITIAL);
2501  YY_BREAK
2502 case 5:
2504 #line 156 "dhcp4_lexer.ll"
2505 ;
2506  YY_BREAK
2507 case YY_STATE_EOF(COMMENT):
2508 #line 157 "dhcp4_lexer.ll"
2509 {
2510  isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
2511 }
2512  YY_BREAK
2513 case 6:
2515 #line 161 "dhcp4_lexer.ll"
2516 BEGIN(DIR_ENTER);
2517  YY_BREAK
2518 case 7:
2520 #line 162 "dhcp4_lexer.ll"
2522  YY_BREAK
2523 case 8:
2525 #line 163 "dhcp4_lexer.ll"
2526 {
2527  /* Include directive. */
2528 
2529  /* Extract the filename. */
2530  std::string tmp(yytext+1);
2531  tmp.resize(tmp.size() - 1);
2532 
2533  driver.includeFile(tmp);
2534 }
2535  YY_BREAK
2536 case YY_STATE_EOF(DIR_ENTER):
2538 case YY_STATE_EOF(DIR_EXIT):
2539 #line 172 "dhcp4_lexer.ll"
2540 {
2541  isc_throw(Dhcp4ParseError, "Directive not closed.");
2542 }
2543  YY_BREAK
2544 case 9:
2546 #line 175 "dhcp4_lexer.ll"
2547 BEGIN(INITIAL);
2548  YY_BREAK
2549 case 10:
2551 #line 178 "dhcp4_lexer.ll"
2552 {
2553  /* Ok, we found a with space. Let's ignore it and update loc variable. */
2554  driver.loc_.step();
2555 }
2556  YY_BREAK
2557 case 11:
2558 /* rule 11 can match eol */
2560 #line 183 "dhcp4_lexer.ll"
2561 {
2562  /* Newline found. Let's update the location and continue. */
2563  driver.loc_.lines(yyleng);
2564  driver.loc_.step();
2565 }
2566  YY_BREAK
2567 case 12:
2569 #line 190 "dhcp4_lexer.ll"
2570 {
2571  switch(driver.ctx_) {
2573  return isc::dhcp::Dhcp4Parser::make_DHCP4(driver.loc_);
2574  default:
2575  return isc::dhcp::Dhcp4Parser::make_STRING("Dhcp4", driver.loc_);
2576  }
2577 }
2578  YY_BREAK
2579 case 13:
2581 #line 199 "dhcp4_lexer.ll"
2582 {
2583  switch(driver.ctx_) {
2586  default:
2587  return isc::dhcp::Dhcp4Parser::make_STRING("interfaces-config", driver.loc_);
2588  }
2589 }
2590  YY_BREAK
2591 case 14:
2593 #line 208 "dhcp4_lexer.ll"
2594 {
2595  switch(driver.ctx_) {
2597  return isc::dhcp::Dhcp4Parser::make_SANITY_CHECKS(driver.loc_);
2598  default:
2599  return isc::dhcp::Dhcp4Parser::make_STRING("sanity-checks", driver.loc_);
2600  }
2601 }
2602  YY_BREAK
2603 case 15:
2605 #line 217 "dhcp4_lexer.ll"
2606 {
2607  switch(driver.ctx_) {
2609  return isc::dhcp::Dhcp4Parser::make_LEASE_CHECKS(driver.loc_);
2610  default:
2611  return isc::dhcp::Dhcp4Parser::make_STRING("lease-checks", driver.loc_);
2612  }
2613 }
2614  YY_BREAK
2615 case 16:
2617 #line 226 "dhcp4_lexer.ll"
2618 {
2619  switch(driver.ctx_) {
2622  default:
2623  return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-socket-type", driver.loc_);
2624  }
2625 }
2626  YY_BREAK
2627 case 17:
2629 #line 235 "dhcp4_lexer.ll"
2630 {
2631  switch(driver.ctx_) {
2633  return isc::dhcp::Dhcp4Parser::make_RAW(driver.loc_);
2634  default:
2635  return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_);
2636  }
2637 }
2638  YY_BREAK
2639 case 18:
2641 #line 244 "dhcp4_lexer.ll"
2642 {
2643  switch(driver.ctx_) {
2646  return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
2647  default:
2648  return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_);
2649  }
2650 }
2651  YY_BREAK
2652 case 19:
2654 #line 254 "dhcp4_lexer.ll"
2655 {
2656  switch(driver.ctx_) {
2657  case Parser4Context::INTERFACES_CONFIG:
2659  default:
2660  return isc::dhcp::Dhcp4Parser::make_STRING("outbound-interface", driver.loc_);
2661  }
2662 }
2663  YY_BREAK
2664 case 20:
2666 #line 263 "dhcp4_lexer.ll"
2667 {
2668  switch(driver.ctx_) {
2669  case Parser4Context::OUTBOUND_INTERFACE:
2670  return Dhcp4Parser::make_SAME_AS_INBOUND(driver.loc_);
2671  default:
2672  return Dhcp4Parser::make_STRING("same-as-inbound", driver.loc_);
2673  }
2674 }
2675  YY_BREAK
2676 case 21:
2678 #line 272 "dhcp4_lexer.ll"
2679 {
2680  switch(driver.ctx_) {
2681  case Parser4Context::OUTBOUND_INTERFACE:
2682  return Dhcp4Parser::make_USE_ROUTING(driver.loc_);
2683  default:
2684  return Dhcp4Parser::make_STRING("use-routing", driver.loc_);
2685  }
2686 }
2687  YY_BREAK
2688 case 22:
2690 #line 281 "dhcp4_lexer.ll"
2691 {
2692  switch(driver.ctx_) {
2694  return isc::dhcp::Dhcp4Parser::make_INTERFACES(driver.loc_);
2695  default:
2696  return isc::dhcp::Dhcp4Parser::make_STRING("interfaces", driver.loc_);
2697  }
2698 }
2699  YY_BREAK
2700 case 23:
2702 #line 290 "dhcp4_lexer.ll"
2703 {
2704  switch(driver.ctx_) {
2706  return isc::dhcp::Dhcp4Parser::make_RE_DETECT(driver.loc_);
2707  default:
2708  return isc::dhcp::Dhcp4Parser::make_STRING("re-detect", driver.loc_);
2709  }
2710 }
2711  YY_BREAK
2712 case 24:
2714 #line 299 "dhcp4_lexer.ll"
2715 {
2716  switch(driver.ctx_) {
2718  return isc::dhcp::Dhcp4Parser::make_LEASE_DATABASE(driver.loc_);
2719  default:
2720  return isc::dhcp::Dhcp4Parser::make_STRING("lease-database", driver.loc_);
2721  }
2722 }
2723  YY_BREAK
2724 case 25:
2726 #line 308 "dhcp4_lexer.ll"
2727 {
2728  switch(driver.ctx_) {
2730  return isc::dhcp::Dhcp4Parser::make_HOSTS_DATABASE(driver.loc_);
2731  default:
2732  return isc::dhcp::Dhcp4Parser::make_STRING("hosts-database", driver.loc_);
2733  }
2734 }
2735  YY_BREAK
2736 case 26:
2738 #line 317 "dhcp4_lexer.ll"
2739 {
2740  switch(driver.ctx_) {
2743  default:
2744  return isc::dhcp::Dhcp4Parser::make_STRING("hosts-databases", driver.loc_);
2745  }
2746 }
2747  YY_BREAK
2748 case 27:
2750 #line 326 "dhcp4_lexer.ll"
2751 {
2752  switch(driver.ctx_) {
2754  return isc::dhcp::Dhcp4Parser::make_CONFIG_CONTROL(driver.loc_);
2755  default:
2756  return isc::dhcp::Dhcp4Parser::make_STRING("config-control", driver.loc_);
2757  }
2758 }
2759  YY_BREAK
2760 case 28:
2762 #line 335 "dhcp4_lexer.ll"
2763 {
2764  switch(driver.ctx_) {
2767  default:
2768  return isc::dhcp::Dhcp4Parser::make_STRING("config-databases", driver.loc_);
2769  }
2770 }
2771  YY_BREAK
2772 case 29:
2774 #line 344 "dhcp4_lexer.ll"
2775 {
2776  switch(driver.ctx_) {
2779  default:
2780  return isc::dhcp::Dhcp4Parser::make_STRING("config-fetch-wait-time", driver.loc_);
2781  }
2782 }
2783  YY_BREAK
2784 case 30:
2786 #line 353 "dhcp4_lexer.ll"
2787 {
2788  switch(driver.ctx_) {
2790  return isc::dhcp::Dhcp4Parser::make_READONLY(driver.loc_);
2791  default:
2792  return isc::dhcp::Dhcp4Parser::make_STRING("readonly", driver.loc_);
2793  }
2794 }
2795  YY_BREAK
2796 case 31:
2798 #line 362 "dhcp4_lexer.ll"
2799 {
2800  switch(driver.ctx_) {
2805  return isc::dhcp::Dhcp4Parser::make_TYPE(driver.loc_);
2806  default:
2807  return isc::dhcp::Dhcp4Parser::make_STRING("type", driver.loc_);
2808  }
2809 }
2810  YY_BREAK
2811 case 32:
2813 #line 374 "dhcp4_lexer.ll"
2814 {
2815  switch(driver.ctx_) {
2817  return isc::dhcp::Dhcp4Parser::make_MEMFILE(driver.loc_);
2818  default:
2819  return isc::dhcp::Dhcp4Parser::make_STRING("memfile", driver.loc_);
2820  }
2821 }
2822  YY_BREAK
2823 case 33:
2825 #line 383 "dhcp4_lexer.ll"
2826 {
2827  switch(driver.ctx_) {
2829  return isc::dhcp::Dhcp4Parser::make_MYSQL(driver.loc_);
2830  default:
2831  return isc::dhcp::Dhcp4Parser::make_STRING("mysql", driver.loc_);
2832  }
2833 }
2834  YY_BREAK
2835 case 34:
2837 #line 392 "dhcp4_lexer.ll"
2838 {
2839  switch(driver.ctx_) {
2841  return isc::dhcp::Dhcp4Parser::make_POSTGRESQL(driver.loc_);
2842  default:
2843  return isc::dhcp::Dhcp4Parser::make_STRING("postgresql", driver.loc_);
2844  }
2845 }
2846  YY_BREAK
2847 case 35:
2849 #line 401 "dhcp4_lexer.ll"
2850 {
2851  switch(driver.ctx_) {
2853  return isc::dhcp::Dhcp4Parser::make_CQL(driver.loc_);
2854  default:
2855  return isc::dhcp::Dhcp4Parser::make_STRING("cql", driver.loc_);
2856  }
2857 }
2858  YY_BREAK
2859 case 36:
2861 #line 410 "dhcp4_lexer.ll"
2862 {
2863  switch(driver.ctx_) {
2867  return isc::dhcp::Dhcp4Parser::make_USER(driver.loc_);
2868  default:
2869  return isc::dhcp::Dhcp4Parser::make_STRING("user", driver.loc_);
2870  }
2871 }
2872  YY_BREAK
2873 case 37:
2875 #line 421 "dhcp4_lexer.ll"
2876 {
2877  switch(driver.ctx_) {
2881  return isc::dhcp::Dhcp4Parser::make_PASSWORD(driver.loc_);
2882  default:
2883  return isc::dhcp::Dhcp4Parser::make_STRING("password", driver.loc_);
2884  }
2885 }
2886  YY_BREAK
2887 case 38:
2889 #line 432 "dhcp4_lexer.ll"
2890 {
2891  switch(driver.ctx_) {
2895  return isc::dhcp::Dhcp4Parser::make_HOST(driver.loc_);
2896  default:
2897  return isc::dhcp::Dhcp4Parser::make_STRING("host", driver.loc_);
2898  }
2899 }
2900  YY_BREAK
2901 case 39:
2903 #line 443 "dhcp4_lexer.ll"
2904 {
2905  switch(driver.ctx_) {
2909  return isc::dhcp::Dhcp4Parser::make_PORT(driver.loc_);
2910  default:
2911  return isc::dhcp::Dhcp4Parser::make_STRING("port", driver.loc_);
2912  }
2913 }
2914  YY_BREAK
2915 case 40:
2917 #line 454 "dhcp4_lexer.ll"
2918 {
2919  switch(driver.ctx_) {
2923  return isc::dhcp::Dhcp4Parser::make_PERSIST(driver.loc_);
2924  default:
2925  return isc::dhcp::Dhcp4Parser::make_STRING("persist", driver.loc_);
2926  }
2927 }
2928  YY_BREAK
2929 case 41:
2931 #line 465 "dhcp4_lexer.ll"
2932 {
2933  switch(driver.ctx_) {
2937  return isc::dhcp::Dhcp4Parser::make_LFC_INTERVAL(driver.loc_);
2938  default:
2939  return isc::dhcp::Dhcp4Parser::make_STRING("lfc-interval", driver.loc_);
2940  }
2941 }
2942  YY_BREAK
2943 case 42:
2945 #line 476 "dhcp4_lexer.ll"
2946 {
2947  switch(driver.ctx_) {
2952  default:
2953  return isc::dhcp::Dhcp4Parser::make_STRING("connect-timeout", driver.loc_);
2954  }
2955 }
2956  YY_BREAK
2957 case 43:
2959 #line 487 "dhcp4_lexer.ll"
2960 {
2961  switch(driver.ctx_) {
2965  return isc::dhcp::Dhcp4Parser::make_KEYSPACE(driver.loc_);
2966  default:
2967  return isc::dhcp::Dhcp4Parser::make_STRING("keyspace", driver.loc_);
2968  }
2969 }
2970  YY_BREAK
2971 case 44:
2973 #line 498 "dhcp4_lexer.ll"
2974 {
2975  switch(driver.ctx_) {
2979  return isc::dhcp::Dhcp4Parser::make_CONSISTENCY(driver.loc_);
2980  default:
2981  return isc::dhcp::Dhcp4Parser::make_STRING("consistency", driver.loc_);
2982  }
2983 }
2984  YY_BREAK
2985 case 45:
2987 #line 509 "dhcp4_lexer.ll"
2988 {
2989  switch(driver.ctx_) {
2994  default:
2995  return isc::dhcp::Dhcp4Parser::make_STRING("serial-consistency", driver.loc_);
2996  }
2997 }
2998  YY_BREAK
2999 case 46:
3001 #line 520 "dhcp4_lexer.ll"
3002 {
3003  switch(driver.ctx_) {
3008  default:
3009  return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
3010  }
3011 }
3012  YY_BREAK
3013 case 47:
3015 #line 531 "dhcp4_lexer.ll"
3016 {
3017  switch(driver.ctx_) {
3021  return isc::dhcp::Dhcp4Parser::make_ON_FAIL(driver.loc_);
3022  default:
3023  return isc::dhcp::Dhcp4Parser::make_STRING("on-fail", driver.loc_);
3024  }
3025 }
3026  YY_BREAK
3027 case 48:
3029 #line 542 "dhcp4_lexer.ll"
3030 {
3031  switch(driver.ctx_) {
3034  default:
3035  return isc::dhcp::Dhcp4Parser::make_STRING("stop-retry-exit", driver.loc_);
3036  }
3037 }
3038  YY_BREAK
3039 case 49:
3041 #line 551 "dhcp4_lexer.ll"
3042 {
3043  switch(driver.ctx_) {
3046  default:
3047  return isc::dhcp::Dhcp4Parser::make_STRING("serve-retry-exit", driver.loc_);
3048  }
3049 }
3050  YY_BREAK
3051 case 50:
3053 #line 560 "dhcp4_lexer.ll"
3054 {
3055  switch(driver.ctx_) {
3058  default:
3059  return isc::dhcp::Dhcp4Parser::make_STRING("serve-retry-continue", driver.loc_);
3060  }
3061 }
3062  YY_BREAK
3063 case 51:
3065 #line 569 "dhcp4_lexer.ll"
3066 {
3067  switch(driver.ctx_) {
3072  default:
3073  return isc::dhcp::Dhcp4Parser::make_STRING("request-timeout", driver.loc_);
3074  }
3075 }
3076  YY_BREAK
3077 case 52:
3079 #line 580 "dhcp4_lexer.ll"
3080 {
3081  switch(driver.ctx_) {
3085  return isc::dhcp::Dhcp4Parser::make_TCP_KEEPALIVE(driver.loc_);
3086  default:
3087  return isc::dhcp::Dhcp4Parser::make_STRING("tcp-keepalive", driver.loc_);
3088  }
3089 }
3090  YY_BREAK
3091 case 53:
3093 #line 591 "dhcp4_lexer.ll"
3094 {
3095  switch(driver.ctx_) {
3099  return isc::dhcp::Dhcp4Parser::make_TCP_NODELAY(driver.loc_);
3100  default:
3101  return isc::dhcp::Dhcp4Parser::make_STRING("tcp-nodelay", driver.loc_);
3102  }
3103 }
3104  YY_BREAK
3105 case 54:
3107 #line 602 "dhcp4_lexer.ll"
3108 {
3109  switch(driver.ctx_) {
3113  return isc::dhcp::Dhcp4Parser::make_CONTACT_POINTS(driver.loc_);
3114  default:
3115  return isc::dhcp::Dhcp4Parser::make_STRING("contact-points", driver.loc_);
3116  }
3117 }
3118  YY_BREAK
3119 case 55:
3121 #line 613 "dhcp4_lexer.ll"
3122 {
3123  switch(driver.ctx_) {
3128  default:
3129  return isc::dhcp::Dhcp4Parser::make_STRING("max-reconnect-tries", driver.loc_);
3130  }
3131 }
3132  YY_BREAK
3133 case 56:
3135 #line 624 "dhcp4_lexer.ll"
3136 {
3137  switch(driver.ctx_) {
3139  return isc::dhcp::Dhcp4Parser::make_MAX_ROW_ERRORS(driver.loc_);
3140  default:
3141  return isc::dhcp::Dhcp4Parser::make_STRING("max_row_errors", driver.loc_);
3142  }
3143 }
3144  YY_BREAK
3145 case 57:
3147 #line 633 "dhcp4_lexer.ll"
3148 {
3149  switch(driver.ctx_) {
3154  return isc::dhcp::Dhcp4Parser::make_VALID_LIFETIME(driver.loc_);
3155  default:
3156  return isc::dhcp::Dhcp4Parser::make_STRING("valid-lifetime", driver.loc_);
3157  }
3158 }
3159  YY_BREAK
3160 case 58:
3162 #line 645 "dhcp4_lexer.ll"
3163 {
3164  switch(driver.ctx_) {
3170  default:
3171  return isc::dhcp::Dhcp4Parser::make_STRING("min-valid-lifetime", driver.loc_);
3172  }
3173 }
3174  YY_BREAK
3175 case 59:
3177 #line 657 "dhcp4_lexer.ll"
3178 {
3179  switch(driver.ctx_) {
3185  default:
3186  return isc::dhcp::Dhcp4Parser::make_STRING("max-valid-lifetime", driver.loc_);
3187  }
3188 }
3189  YY_BREAK
3190 case 60:
3192 #line 669 "dhcp4_lexer.ll"
3193 {
3194  switch(driver.ctx_) {
3198  return isc::dhcp::Dhcp4Parser::make_RENEW_TIMER(driver.loc_);
3199  default:
3200  return isc::dhcp::Dhcp4Parser::make_STRING("renew-timer", driver.loc_);
3201  }
3202 }
3203  YY_BREAK
3204 case 61:
3206 #line 680 "dhcp4_lexer.ll"
3207 {
3208  switch(driver.ctx_) {
3212  return isc::dhcp::Dhcp4Parser::make_REBIND_TIMER(driver.loc_);
3213  default:
3214  return isc::dhcp::Dhcp4Parser::make_STRING("rebind-timer", driver.loc_);
3215  }
3216 }
3217  YY_BREAK
3218 case 62:
3220 #line 691 "dhcp4_lexer.ll"
3221 {
3222  switch(driver.ctx_) {
3225  default:
3226  return isc::dhcp::Dhcp4Parser::make_STRING("decline-probation-period", driver.loc_);
3227  }
3228 }
3229  YY_BREAK
3230 case 63:
3232 #line 700 "dhcp4_lexer.ll"
3233 {
3234  switch(driver.ctx_) {
3236  return isc::dhcp::Dhcp4Parser::make_SERVER_TAG(driver.loc_);
3237  default:
3238  return isc::dhcp::Dhcp4Parser::make_STRING("server-tag", driver.loc_);
3239  }
3240 }
3241  YY_BREAK
3242 case 64:
3244 #line 709 "dhcp4_lexer.ll"
3245 {
3246  switch(driver.ctx_) {
3249  default:
3250  return isc::dhcp::Dhcp4Parser::make_STRING("statistic-default-sample-count", driver.loc_);
3251  }
3252 }
3253  YY_BREAK
3254 case 65:
3256 #line 718 "dhcp4_lexer.ll"
3257 {
3258  switch(driver.ctx_) {
3261  default:
3262  return isc::dhcp::Dhcp4Parser::make_STRING("statistic-default-sample-age", driver.loc_);
3263  }
3264 }
3265  YY_BREAK
3266 case 66:
3268 #line 727 "dhcp4_lexer.ll"
3269 {
3270  switch(driver.ctx_) {
3275  default:
3276  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-send-updates", driver.loc_);
3277  }
3278 }
3279  YY_BREAK
3280 case 67:
3282 #line 738 "dhcp4_lexer.ll"
3283 {
3284  switch(driver.ctx_) {
3289  default:
3290  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-override-no-update", driver.loc_);
3291  }
3292 }
3293  YY_BREAK
3294 case 68:
3296 #line 749 "dhcp4_lexer.ll"
3297 {
3298  switch(driver.ctx_) {
3303  default:
3304  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-override-client-update", driver.loc_);
3305  }
3306 }
3307  YY_BREAK
3308 case 69:
3310 #line 760 "dhcp4_lexer.ll"
3311 {
3312  switch(driver.ctx_) {
3317  default:
3318  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-replace-client-name", driver.loc_);
3319  }
3320 }
3321  YY_BREAK
3322 case 70:
3324 #line 771 "dhcp4_lexer.ll"
3325 {
3326  switch(driver.ctx_) {
3331  default:
3332  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-generated-prefix", driver.loc_);
3333  }
3334 }
3335  YY_BREAK
3336 case 71:
3338 #line 782 "dhcp4_lexer.ll"
3339 {
3340  switch(driver.ctx_) {
3345  default:
3346  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-qualifying-suffix", driver.loc_);
3347  }
3348 }
3349  YY_BREAK
3350 case 72:
3352 #line 793 "dhcp4_lexer.ll"
3353 {
3354  switch(driver.ctx_) {
3359  default:
3360  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-update-on-renew", driver.loc_);
3361  }
3362 }
3363  YY_BREAK
3364 case 73:
3366 #line 804 "dhcp4_lexer.ll"
3367 {
3368  switch(driver.ctx_) {
3373  default:
3374  return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
3375  }
3376 }
3377  YY_BREAK
3378 case 74:
3380 #line 815 "dhcp4_lexer.ll"
3381 {
3382  switch(driver.ctx_) {
3385  return isc::dhcp::Dhcp4Parser::make_SUBNET4(driver.loc_);
3386  default:
3387  return isc::dhcp::Dhcp4Parser::make_STRING("subnet4", driver.loc_);
3388  }
3389 }
3390  YY_BREAK
3391 case 75:
3393 #line 825 "dhcp4_lexer.ll"
3394 {
3395  switch(driver.ctx_) {
3400  default:
3401  return isc::dhcp::Dhcp4Parser::make_STRING("store-extended-info", driver.loc_);
3402  }
3403 }
3404  YY_BREAK
3405 case 76:
3407 #line 836 "dhcp4_lexer.ll"
3408 {
3409  switch (driver.ctx_) {
3412  default:
3413  return isc::dhcp::Dhcp4Parser::make_STRING("shared-networks", driver.loc_);
3414  }
3415 }
3416  YY_BREAK
3417 case 77:
3419 #line 845 "dhcp4_lexer.ll"
3420 {
3421  switch(driver.ctx_) {
3424  return isc::dhcp::Dhcp4Parser::make_OPTION_DEF(driver.loc_);
3425  default:
3426  return isc::dhcp::Dhcp4Parser::make_STRING("option-def", driver.loc_);
3427  }
3428 }
3429  YY_BREAK
3430 case 78:
3432 #line 855 "dhcp4_lexer.ll"
3433 {
3434  switch(driver.ctx_) {
3441  return isc::dhcp::Dhcp4Parser::make_OPTION_DATA(driver.loc_);
3442  default:
3443  return isc::dhcp::Dhcp4Parser::make_STRING("option-data", driver.loc_);
3444  }
3445 }
3446  YY_BREAK
3447 case 79:
3449 #line 869 "dhcp4_lexer.ll"
3450 {
3451  switch(driver.ctx_) {
3460  return isc::dhcp::Dhcp4Parser::make_NAME(driver.loc_);
3461  default:
3462  return isc::dhcp::Dhcp4Parser::make_STRING("name", driver.loc_);
3463  }
3464 }
3465  YY_BREAK
3466 case 80:
3468 #line 885 "dhcp4_lexer.ll"
3469 {
3470  switch(driver.ctx_) {
3472  return isc::dhcp::Dhcp4Parser::make_DATA(driver.loc_);
3473  default:
3474  return isc::dhcp::Dhcp4Parser::make_STRING("data", driver.loc_);
3475  }
3476 }
3477  YY_BREAK
3478 case 81:
3480 #line 894 "dhcp4_lexer.ll"
3481 {
3482  switch(driver.ctx_) {
3484  return isc::dhcp::Dhcp4Parser::make_ALWAYS_SEND(driver.loc_);
3485  default:
3486  return isc::dhcp::Dhcp4Parser::make_STRING("always-send", driver.loc_);
3487  }
3488 }
3489  YY_BREAK
3490 case 82:
3492 #line 903 "dhcp4_lexer.ll"
3493 {
3494  switch(driver.ctx_) {
3496  return isc::dhcp::Dhcp4Parser::make_POOLS(driver.loc_);
3497  default:
3498  return isc::dhcp::Dhcp4Parser::make_STRING("pools", driver.loc_);
3499  }
3500 }
3501  YY_BREAK
3502 case 83:
3504 #line 912 "dhcp4_lexer.ll"
3505 {
3506  switch(driver.ctx_) {
3508  return isc::dhcp::Dhcp4Parser::make_POOL(driver.loc_);
3509  default:
3510  return isc::dhcp::Dhcp4Parser::make_STRING("pool", driver.loc_);
3511  }
3512 }
3513  YY_BREAK
3514 case 84:
3516 #line 921 "dhcp4_lexer.ll"
3517 {
3518  switch(driver.ctx_) {
3533  return isc::dhcp::Dhcp4Parser::make_USER_CONTEXT(driver.loc_);
3534  default:
3535  return isc::dhcp::Dhcp4Parser::make_STRING("user-context", driver.loc_);
3536  }
3537 }
3538  YY_BREAK
3539 case 85:
3541 #line 943 "dhcp4_lexer.ll"
3542 {
3543  switch(driver.ctx_) {
3558  return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_);
3559  default:
3560  return isc::dhcp::Dhcp4Parser::make_STRING("comment", driver.loc_);
3561  }
3562 }
3563  YY_BREAK
3564 case 86:
3566 #line 965 "dhcp4_lexer.ll"
3567 {
3568  switch(driver.ctx_) {
3570  return isc::dhcp::Dhcp4Parser::make_SUBNET(driver.loc_);
3571  default:
3572  return isc::dhcp::Dhcp4Parser::make_STRING("subnet", driver.loc_);
3573  }
3574 }
3575  YY_BREAK
3576 case 87:
3578 #line 974 "dhcp4_lexer.ll"
3579 {
3580  switch(driver.ctx_) {
3583  return isc::dhcp::Dhcp4Parser::make_INTERFACE(driver.loc_);
3584  default:
3585  return isc::dhcp::Dhcp4Parser::make_STRING("interface", driver.loc_);
3586  }
3587 }
3588  YY_BREAK
3589 case 88:
3591 #line 984 "dhcp4_lexer.ll"
3592 {
3593  switch(driver.ctx_) {
3595  return isc::dhcp::Dhcp4Parser::make_ID(driver.loc_);
3596  default:
3597  return isc::dhcp::Dhcp4Parser::make_STRING("id", driver.loc_);
3598  }
3599 }
3600  YY_BREAK
3601 case 89:
3603 #line 993 "dhcp4_lexer.ll"
3604 {
3605  switch(driver.ctx_) {
3610  default:
3611  return isc::dhcp::Dhcp4Parser::make_STRING("reservation-mode", driver.loc_);
3612  }
3613 }
3614  YY_BREAK
3615 case 90:
3617 #line 1004 "dhcp4_lexer.ll"
3618 {
3619  switch(driver.ctx_) {
3621  return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
3622  default:
3623  return isc::dhcp::Dhcp4Parser::make_STRING("disabled", driver.loc_);
3624  }
3625 }
3626  YY_BREAK
3627 case 91:
3629 #line 1013 "dhcp4_lexer.ll"
3630 {
3631  switch(driver.ctx_) {
3633  return isc::dhcp::Dhcp4Parser::make_DISABLED(driver.loc_);
3634  default:
3635  return isc::dhcp::Dhcp4Parser::make_STRING("off", driver.loc_);
3636  }
3637 }
3638  YY_BREAK
3639 case 92:
3641 #line 1022 "dhcp4_lexer.ll"
3642 {
3643  switch(driver.ctx_) {
3645  return isc::dhcp::Dhcp4Parser::make_OUT_OF_POOL(driver.loc_);
3646  default:
3647  return isc::dhcp::Dhcp4Parser::make_STRING("out-of-pool", driver.loc_);
3648  }
3649 }
3650  YY_BREAK
3651 case 93:
3653 #line 1031 "dhcp4_lexer.ll"
3654 {
3655  switch(driver.ctx_) {
3657  return isc::dhcp::Dhcp4Parser::make_GLOBAL(driver.loc_);
3658  default:
3659  return isc::dhcp::Dhcp4Parser::make_STRING("global", driver.loc_);
3660  }
3661 }
3662  YY_BREAK
3663 case 94:
3665 #line 1040 "dhcp4_lexer.ll"
3666 {
3667  switch(driver.ctx_) {
3669  return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_);
3670  default:
3671  return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_);
3672  }
3673 }
3674  YY_BREAK
3675 case 95:
3677 #line 1049 "dhcp4_lexer.ll"
3678 {
3679  switch(driver.ctx_) {
3684  default:
3685  return isc::dhcp::Dhcp4Parser::make_STRING("reservations-global", driver.loc_);
3686  }
3687 }
3688  YY_BREAK
3689 case 96:
3691 #line 1060 "dhcp4_lexer.ll"
3692 {
3693  switch(driver.ctx_) {
3698  default:
3699  return isc::dhcp::Dhcp4Parser::make_STRING("reservations-in-subnet", driver.loc_);
3700  }
3701 }
3702  YY_BREAK
3703 case 97:
3705 #line 1071 "dhcp4_lexer.ll"
3706 {
3707  switch(driver.ctx_) {
3712  default:
3713  return isc::dhcp::Dhcp4Parser::make_STRING("reservations-out-of-pool", driver.loc_);
3714  }
3715 }
3716  YY_BREAK
3717 case 98:
3719 #line 1082 "dhcp4_lexer.ll"
3720 {
3721  switch(driver.ctx_) {
3724  return isc::dhcp::Dhcp4Parser::make_CODE(driver.loc_);
3725  default:
3726  return isc::dhcp::Dhcp4Parser::make_STRING("code", driver.loc_);
3727  }
3728 }
3729  YY_BREAK
3730 case 99:
3732 #line 1092 "dhcp4_lexer.ll"
3733 {
3734  switch(driver.ctx_) {
3737  default:
3738  return isc::dhcp::Dhcp4Parser::make_STRING("host-reservation-identifiers", driver.loc_);
3739  }
3740 }
3741  YY_BREAK
3742 case 100:
3744 #line 1101 "dhcp4_lexer.ll"
3745 {
3746  switch(driver.ctx_) {
3751  default:
3752  return isc::dhcp::Dhcp4Parser::make_STRING("calculate-tee-times", driver.loc_);
3753  }
3754 }
3755  YY_BREAK
3756 case 101:
3758 #line 1112 "dhcp4_lexer.ll"
3759 {
3760  switch(driver.ctx_) {
3764  return isc::dhcp::Dhcp4Parser::make_T1_PERCENT(driver.loc_);
3765  default:
3766  return isc::dhcp::Dhcp4Parser::make_STRING("t1-percent", driver.loc_);
3767  }
3768 }
3769  YY_BREAK
3770 case 102:
3772 #line 1123 "dhcp4_lexer.ll"
3773 {
3774  switch(driver.ctx_) {
3778  return isc::dhcp::Dhcp4Parser::make_T2_PERCENT(driver.loc_);
3779  default:
3780  return isc::dhcp::Dhcp4Parser::make_STRING("t2-percent", driver.loc_);
3781  }
3782 }
3783  YY_BREAK
3784 case 103:
3786 #line 1134 "dhcp4_lexer.ll"
3787 {
3788  switch(driver.ctx_) {
3793  default:
3794  return isc::dhcp::Dhcp4Parser::make_STRING("cache-threshold", driver.loc_);
3795  }
3796 }
3797  YY_BREAK
3798 case 104:
3800 #line 1145 "dhcp4_lexer.ll"
3801 {
3802  switch(driver.ctx_) {
3806  return isc::dhcp::Dhcp4Parser::make_CACHE_MAX_AGE(driver.loc_);
3807  default:
3808  return isc::dhcp::Dhcp4Parser::make_STRING("cache-max-age", driver.loc_);
3809  }
3810 }
3811  YY_BREAK
3812 case 105:
3814 #line 1157 "dhcp4_lexer.ll"
3815 {
3816  switch(driver.ctx_) {
3818  return isc::dhcp::Dhcp4Parser::make_LOGGERS(driver.loc_);
3819  default:
3820  return isc::dhcp::Dhcp4Parser::make_STRING("loggers", driver.loc_);
3821  }
3822 }
3823  YY_BREAK
3824 case 106:
3826 #line 1166 "dhcp4_lexer.ll"
3827 {
3828  switch(driver.ctx_) {
3830  return isc::dhcp::Dhcp4Parser::make_OUTPUT_OPTIONS(driver.loc_);
3831  default:
3832  return isc::dhcp::Dhcp4Parser::make_STRING("output_options", driver.loc_);
3833  }
3834 }
3835  YY_BREAK
3836 case 107:
3838 #line 1175 "dhcp4_lexer.ll"
3839 {
3840  switch(driver.ctx_) {
3842  return isc::dhcp::Dhcp4Parser::make_OUTPUT(driver.loc_);
3843  default:
3844  return isc::dhcp::Dhcp4Parser::make_STRING("output", driver.loc_);
3845  }
3846 }
3847  YY_BREAK
3848 case 108:
3850 #line 1184 "dhcp4_lexer.ll"
3851 {
3852  switch(driver.ctx_) {
3854  return isc::dhcp::Dhcp4Parser::make_DEBUGLEVEL(driver.loc_);
3855  default:
3856  return isc::dhcp::Dhcp4Parser::make_STRING("debuglevel", driver.loc_);
3857  }
3858 }
3859  YY_BREAK
3860 case 109:
3862 #line 1193 "dhcp4_lexer.ll"
3863 {
3864  switch(driver.ctx_) {
3866  return isc::dhcp::Dhcp4Parser::make_FLUSH(driver.loc_);
3867  default:
3868  return isc::dhcp::Dhcp4Parser::make_STRING("flush", driver.loc_);
3869  }
3870 }
3871  YY_BREAK
3872 case 110:
3874 #line 1202 "dhcp4_lexer.ll"
3875 {
3876  switch(driver.ctx_) {
3878  return isc::dhcp::Dhcp4Parser::make_MAXSIZE(driver.loc_);
3879  default:
3880  return isc::dhcp::Dhcp4Parser::make_STRING("maxsize", driver.loc_);
3881  }
3882 }
3883  YY_BREAK
3884 case 111:
3886 #line 1211 "dhcp4_lexer.ll"
3887 {
3888  switch(driver.ctx_) {
3890  return isc::dhcp::Dhcp4Parser::make_MAXVER(driver.loc_);
3891  default:
3892  return isc::dhcp::Dhcp4Parser::make_STRING("maxver", driver.loc_);
3893  }
3894 }
3895  YY_BREAK
3896 case 112:
3898 #line 1220 "dhcp4_lexer.ll"
3899 {
3900  switch(driver.ctx_) {
3902  return isc::dhcp::Dhcp4Parser::make_PATTERN(driver.loc_);
3903  default:
3904  return isc::dhcp::Dhcp4Parser::make_STRING("pattern", driver.loc_);
3905  }
3906 }
3907  YY_BREAK
3908 case 113:
3910 #line 1229 "dhcp4_lexer.ll"
3911 {
3912  switch(driver.ctx_) {
3914  return isc::dhcp::Dhcp4Parser::make_SEVERITY(driver.loc_);
3915  default:
3916  return isc::dhcp::Dhcp4Parser::make_STRING("severity", driver.loc_);
3917  }
3918 }
3919  YY_BREAK
3920 case 114:
3922 #line 1238 "dhcp4_lexer.ll"
3923 {
3924  switch(driver.ctx_) {
3927  return isc::dhcp::Dhcp4Parser::make_CLIENT_CLASSES(driver.loc_);
3928  default:
3929  return isc::dhcp::Dhcp4Parser::make_STRING("client-classes", driver.loc_);
3930  }
3931 }
3932  YY_BREAK
3933 case 115:
3935 #line 1248 "dhcp4_lexer.ll"
3936 {
3937  switch(driver.ctx_) {
3942  default:
3943  return isc::dhcp::Dhcp4Parser::make_STRING("require-client-classes", driver.loc_);
3944  }
3945 }
3946  YY_BREAK
3947 case 116:
3949 #line 1259 "dhcp4_lexer.ll"
3950 {
3951  switch(driver.ctx_) {
3956  return isc::dhcp::Dhcp4Parser::make_CLIENT_CLASS(driver.loc_);
3957  default:
3958  return isc::dhcp::Dhcp4Parser::make_STRING("client-class", driver.loc_);
3959  }
3960 }
3961  YY_BREAK
3962 case 117:
3964 #line 1271 "dhcp4_lexer.ll"
3965 {
3966  switch(driver.ctx_) {
3968  return isc::dhcp::Dhcp4Parser::make_TEST(driver.loc_);
3969  default:
3970  return isc::dhcp::Dhcp4Parser::make_STRING("test", driver.loc_);
3971  }
3972 }
3973  YY_BREAK
3974 case 118:
3976 #line 1280 "dhcp4_lexer.ll"
3977 {
3978  switch(driver.ctx_) {
3981  default:
3982  return isc::dhcp::Dhcp4Parser::make_STRING("only-if-required", driver.loc_);
3983  }
3984 }
3985  YY_BREAK
3986 case 119:
3988 #line 1289 "dhcp4_lexer.ll"
3989 {
3990  switch(driver.ctx_) {
3993  return isc::dhcp::Dhcp4Parser::make_RESERVATIONS(driver.loc_);
3994  default:
3995  return isc::dhcp::Dhcp4Parser::make_STRING("reservations", driver.loc_);
3996  }
3997 }
3998  YY_BREAK
3999 case 120:
4001 #line 1299 "dhcp4_lexer.ll"
4002 {
4003  switch(driver.ctx_) {
4006  return isc::dhcp::Dhcp4Parser::make_DUID(driver.loc_);
4007  default:
4008  return isc::dhcp::Dhcp4Parser::make_STRING("duid", driver.loc_);
4009  }
4010 }
4011  YY_BREAK
4012 case 121:
4014 #line 1309 "dhcp4_lexer.ll"
4015 {
4016  switch(driver.ctx_) {
4019  return isc::dhcp::Dhcp4Parser::make_HW_ADDRESS(driver.loc_);
4020  default:
4021  return isc::dhcp::Dhcp4Parser::make_STRING("hw-address", driver.loc_);
4022  }
4023 }
4024  YY_BREAK
4025 case 122:
4027 #line 1319 "dhcp4_lexer.ll"
4028 {
4029  switch(driver.ctx_) {
4032  return isc::dhcp::Dhcp4Parser::make_CLIENT_ID(driver.loc_);
4033  default:
4034  return isc::dhcp::Dhcp4Parser::make_STRING("client-id", driver.loc_);
4035  }
4036 }
4037  YY_BREAK
4038 case 123:
4040 #line 1329 "dhcp4_lexer.ll"
4041 {
4042  switch(driver.ctx_) {
4045  return isc::dhcp::Dhcp4Parser::make_CIRCUIT_ID(driver.loc_);
4046  default:
4047  return isc::dhcp::Dhcp4Parser::make_STRING("circuit-id", driver.loc_);
4048  }
4049 }
4050  YY_BREAK
4051 case 124:
4053 #line 1339 "dhcp4_lexer.ll"
4054 {
4055  switch(driver.ctx_) {
4058  return isc::dhcp::Dhcp4Parser::make_FLEX_ID(driver.loc_);
4059  default:
4060  return isc::dhcp::Dhcp4Parser::make_STRING("flex-id", driver.loc_);
4061  }
4062 }
4063  YY_BREAK
4064 case 125:
4066 #line 1349 "dhcp4_lexer.ll"
4067 {
4068  switch(driver.ctx_) {
4070  return isc::dhcp::Dhcp4Parser::make_HOSTNAME(driver.loc_);
4071  default:
4072  return isc::dhcp::Dhcp4Parser::make_STRING("hostname", driver.loc_);
4073  }
4074 }
4075  YY_BREAK
4076 case 126:
4078 #line 1358 "dhcp4_lexer.ll"
4079 {
4080  switch(driver.ctx_) {
4083  return isc::dhcp::Dhcp4Parser::make_SPACE(driver.loc_);
4084  default:
4085  return isc::dhcp::Dhcp4Parser::make_STRING("space", driver.loc_);
4086  }
4087 }
4088  YY_BREAK
4089 case 127:
4091 #line 1368 "dhcp4_lexer.ll"
4092 {
4093  switch(driver.ctx_) {
4095  return isc::dhcp::Dhcp4Parser::make_CSV_FORMAT(driver.loc_);
4096  default:
4097  return isc::dhcp::Dhcp4Parser::make_STRING("csv-format", driver.loc_);
4098  }
4099 }
4100  YY_BREAK
4101 case 128:
4103 #line 1377 "dhcp4_lexer.ll"
4104 {
4105  switch(driver.ctx_) {
4107  return isc::dhcp::Dhcp4Parser::make_RECORD_TYPES(driver.loc_);
4108  default:
4109  return isc::dhcp::Dhcp4Parser::make_STRING("record-types", driver.loc_);
4110  }
4111 }
4112  YY_BREAK
4113 case 129:
4115 #line 1386 "dhcp4_lexer.ll"
4116 {
4117  switch(driver.ctx_) {
4119  return isc::dhcp::Dhcp4Parser::make_ENCAPSULATE(driver.loc_);
4120  default:
4121  return isc::dhcp::Dhcp4Parser::make_STRING("encapsulate", driver.loc_);
4122  }
4123 }
4124  YY_BREAK
4125 case 130:
4127 #line 1395 "dhcp4_lexer.ll"
4128 {
4129  switch(driver.ctx_) {
4131  return isc::dhcp::Dhcp4Parser::make_ARRAY(driver.loc_);
4132  default:
4133  return isc::dhcp::Dhcp4Parser::make_STRING("array", driver.loc_);
4134  }
4135 }
4136  YY_BREAK
4137 case 131:
4139 #line 1404 "dhcp4_lexer.ll"
4140 {
4141  switch(driver.ctx_) {
4144  return isc::dhcp::Dhcp4Parser::make_RELAY(driver.loc_);
4145  default:
4146  return isc::dhcp::Dhcp4Parser::make_STRING("relay", driver.loc_);
4147  }
4148 }
4149  YY_BREAK
4150 case 132:
4152 #line 1414 "dhcp4_lexer.ll"
4153 {
4154  switch(driver.ctx_) {
4157  return isc::dhcp::Dhcp4Parser::make_IP_ADDRESS(driver.loc_);
4158  default:
4159  return isc::dhcp::Dhcp4Parser::make_STRING("ip-address", driver.loc_);
4160  }
4161 }
4162  YY_BREAK
4163 case 133:
4165 #line 1424 "dhcp4_lexer.ll"
4166 {
4167  switch(driver.ctx_) {
4169  return isc::dhcp::Dhcp4Parser::make_IP_ADDRESSES(driver.loc_);
4170  default:
4171  return isc::dhcp::Dhcp4Parser::make_STRING("ip-addresses", driver.loc_);
4172  }
4173 }
4174  YY_BREAK
4175 case 134:
4177 #line 1433 "dhcp4_lexer.ll"
4178 {
4179  switch(driver.ctx_) {
4182  default:
4183  return isc::dhcp::Dhcp4Parser::make_STRING("hooks-libraries", driver.loc_);
4184  }
4185 }
4186  YY_BREAK
4187 case 135:
4189 #line 1443 "dhcp4_lexer.ll"
4190 {
4191  switch(driver.ctx_) {
4193  return isc::dhcp::Dhcp4Parser::make_PARAMETERS(driver.loc_);
4194  default:
4195  return isc::dhcp::Dhcp4Parser::make_STRING("parameters", driver.loc_);
4196  }
4197 }
4198  YY_BREAK
4199 case 136:
4201 #line 1452 "dhcp4_lexer.ll"
4202 {
4203  switch(driver.ctx_) {
4205  return isc::dhcp::Dhcp4Parser::make_LIBRARY(driver.loc_);
4206  default:
4207  return isc::dhcp::Dhcp4Parser::make_STRING("library", driver.loc_);
4208  }
4209 }
4210  YY_BREAK
4211 case 137:
4213 #line 1461 "dhcp4_lexer.ll"
4214 {
4215  switch(driver.ctx_) {
4218  default:
4219  return isc::dhcp::Dhcp4Parser::make_STRING("expired-leases-processing", driver.loc_);
4220  }
4221 }
4222  YY_BREAK
4223 case 138:
4225 #line 1470 "dhcp4_lexer.ll"
4226 {
4227  switch(driver.ctx_) {
4230  default:
4231  return isc::dhcp::Dhcp4Parser::make_STRING("reclaim-timer-wait-time", driver.loc_);
4232  }
4233 }
4234  YY_BREAK
4235 case 139:
4237 #line 1479 "dhcp4_lexer.ll"
4238 {
4239  switch(driver.ctx_) {
4242  default:
4243  return isc::dhcp::Dhcp4Parser::make_STRING("flush-reclaimed-timer-wait-time", driver.loc_);
4244  }
4245 }
4246  YY_BREAK
4247 case 140:
4249 #line 1488 "dhcp4_lexer.ll"
4250 {
4251  switch(driver.ctx_) {
4254  default:
4255  return isc::dhcp::Dhcp4Parser::make_STRING("hold-reclaimed-time", driver.loc_);
4256  }
4257 }
4258  YY_BREAK
4259 case 141:
4261 #line 1497 "dhcp4_lexer.ll"
4262 {
4263  switch(driver.ctx_) {
4266  default:
4267  return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-leases", driver.loc_);
4268  }
4269 }
4270  YY_BREAK
4271 case 142:
4273 #line 1506 "dhcp4_lexer.ll"
4274 {
4275  switch(driver.ctx_) {
4278  default:
4279  return isc::dhcp::Dhcp4Parser::make_STRING("max-reclaim-time", driver.loc_);
4280  }
4281 }
4282  YY_BREAK
4283 case 143:
4285 #line 1515 "dhcp4_lexer.ll"
4286 {
4287  switch(driver.ctx_) {
4290  default:
4291  return isc::dhcp::Dhcp4Parser::make_STRING("unwarned-reclaim-cycles", driver.loc_);
4292  }
4293 }
4294  YY_BREAK
4295 case 144:
4297 #line 1524 "dhcp4_lexer.ll"
4298 {
4299  switch(driver.ctx_) {
4301  return isc::dhcp::Dhcp4Parser::make_DHCP4O6_PORT(driver.loc_);
4302  default:
4303  return isc::dhcp::Dhcp4Parser::make_STRING("dhcp4o6-port", driver.loc_);
4304  }
4305 }
4306  YY_BREAK
4307 case 145:
4309 #line 1533 "dhcp4_lexer.ll"
4310 {
4311  switch(driver.ctx_) {
4314  default:
4315  return isc::dhcp::Dhcp4Parser::make_STRING("multi-threading", driver.loc_);
4316  }
4317 }
4318  YY_BREAK
4319 case 146:
4321 #line 1542 "dhcp4_lexer.ll"
4322 {
4323  switch(driver.ctx_) {
4326  default:
4327  return isc::dhcp::Dhcp4Parser::make_STRING("enable-multi-threading", driver.loc_);
4328  }
4329 }
4330  YY_BREAK
4331 case 147:
4333 #line 1551 "dhcp4_lexer.ll"
4334 {
4335  switch(driver.ctx_) {
4338  default:
4339  return isc::dhcp::Dhcp4Parser::make_STRING("thread-pool-size", driver.loc_);
4340  }
4341 }
4342  YY_BREAK
4343 case 148:
4345 #line 1560 "dhcp4_lexer.ll"
4346 {
4347  switch(driver.ctx_) {
4350  default:
4351  return isc::dhcp::Dhcp4Parser::make_STRING("packet-queue-size", driver.loc_);
4352  }
4353 }
4354  YY_BREAK
4355 case 149:
4357 #line 1569 "dhcp4_lexer.ll"
4358 {
4359  switch(driver.ctx_) {
4361  return isc::dhcp::Dhcp4Parser::make_CONTROL_SOCKET(driver.loc_);
4362  default:
4363  return isc::dhcp::Dhcp4Parser::make_STRING("control-socket", driver.loc_);
4364  }
4365 }
4366  YY_BREAK
4367 case 150:
4369 #line 1578 "dhcp4_lexer.ll"
4370 {
4371  switch(driver.ctx_) {
4373  return isc::dhcp::Dhcp4Parser::make_SOCKET_TYPE(driver.loc_);
4374  default:
4375  return isc::dhcp::Dhcp4Parser::make_STRING("socket-type", driver.loc_);
4376  }
4377 }
4378  YY_BREAK
4379 case 151:
4381 #line 1587 "dhcp4_lexer.ll"
4382 {
4383  switch(driver.ctx_) {
4385  return isc::dhcp::Dhcp4Parser::make_SOCKET_NAME(driver.loc_);
4386  default:
4387  return isc::dhcp::Dhcp4Parser::make_STRING("socket-name", driver.loc_);
4388  }
4389 }
4390  YY_BREAK
4391 case 152:
4393 #line 1596 "dhcp4_lexer.ll"
4394 {
4395  switch(driver.ctx_) {
4398  default:
4399  return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_);
4400  }
4401 }
4402  YY_BREAK
4403 case 153:
4405 #line 1605 "dhcp4_lexer.ll"
4406 {
4407  switch(driver.ctx_) {
4409  return isc::dhcp::Dhcp4Parser::make_ENABLE_QUEUE(driver.loc_);
4410  default:
4411  return isc::dhcp::Dhcp4Parser::make_STRING("enable-queue", driver.loc_);
4412  }
4413 }
4414  YY_BREAK
4415 case 154:
4417 #line 1614 "dhcp4_lexer.ll"
4418 {
4419  switch(driver.ctx_) {
4421  return isc::dhcp::Dhcp4Parser::make_QUEUE_TYPE(driver.loc_);
4422  default:
4423  return isc::dhcp::Dhcp4Parser::make_STRING("queue-type", driver.loc_);
4424  }
4425 }
4426  YY_BREAK
4427 case 155:
4429 #line 1623 "dhcp4_lexer.ll"
4430 {
4431  switch(driver.ctx_) {
4433  return isc::dhcp::Dhcp4Parser::make_CAPACITY(driver.loc_);
4434  default:
4435  return isc::dhcp::Dhcp4Parser::make_STRING("capacity", driver.loc_);
4436  }
4437 }
4438  YY_BREAK
4439 case 156:
4441 #line 1632 "dhcp4_lexer.ll"
4442 {
4443  switch(driver.ctx_) {
4445  return isc::dhcp::Dhcp4Parser::make_DHCP_DDNS(driver.loc_);
4446  default:
4447  return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-ddns", driver.loc_);
4448  }
4449 }
4450  YY_BREAK
4451 case 157:
4453 #line 1641 "dhcp4_lexer.ll"
4454 {
4455  switch(driver.ctx_) {
4457  return isc::dhcp::Dhcp4Parser::make_ENABLE_UPDATES(driver.loc_);
4458  default:
4459  return isc::dhcp::Dhcp4Parser::make_STRING("enable-updates", driver.loc_);
4460  }
4461 }
4462  YY_BREAK
4463 case 158:
4465 #line 1650 "dhcp4_lexer.ll"
4466 {
4467  switch(driver.ctx_) {
4470  default:
4471  return isc::dhcp::Dhcp4Parser::make_STRING("qualifying-suffix", driver.loc_);
4472  }
4473 }
4474  YY_BREAK
4475 case 159:
4477 #line 1659 "dhcp4_lexer.ll"
4478 {
4479  switch(driver.ctx_) {
4481  return isc::dhcp::Dhcp4Parser::make_SERVER_IP(driver.loc_);
4482  default:
4483  return isc::dhcp::Dhcp4Parser::make_STRING("server-ip", driver.loc_);
4484  }
4485 }
4486  YY_BREAK
4487 case 160:
4489 #line 1668 "dhcp4_lexer.ll"
4490 {
4491  switch(driver.ctx_) {
4493  return isc::dhcp::Dhcp4Parser::make_SERVER_PORT(driver.loc_);
4494  default:
4495  return isc::dhcp::Dhcp4Parser::make_STRING("server-port", driver.loc_);
4496  }
4497 }
4498  YY_BREAK
4499 case 161:
4501 #line 1677 "dhcp4_lexer.ll"
4502 {
4503  switch(driver.ctx_) {
4505  return isc::dhcp::Dhcp4Parser::make_SENDER_IP(driver.loc_);
4506  default:
4507  return isc::dhcp::Dhcp4Parser::make_STRING("sender-ip", driver.loc_);
4508  }
4509 }
4510  YY_BREAK
4511 case 162:
4513 #line 1686 "dhcp4_lexer.ll"
4514 {
4515  switch(driver.ctx_) {
4517  return isc::dhcp::Dhcp4Parser::make_SENDER_PORT(driver.loc_);
4518  default:
4519  return isc::dhcp::Dhcp4Parser::make_STRING("sender-port", driver.loc_);
4520  }
4521 }
4522  YY_BREAK
4523 case 163:
4525 #line 1695 "dhcp4_lexer.ll"
4526 {
4527  switch(driver.ctx_) {
4529  return isc::dhcp::Dhcp4Parser::make_MAX_QUEUE_SIZE(driver.loc_);
4530  default:
4531  return isc::dhcp::Dhcp4Parser::make_STRING("max-queue-size", driver.loc_);
4532  }
4533 }
4534  YY_BREAK
4535 case 164:
4537 #line 1704 "dhcp4_lexer.ll"
4538 {
4539  switch(driver.ctx_) {
4541  return isc::dhcp::Dhcp4Parser::make_NCR_PROTOCOL(driver.loc_);
4542  default:
4543  return isc::dhcp::Dhcp4Parser::make_STRING("ncr-protocol", driver.loc_);
4544  }
4545 }
4546  YY_BREAK
4547 case 165:
4549 #line 1713 "dhcp4_lexer.ll"
4550 {
4551  switch(driver.ctx_) {
4553  return isc::dhcp::Dhcp4Parser::make_NCR_FORMAT(driver.loc_);
4554  default:
4555  return isc::dhcp::Dhcp4Parser::make_STRING("ncr-format", driver.loc_);
4556  }
4557 }
4558  YY_BREAK
4559 case 166:
4561 #line 1722 "dhcp4_lexer.ll"
4562 {
4563  switch(driver.ctx_) {
4566  default:
4567  return isc::dhcp::Dhcp4Parser::make_STRING("override-no-update", driver.loc_);
4568  }
4569 }
4570  YY_BREAK
4571 case 167:
4573 #line 1731 "dhcp4_lexer.ll"
4574 {
4575  switch(driver.ctx_) {
4578  default:
4579  return isc::dhcp::Dhcp4Parser::make_STRING("override-client-update", driver.loc_);
4580  }
4581 }
4582  YY_BREAK
4583 case 168:
4585 #line 1740 "dhcp4_lexer.ll"
4586 {
4587  switch(driver.ctx_) {
4590  default:
4591  return isc::dhcp::Dhcp4Parser::make_STRING("replace-client-name", driver.loc_);
4592  }
4593 }
4594  YY_BREAK
4595 case 169:
4597 #line 1749 "dhcp4_lexer.ll"
4598 {
4599  switch(driver.ctx_) {
4602  default:
4603  return isc::dhcp::Dhcp4Parser::make_STRING("generated-prefix", driver.loc_);
4604  }
4605 }
4606  YY_BREAK
4607 case 170:
4609 #line 1758 "dhcp4_lexer.ll"
4610 {
4611  switch(driver.ctx_) {
4617  default:
4618  return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-set", driver.loc_);
4619  }
4620 }
4621  YY_BREAK
4622 case 171:
4624 #line 1770 "dhcp4_lexer.ll"
4625 {
4626  switch(driver.ctx_) {
4632  default:
4633  return isc::dhcp::Dhcp4Parser::make_STRING("hostname-char-replacement", driver.loc_);
4634  }
4635 }
4636  YY_BREAK
4637 case 172:
4639 #line 1782 "dhcp4_lexer.ll"
4640 {
4641  /* dhcp-ddns value keywords are case insensitive */
4642  if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
4643  return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
4644  }
4645  std::string tmp(yytext+1);
4646  tmp.resize(tmp.size() - 1);
4647  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4648 }
4649  YY_BREAK
4650 case 173:
4652 #line 1792 "dhcp4_lexer.ll"
4653 {
4654  /* dhcp-ddns value keywords are case insensitive */
4655  if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
4656  return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_);
4657  }
4658  std::string tmp(yytext+1);
4659  tmp.resize(tmp.size() - 1);
4660  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4661 }
4662  YY_BREAK
4663 case 174:
4665 #line 1802 "dhcp4_lexer.ll"
4666 {
4667  /* dhcp-ddns value keywords are case insensitive */
4668  if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
4669  return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
4670  }
4671  std::string tmp(yytext+1);
4672  tmp.resize(tmp.size() - 1);
4673  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4674 }
4675  YY_BREAK
4676 case 175:
4678 #line 1812 "dhcp4_lexer.ll"
4679 {
4680  /* dhcp-ddns value keywords are case insensitive */
4682  return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
4683  }
4684  std::string tmp(yytext+1);
4685  tmp.resize(tmp.size() - 1);
4686  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4687 }
4688  YY_BREAK
4689 case 176:
4691 #line 1822 "dhcp4_lexer.ll"
4692 {
4693  /* dhcp-ddns value keywords are case insensitive */
4695  return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
4696  }
4697  std::string tmp(yytext+1);
4698  tmp.resize(tmp.size() - 1);
4699  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4700 }
4701  YY_BREAK
4702 case 177:
4704 #line 1832 "dhcp4_lexer.ll"
4705 {
4706  /* dhcp-ddns value keywords are case insensitive */
4708  return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
4709  }
4710  std::string tmp(yytext+1);
4711  tmp.resize(tmp.size() - 1);
4712  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4713 }
4714  YY_BREAK
4715 case 178:
4717 #line 1842 "dhcp4_lexer.ll"
4718 {
4719  /* dhcp-ddns value keywords are case insensitive */
4721  return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
4722  }
4723  std::string tmp(yytext+1);
4724  tmp.resize(tmp.size() - 1);
4725  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4726 }
4727  YY_BREAK
4728 case 179:
4730 #line 1852 "dhcp4_lexer.ll"
4731 {
4732  /* dhcp-ddns value keywords are case insensitive */
4734  return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
4735  }
4736  std::string tmp(yytext+1);
4737  tmp.resize(tmp.size() - 1);
4738  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4739 }
4740  YY_BREAK
4741 case 180:
4743 #line 1862 "dhcp4_lexer.ll"
4744 {
4745  /* dhcp-ddns value keywords are case insensitive */
4748  }
4749  std::string tmp(yytext+1);
4750  tmp.resize(tmp.size() - 1);
4751  return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
4752 }
4753  YY_BREAK
4754 case 181:
4756 #line 1872 "dhcp4_lexer.ll"
4757 {
4758  switch(driver.ctx_) {
4761  default:
4762  return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface", driver.loc_);
4763  }
4764 }
4765  YY_BREAK
4766 case 182:
4768 #line 1881 "dhcp4_lexer.ll"
4769 {
4770  switch(driver.ctx_) {
4773  default:
4774  return isc::dhcp::Dhcp4Parser::make_STRING("4o6-interface-id", driver.loc_);
4775  }
4776 }
4777  YY_BREAK
4778 case 183:
4780 #line 1890 "dhcp4_lexer.ll"
4781 {
4782  switch(driver.ctx_) {
4785  default:
4786  return isc::dhcp::Dhcp4Parser::make_STRING("4o6-subnet", driver.loc_);
4787  }
4788 }
4789  YY_BREAK
4790 case 184:
4792 #line 1899 "dhcp4_lexer.ll"
4793 {
4794  switch(driver.ctx_) {
4796  return isc::dhcp::Dhcp4Parser::make_ECHO_CLIENT_ID(driver.loc_);
4797  default:
4798  return isc::dhcp::Dhcp4Parser::make_STRING("echo-client-id", driver.loc_);
4799  }
4800 }
4801  YY_BREAK
4802 case 185:
4804 #line 1908 "dhcp4_lexer.ll"
4805 {
4806  switch(driver.ctx_) {
4811  default:
4812  return isc::dhcp::Dhcp4Parser::make_STRING("match-client-id", driver.loc_);
4813  }
4814 }
4815  YY_BREAK
4816 case 186:
4818 #line 1919 "dhcp4_lexer.ll"
4819 {
4820  switch(driver.ctx_) {
4824  return isc::dhcp::Dhcp4Parser::make_AUTHORITATIVE(driver.loc_);
4825  default:
4826  return isc::dhcp::Dhcp4Parser::make_STRING("authoritative", driver.loc_);
4827  }
4828 }
4829  YY_BREAK
4830 case 187:
4832 #line 1930 "dhcp4_lexer.ll"
4833 {
4834  switch(driver.ctx_) {
4840  return isc::dhcp::Dhcp4Parser::make_NEXT_SERVER(driver.loc_);
4841  default:
4842  return isc::dhcp::Dhcp4Parser::make_STRING("next-server", driver.loc_);
4843  }
4844 }
4845  YY_BREAK
4846 case 188:
4848 #line 1943 "dhcp4_lexer.ll"
4849 {
4850  switch(driver.ctx_) {
4857  default:
4858  return isc::dhcp::Dhcp4Parser::make_STRING("server-hostname", driver.loc_);
4859  }
4860 }
4861  YY_BREAK
4862 case 189:
4864 #line 1956 "dhcp4_lexer.ll"
4865 {
4866  switch(driver.ctx_) {
4872  return isc::dhcp::Dhcp4Parser::make_BOOT_FILE_NAME(driver.loc_);
4873  default:
4874  return isc::dhcp::Dhcp4Parser::make_STRING("boot-file-name", driver.loc_);
4875  }
4876 }
4877  YY_BREAK
4878 case 190:
4880 #line 1969 "dhcp4_lexer.ll"
4881 {
4882  switch(driver.ctx_) {
4885  default:
4886  return isc::dhcp::Dhcp4Parser::make_STRING("ip-reservations-unique", driver.loc_);
4887  }
4888 }
4889  YY_BREAK
4890 case 191:
4892 #line 1978 "dhcp4_lexer.ll"
4893 {
4894  switch(driver.ctx_) {
4896  return isc::dhcp::Dhcp4Parser::make_COMPATIBILITY(driver.loc_);
4897  default:
4898  return isc::dhcp::Dhcp4Parser::make_STRING("compatibility", driver.loc_);
4899  }
4900 }
4901  YY_BREAK
4902 case 192:
4904 #line 1987 "dhcp4_lexer.ll"
4905 {
4906  switch(driver.ctx_) {
4909  default:
4910  return isc::dhcp::Dhcp4Parser::make_STRING("lenient-option-parsing", driver.loc_);
4911  }
4912 }
4913  YY_BREAK
4914 case 193:
4916 #line 1996 "dhcp4_lexer.ll"
4917 {
4918  /* A string has been matched. It contains the actual string and single quotes.
4919  We need to get those quotes out of the way and just use its content, e.g.
4920  for 'foo' we should get foo */
4921  std::string raw(yytext+1);
4922  size_t len = raw.size() - 1;
4923  raw.resize(len);
4924  std::string decoded;
4925  decoded.reserve(len);
4926  for (size_t pos = 0; pos < len; ++pos) {
4927  int b = 0;
4928  char c = raw[pos];
4929  switch (c) {
4930  case '"':
4931  /* impossible condition */
4932  driver.error(driver.loc_, "Bad quote in \"" + raw + "\"");
4933  break;
4934  case '\\':
4935  ++pos;
4936  if (pos >= len) {
4937  /* impossible condition */
4938  driver.error(driver.loc_, "Overflow escape in \"" + raw + "\"");
4939  }
4940  c = raw[pos];
4941  switch (c) {
4942  case '"':
4943  case '\\':
4944  case '/':
4945  decoded.push_back(c);
4946  break;
4947  case 'b':
4948  decoded.push_back('\b');
4949  break;
4950  case 'f':
4951  decoded.push_back('\f');
4952  break;
4953  case 'n':
4954  decoded.push_back('\n');
4955  break;
4956  case 'r':
4957  decoded.push_back('\r');
4958  break;
4959  case 't':
4960  decoded.push_back('\t');
4961  break;
4962  case 'u':
4963  /* support only \u0000 to \u00ff */
4964  ++pos;
4965  if (pos + 4 > len) {
4966  /* impossible condition */
4967  driver.error(driver.loc_,
4968  "Overflow unicode escape in \"" + raw + "\"");
4969  }
4970  if ((raw[pos] != '0') || (raw[pos + 1] != '0')) {
4971  driver.error(driver.loc_,
4972  "Unsupported unicode escape in \"" + raw + "\"",
4973  pos + 1);
4974  }
4975  pos += 2;
4976  c = raw[pos];
4977  if ((c >= '0') && (c <= '9')) {
4978  b = (c - '0') << 4;
4979  } else if ((c >= 'A') && (c <= 'F')) {
4980  b = (c - 'A' + 10) << 4;
4981  } else if ((c >= 'a') && (c <= 'f')) {
4982  b = (c - 'a' + 10) << 4;
4983  } else {
4984  /* impossible condition */
4985  driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
4986  }
4987  pos++;
4988  c = raw[pos];
4989  if ((c >= '0') && (c <= '9')) {
4990  b |= c - '0';
4991  } else if ((c >= 'A') && (c <= 'F')) {
4992  b |= c - 'A' + 10;
4993  } else if ((c >= 'a') && (c <= 'f')) {
4994  b |= c - 'a' + 10;
4995  } else {
4996  /* impossible condition */
4997  driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
4998  }
4999  decoded.push_back(static_cast<char>(b & 0xff));
5000  break;
5001  default:
5002  /* impossible condition */
5003  driver.error(driver.loc_, "Bad escape in \"" + raw + "\"");
5004  }
5005  break;
5006  default:
5007  if ((c >= 0) && (c < 0x20)) {
5008  /* impossible condition */
5009  driver.error(driver.loc_, "Invalid control in \"" + raw + "\"");
5010  }
5011  decoded.push_back(c);
5012  }
5013  }
5014 
5015  return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
5016 }
5017  YY_BREAK
5018 case 194:
5019 /* rule 194 can match eol */
5021 #line 2097 "dhcp4_lexer.ll"
5022 {
5023  /* Bad string with a forbidden control character inside */
5024  std::string raw(yytext+1);
5025  size_t len = raw.size() - 1;
5026  size_t pos = 0;
5027  for (; pos < len; ++pos) {
5028  char c = raw[pos];
5029  if ((c >= 0) && (c < 0x20)) {
5030  break;
5031  }
5032  }
5033  driver.error(driver.loc_,
5034  "Invalid control in " + std::string(yytext),
5035  pos + 1);
5036 }
5037  YY_BREAK
5038 case 195:
5039 /* rule 195 can match eol */
5041 #line 2113 "dhcp4_lexer.ll"
5042 {
5043  /* Bad string with a bad escape inside */
5044  std::string raw(yytext+1);
5045  size_t len = raw.size() - 1;
5046  size_t pos = 0;
5047  bool found = false;
5048  for (; pos < len; ++pos) {
5049  if (found) {
5050  break;
5051  }
5052  char c = raw[pos];
5053  if (c == '\\') {
5054  ++pos;
5055  c = raw[pos];
5056  switch (c) {
5057  case '"':
5058  case '\\':
5059  case '/':
5060  case 'b':
5061  case 'f':
5062  case 'n':
5063  case 'r':
5064  case 't':
5065  break;
5066  case 'u':
5067  if ((pos + 4 > len) ||
5068  !std::isxdigit(raw[pos + 1]) ||
5069  !std::isxdigit(raw[pos + 2]) ||
5070  !std::isxdigit(raw[pos + 3]) ||
5071  !std::isxdigit(raw[pos + 4])) {
5072  found = true;
5073  }
5074  break;
5075  default:
5076  found = true;
5077  break;
5078  }
5079  }
5080  }
5081  /* The rule stops on the first " including on \" so add ... in this case */
5082  std::string trailer = "";
5083  if (raw[len - 1] == '\\') {
5084  trailer = "...";
5085  }
5086  driver.error(driver.loc_,
5087  "Bad escape in " + std::string(yytext) + trailer,
5088  pos);
5089 }
5090  YY_BREAK
5091 case 196:
5093 #line 2162 "dhcp4_lexer.ll"
5094 {
5095  /* Bad string with an open escape at the end */
5096  std::string raw(yytext+1);
5097  driver.error(driver.loc_,
5098  "Overflow escape in " + std::string(yytext),
5099  raw.size() + 1);
5100 }
5101  YY_BREAK
5102 case 197:
5104 #line 2170 "dhcp4_lexer.ll"
5105 {
5106  /* Bad string with an open unicode escape at the end */
5107  std::string raw(yytext+1);
5108  size_t pos = raw.size() - 1;
5109  for (; pos > 0; --pos) {
5110  char c = raw[pos];
5111  if (c == 'u') {
5112  break;
5113  }
5114  }
5115  driver.error(driver.loc_,
5116  "Overflow unicode escape in " + std::string(yytext),
5117  pos + 1);
5118 }
5119  YY_BREAK
5120 case 198:
5122 #line 2185 "dhcp4_lexer.ll"
5123 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
5124  YY_BREAK
5125 case 199:
5127 #line 2186 "dhcp4_lexer.ll"
5128 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
5129  YY_BREAK
5130 case 200:
5132 #line 2187 "dhcp4_lexer.ll"
5133 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
5134  YY_BREAK
5135 case 201:
5137 #line 2188 "dhcp4_lexer.ll"
5138 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
5139  YY_BREAK
5140 case 202:
5142 #line 2189 "dhcp4_lexer.ll"
5143 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
5144  YY_BREAK
5145 case 203:
5147 #line 2190 "dhcp4_lexer.ll"
5148 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
5149  YY_BREAK
5150 case 204:
5152 #line 2192 "dhcp4_lexer.ll"
5153 {
5154  /* An integer was found. */
5155  std::string tmp(yytext);
5156  int64_t integer = 0;
5157  try {
5158  /* In substring we want to use negative values (e.g. -1).
5159  In enterprise-id we need to use values up to 0xffffffff.
5160  To cover both of those use cases, we need at least
5161  int64_t. */
5162  integer = boost::lexical_cast<int64_t>(tmp);
5163  } catch (const boost::bad_lexical_cast &) {
5164  driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
5165  }
5166 
5167  /* The parser needs the string form as double conversion is no lossless */
5168  return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
5169 }
5170  YY_BREAK
5171 case 205:
5173 #line 2210 "dhcp4_lexer.ll"
5174 {
5175  /* A floating point was found. */
5176  std::string tmp(yytext);
5177  double fp = 0.0;
5178  try {
5179  fp = boost::lexical_cast<double>(tmp);
5180  } catch (const boost::bad_lexical_cast &) {
5181  driver.error(driver.loc_, "Failed to convert " + tmp + " to a floating point.");
5182  }
5183 
5184  return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
5185 }
5186  YY_BREAK
5187 case 206:
5189 #line 2223 "dhcp4_lexer.ll"
5190 {
5191  string tmp(yytext);
5192  return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
5193 }
5194  YY_BREAK
5195 case 207:
5197 #line 2228 "dhcp4_lexer.ll"
5198 {
5199  return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
5200 }
5201  YY_BREAK
5202 case 208:
5204 #line 2232 "dhcp4_lexer.ll"
5205 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
5206  YY_BREAK
5207 case 209:
5209 #line 2234 "dhcp4_lexer.ll"
5210 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
5211  YY_BREAK
5212 case 210:
5214 #line 2236 "dhcp4_lexer.ll"
5215 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
5216  YY_BREAK
5217 case 211:
5219 #line 2238 "dhcp4_lexer.ll"
5220 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
5221  YY_BREAK
5222 case YY_STATE_EOF(INITIAL):
5223 #line 2240 "dhcp4_lexer.ll"
5224 {
5225  if (driver.states_.empty()) {
5226  return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
5227  }
5228  driver.loc_ = driver.locs_.back();
5229  driver.locs_.pop_back();
5230  driver.file_ = driver.files_.back();
5231  driver.files_.pop_back();
5232  if (driver.sfile_) {
5233  fclose(driver.sfile_);
5234  driver.sfile_ = 0;
5235  }
5236  if (!driver.sfiles_.empty()) {
5237  driver.sfile_ = driver.sfiles_.back();
5238  driver.sfiles_.pop_back();
5239  }
5240  parser4__delete_buffer(YY_CURRENT_BUFFER);
5241  parser4__switch_to_buffer(driver.states_.back());
5242  driver.states_.pop_back();
5243 
5244  BEGIN(DIR_EXIT);
5245 }
5246  YY_BREAK
5247 case 212:
5249 #line 2263 "dhcp4_lexer.ll"
5250 ECHO;
5251  YY_BREAK
5252 #line 5252 "dhcp4_lexer.cc"
5253 
5254  case YY_END_OF_BUFFER:
5255  {
5256  /* Amount of text matched not including the EOB char. */
5257  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
5258 
5259  /* Undo the effects of YY_DO_BEFORE_ACTION. */
5260  *yy_cp = (yy_hold_char);
5262 
5263  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
5264  {
5265  /* We're scanning a new file or input source. It's
5266  * possible that this happened because the user
5267  * just pointed yyin at a new source and called
5268  * yylex(). If so, then we have to assure
5269  * consistency between YY_CURRENT_BUFFER and our
5270  * globals. Here is the right place to do so, because
5271  * this is the first action (other than possibly a
5272  * back-up) that will match for the new input source.
5273  */
5274  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5275 /* %if-c-only */
5276  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
5277 /* %endif */
5278 /* %if-c++-only */
5279 /* %endif */
5280  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
5281  }
5282 
5283  /* Note that here we test for yy_c_buf_p "<=" to the position
5284  * of the first EOB in the buffer, since yy_c_buf_p will
5285  * already have been incremented past the NUL character
5286  * (since all states make transitions on EOB to the
5287  * end-of-buffer state). Contrast this with the test
5288  * in input().
5289  */
5290  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5291  { /* This was really a NUL. */
5292  yy_state_type yy_next_state;
5293 
5294  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
5295 
5296  yy_current_state = yy_get_previous_state( );
5297 
5298  /* Okay, we're now positioned to make the NUL
5299  * transition. We couldn't have
5300  * yy_get_previous_state() go ahead and do it
5301  * for us because it doesn't know how to deal
5302  * with the possibility of jamming (and we don't
5303  * want to build jamming into it because then it
5304  * will run more slowly).
5305  */
5306 
5307  yy_next_state = yy_try_NUL_trans( yy_current_state );
5308 
5309  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5310 
5311  if ( yy_next_state )
5312  {
5313  /* Consume the NUL. */
5314  yy_cp = ++(yy_c_buf_p);
5315  yy_current_state = yy_next_state;
5316  goto yy_match;
5317  }
5318 
5319  else
5320  {
5321 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
5322  yy_cp = (yy_last_accepting_cpos);
5323  yy_current_state = (yy_last_accepting_state);
5324  goto yy_find_action;
5325  }
5326  }
5327 
5328  else switch ( yy_get_next_buffer( ) )
5329  {
5330  case EOB_ACT_END_OF_FILE:
5331  {
5332  (yy_did_buffer_switch_on_eof) = 0;
5333 
5334  if ( yywrap( ) )
5335  {
5336  /* Note: because we've taken care in
5337  * yy_get_next_buffer() to have set up
5338  * yytext, we can now set up
5339  * yy_c_buf_p so that if some total
5340  * hoser (like flex itself) wants to
5341  * call the scanner after we return the
5342  * YY_NULL, it'll still work - another
5343  * YY_NULL will get returned.
5344  */
5345  (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
5346 
5347  yy_act = YY_STATE_EOF(YY_START);
5348  goto do_action;
5349  }
5350 
5351  else
5352  {
5353  if ( ! (yy_did_buffer_switch_on_eof) )
5354  YY_NEW_FILE;
5355  }
5356  break;
5357  }
5358 
5359  case EOB_ACT_CONTINUE_SCAN:
5360  (yy_c_buf_p) =
5361  (yytext_ptr) + yy_amount_of_matched_text;
5362 
5363  yy_current_state = yy_get_previous_state( );
5364 
5365  yy_cp = (yy_c_buf_p);
5366  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5367  goto yy_match;
5368 
5369  case EOB_ACT_LAST_MATCH:
5370  (yy_c_buf_p) =
5371  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
5372 
5373  yy_current_state = yy_get_previous_state( );
5374 
5375  yy_cp = (yy_c_buf_p);
5376  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
5377  goto yy_find_action;
5378  }
5379  break;
5380  }
5381 
5382  default:
5384  "fatal flex scanner internal error--no action found" );
5385  } /* end of action switch */
5386  } /* end of scanning one token */
5387  } /* end of user's declarations */
5388 } /* end of yylex */
5389 /* %ok-for-header */
5390 
5391 /* %if-c++-only */
5392 /* %not-for-header */
5393 /* %ok-for-header */
5394 
5395 /* %endif */
5396 
5397 /* yy_get_next_buffer - try to read in a new buffer
5398  *
5399  * Returns a code representing an action:
5400  * EOB_ACT_LAST_MATCH -
5401  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5402  * EOB_ACT_END_OF_FILE - end of file
5403  */
5404 /* %if-c-only */
5405 static int yy_get_next_buffer (void)
5406 /* %endif */
5407 /* %if-c++-only */
5408 /* %endif */
5409 {
5410  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
5411  char *source = (yytext_ptr);
5412  int number_to_move, i;
5413  int ret_val;
5414 
5415  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
5417  "fatal flex scanner internal error--end of buffer missed" );
5418 
5419  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
5420  { /* Don't try to fill the buffer, so this is an EOF. */
5421  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
5422  {
5423  /* We matched a single character, the EOB, so
5424  * treat this as a final EOF.
5425  */
5426  return EOB_ACT_END_OF_FILE;
5427  }
5428 
5429  else
5430  {
5431  /* We matched some text prior to the EOB, first
5432  * process it.
5433  */
5434  return EOB_ACT_LAST_MATCH;
5435  }
5436  }
5437 
5438  /* Try to read more data. */
5439 
5440  /* First move last chars to start of buffer. */
5441  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
5442 
5443  for ( i = 0; i < number_to_move; ++i )
5444  *(dest++) = *(source++);
5445 
5446  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
5447  /* don't do the read, it's not guaranteed to return an EOF,
5448  * just force an EOF
5449  */
5450  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
5451 
5452  else
5453  {
5454  int num_to_read =
5455  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
5456 
5457  while ( num_to_read <= 0 )
5458  { /* Not enough room in the buffer - grow it. */
5459 
5460  /* just a shorter name for the current buffer */
5461  YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
5462 
5463  int yy_c_buf_p_offset =
5464  (int) ((yy_c_buf_p) - b->yy_ch_buf);
5465 
5466  if ( b->yy_is_our_buffer )
5467  {
5468  int new_size = b->yy_buf_size * 2;
5469 
5470  if ( new_size <= 0 )
5471  b->yy_buf_size += b->yy_buf_size / 8;
5472  else
5473  b->yy_buf_size *= 2;
5474 
5475  b->yy_ch_buf = (char *)
5476  /* Include room in for 2 EOB chars. */
5477  yyrealloc( (void *) b->yy_ch_buf,
5478  (yy_size_t) (b->yy_buf_size + 2) );
5479  }
5480  else
5481  /* Can't grow it, we don't own it. */
5482  b->yy_ch_buf = NULL;
5483 
5484  if ( ! b->yy_ch_buf )
5486  "fatal error - scanner input buffer overflow" );
5487 
5488  (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
5489 
5490  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
5491  number_to_move - 1;
5492 
5493  }
5494 
5495  if ( num_to_read > YY_READ_BUF_SIZE )
5496  num_to_read = YY_READ_BUF_SIZE;
5497 
5498  /* Read in more data. */
5499  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
5500  (yy_n_chars), num_to_read );
5501 
5502  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5503  }
5504 
5505  if ( (yy_n_chars) == 0 )
5506  {
5507  if ( number_to_move == YY_MORE_ADJ )
5508  {
5509  ret_val = EOB_ACT_END_OF_FILE;
5510  yyrestart( yyin );
5511  }
5512 
5513  else
5514  {
5515  ret_val = EOB_ACT_LAST_MATCH;
5516  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
5518  }
5519  }
5520 
5521  else
5522  ret_val = EOB_ACT_CONTINUE_SCAN;
5523 
5524  if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
5525  /* Extend the array by 50%, plus the number we really need. */
5526  int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
5527  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
5528  (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
5529  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
5530  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
5531  /* "- 2" to take care of EOB's */
5532  YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
5533  }
5534 
5535  (yy_n_chars) += number_to_move;
5536  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
5537  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
5538 
5539  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
5540 
5541  return ret_val;
5542 }
5543 
5544 /* yy_get_previous_state - get the state just before the EOB char was reached */
5545 
5546 /* %if-c-only */
5547 /* %not-for-header */
5548  static yy_state_type yy_get_previous_state (void)
5549 /* %endif */
5550 /* %if-c++-only */
5551 /* %endif */
5552 {
5553  yy_state_type yy_current_state;
5554  char *yy_cp;
5555 
5556 /* %% [15.0] code to get the start state into yy_current_state goes here */
5557  yy_current_state = (yy_start);
5558 
5559  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
5560  {
5561 /* %% [16.0] code to find the next state goes here */
5562  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
5563  if ( yy_accept[yy_current_state] )
5564  {
5565  (yy_last_accepting_state) = yy_current_state;
5566  (yy_last_accepting_cpos) = yy_cp;
5567  }
5568  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5569  {
5570  yy_current_state = (int) yy_def[yy_current_state];
5571  if ( yy_current_state >= 1990 )
5572  yy_c = yy_meta[yy_c];
5573  }
5574  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5575  }
5576 
5577  return yy_current_state;
5578 }
5579 
5580 /* yy_try_NUL_trans - try to make a transition on the NUL character
5581  *
5582  * synopsis
5583  * next_state = yy_try_NUL_trans( current_state );
5584  */
5585 /* %if-c-only */
5586  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
5587 /* %endif */
5588 /* %if-c++-only */
5589 /* %endif */
5590 {
5591  int yy_is_jam;
5592  /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
5593  char *yy_cp = (yy_c_buf_p);
5594 
5595  YY_CHAR yy_c = 1;
5596  if ( yy_accept[yy_current_state] )
5597  {
5598  (yy_last_accepting_state) = yy_current_state;
5599  (yy_last_accepting_cpos) = yy_cp;
5600  }
5601  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5602  {
5603  yy_current_state = (int) yy_def[yy_current_state];
5604  if ( yy_current_state >= 1990 )
5605  yy_c = yy_meta[yy_c];
5606  }
5607  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5608  yy_is_jam = (yy_current_state == 1989);
5609 
5610  return yy_is_jam ? 0 : yy_current_state;
5611 }
5612 
5613 #ifndef YY_NO_UNPUT
5614 /* %if-c-only */
5615 
5616 /* %endif */
5617 #endif
5618 
5619 /* %if-c-only */
5620 #ifndef YY_NO_INPUT
5621 #ifdef __cplusplus
5622  static int yyinput (void)
5623 #else
5624  static int input (void)
5625 #endif
5626 
5627 /* %endif */
5628 /* %if-c++-only */
5629 /* %endif */
5630 {
5631  int c;
5632 
5633  *(yy_c_buf_p) = (yy_hold_char);
5634 
5635  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
5636  {
5637  /* yy_c_buf_p now points to the character we want to return.
5638  * If this occurs *before* the EOB characters, then it's a
5639  * valid NUL; if not, then we've hit the end of the buffer.
5640  */
5641  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5642  /* This was really a NUL. */
5643  *(yy_c_buf_p) = '\0';
5644 
5645  else
5646  { /* need more input */
5647  int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
5648  ++(yy_c_buf_p);
5649 
5650  switch ( yy_get_next_buffer( ) )
5651  {
5652  case EOB_ACT_LAST_MATCH:
5653  /* This happens because yy_g_n_b()
5654  * sees that we've accumulated a
5655  * token and flags that we need to
5656  * try matching the token before
5657  * proceeding. But for input(),
5658  * there's no matching to consider.
5659  * So convert the EOB_ACT_LAST_MATCH
5660  * to EOB_ACT_END_OF_FILE.
5661  */
5662 
5663  /* Reset buffer status. */
5664  yyrestart( yyin );
5665 
5666  /*FALLTHROUGH*/
5667 
5668  case EOB_ACT_END_OF_FILE:
5669  {
5670  if ( yywrap( ) )
5671  return 0;
5672 
5673  if ( ! (yy_did_buffer_switch_on_eof) )
5674  YY_NEW_FILE;
5675 #ifdef __cplusplus
5676  return yyinput();
5677 #else
5678  return input();
5679 #endif
5680  }
5681 
5682  case EOB_ACT_CONTINUE_SCAN:
5683  (yy_c_buf_p) = (yytext_ptr) + offset;
5684  break;
5685  }
5686  }
5687  }
5688 
5689  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
5690  *(yy_c_buf_p) = '\0'; /* preserve yytext */
5691  (yy_hold_char) = *++(yy_c_buf_p);
5692 
5693 /* %% [19.0] update BOL and yylineno */
5694 
5695  return c;
5696 }
5697 /* %if-c-only */
5698 #endif /* ifndef YY_NO_INPUT */
5699 /* %endif */
5700 
5706 /* %if-c-only */
5707  void yyrestart (FILE * input_file )
5708 /* %endif */
5709 /* %if-c++-only */
5710 /* %endif */
5711 {
5712 
5713  if ( ! YY_CURRENT_BUFFER ){
5717  }
5718 
5719  yy_init_buffer( YY_CURRENT_BUFFER, input_file );
5721 }
5722 
5723 /* %if-c++-only */
5724 /* %endif */
5725 
5730 /* %if-c-only */
5731  void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
5732 /* %endif */
5733 /* %if-c++-only */
5734 /* %endif */
5735 {
5736 
5737  /* TODO. We should be able to replace this entire function body
5738  * with
5739  * yypop_buffer_state();
5740  * yypush_buffer_state(new_buffer);
5741  */
5743  if ( YY_CURRENT_BUFFER == new_buffer )
5744  return;
5745 
5746  if ( YY_CURRENT_BUFFER )
5747  {
5748  /* Flush out information for old buffer. */
5749  *(yy_c_buf_p) = (yy_hold_char);
5750  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5751  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5752  }
5753 
5754  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5756 
5757  /* We don't actually know whether we did this switch during
5758  * EOF (yywrap()) processing, but the only time this flag
5759  * is looked at is after yywrap() is called, so it's safe
5760  * to go ahead and always set it.
5761  */
5762  (yy_did_buffer_switch_on_eof) = 1;
5763 }
5764 
5765 /* %if-c-only */
5766 static void yy_load_buffer_state (void)
5767 /* %endif */
5768 /* %if-c++-only */
5769 /* %endif */
5770 {
5771  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5772  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
5773 /* %if-c-only */
5774  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
5775 /* %endif */
5776 /* %if-c++-only */
5777 /* %endif */
5778  (yy_hold_char) = *(yy_c_buf_p);
5779 }
5780 
5787 /* %if-c-only */
5788  YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
5789 /* %endif */
5790 /* %if-c++-only */
5791 /* %endif */
5792 {
5793  YY_BUFFER_STATE b;
5794 
5795  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
5796  if ( ! b )
5797  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5798 
5799  b->yy_buf_size = size;
5800 
5801  /* yy_ch_buf has to be 2 characters longer than the size given because
5802  * we need to put in 2 end-of-buffer characters.
5803  */
5804  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
5805  if ( ! b->yy_ch_buf )
5806  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5807 
5808  b->yy_is_our_buffer = 1;
5809 
5810  yy_init_buffer( b, file );
5811 
5812  return b;
5813 }
5814 
5815 /* %if-c++-only */
5816 /* %endif */
5817 
5822 /* %if-c-only */
5823  void yy_delete_buffer (YY_BUFFER_STATE b )
5824 /* %endif */
5825 /* %if-c++-only */
5826 /* %endif */
5827 {
5828 
5829  if ( ! b )
5830  return;
5831 
5832  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
5834 
5835  if ( b->yy_is_our_buffer )
5836  yyfree( (void *) b->yy_ch_buf );
5837 
5838  yyfree( (void *) b );
5839 }
5840 
5841 /* Initializes or reinitializes a buffer.
5842  * This function is sometimes called more than once on the same buffer,
5843  * such as during a yyrestart() or at EOF.
5844  */
5845 /* %if-c-only */
5846  static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
5847 /* %endif */
5848 /* %if-c++-only */
5849 /* %endif */
5850 
5851 {
5852  int oerrno = errno;
5853 
5854  yy_flush_buffer( b );
5855 
5856 /* %if-c-only */
5857  b->yy_input_file = file;
5858 /* %endif */
5859 /* %if-c++-only */
5860 /* %endif */
5861  b->yy_fill_buffer = 1;
5862 
5863  /* If b is the current buffer, then yy_init_buffer was _probably_
5864  * called from yyrestart() or through yy_get_next_buffer.
5865  * In that case, we don't want to reset the lineno or column.
5866  */
5867  if (b != YY_CURRENT_BUFFER){
5868  b->yy_bs_lineno = 1;
5869  b->yy_bs_column = 0;
5870  }
5871 
5872 /* %if-c-only */
5873 
5874  b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5875 
5876 /* %endif */
5877 /* %if-c++-only */
5878 /* %endif */
5879  errno = oerrno;
5880 }
5881 
5886 /* %if-c-only */
5887  void yy_flush_buffer (YY_BUFFER_STATE b )
5888 /* %endif */
5889 /* %if-c++-only */
5890 /* %endif */
5891 {
5892  if ( ! b )
5893  return;
5894 
5895  b->yy_n_chars = 0;
5896 
5897  /* We always need two end-of-buffer characters. The first causes
5898  * a transition to the end-of-buffer state. The second causes
5899  * a jam in that state.
5900  */
5903 
5904  b->yy_buf_pos = &b->yy_ch_buf[0];
5905 
5906  b->yy_at_bol = 1;
5908 
5909  if ( b == YY_CURRENT_BUFFER )
5911 }
5912 
5913 /* %if-c-or-c++ */
5920 /* %if-c-only */
5921 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
5922 /* %endif */
5923 /* %if-c++-only */
5924 /* %endif */
5925 {
5926  if (new_buffer == NULL)
5927  return;
5928 
5930 
5931  /* This block is copied from yy_switch_to_buffer. */
5932  if ( YY_CURRENT_BUFFER )
5933  {
5934  /* Flush out information for old buffer. */
5935  *(yy_c_buf_p) = (yy_hold_char);
5936  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5937  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5938  }
5939 
5940  /* Only push if top exists. Otherwise, replace top. */
5941  if (YY_CURRENT_BUFFER)
5942  (yy_buffer_stack_top)++;
5943  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5944 
5945  /* copied from yy_switch_to_buffer. */
5947  (yy_did_buffer_switch_on_eof) = 1;
5948 }
5949 /* %endif */
5950 
5951 /* %if-c-or-c++ */
5956 /* %if-c-only */
5958 /* %endif */
5959 /* %if-c++-only */
5960 /* %endif */
5961 {
5962  if (!YY_CURRENT_BUFFER)
5963  return;
5964 
5966  YY_CURRENT_BUFFER_LVALUE = NULL;
5967  if ((yy_buffer_stack_top) > 0)
5968  --(yy_buffer_stack_top);
5969 
5970  if (YY_CURRENT_BUFFER) {
5972  (yy_did_buffer_switch_on_eof) = 1;
5973  }
5974 }
5975 /* %endif */
5976 
5977 /* %if-c-or-c++ */
5978 /* Allocates the stack if it does not exist.
5979  * Guarantees space for at least one push.
5980  */
5981 /* %if-c-only */
5982 static void yyensure_buffer_stack (void)
5983 /* %endif */
5984 /* %if-c++-only */
5985 /* %endif */
5986 {
5987  yy_size_t num_to_alloc;
5988 
5989  if (!(yy_buffer_stack)) {
5990 
5991  /* First allocation is just for 2 elements, since we don't know if this
5992  * scanner will even need a stack. We use 2 instead of 1 to avoid an
5993  * immediate realloc on the next call.
5994  */
5995  num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
5996  (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
5997  (num_to_alloc * sizeof(struct yy_buffer_state*)
5998  );
5999  if ( ! (yy_buffer_stack) )
6000  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
6001 
6002  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6003 
6004  (yy_buffer_stack_max) = num_to_alloc;
6005  (yy_buffer_stack_top) = 0;
6006  return;
6007  }
6008 
6009  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6010 
6011  /* Increase the buffer to prepare for a possible push. */
6012  yy_size_t grow_size = 8 /* arbitrary grow size */;
6013 
6014  num_to_alloc = (yy_buffer_stack_max) + grow_size;
6015  (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
6016  ((yy_buffer_stack),
6017  num_to_alloc * sizeof(struct yy_buffer_state*)
6018  );
6019  if ( ! (yy_buffer_stack) )
6020  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
6021 
6022  /* zero only the new slots.*/
6023  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6024  (yy_buffer_stack_max) = num_to_alloc;
6025  }
6026 }
6027 /* %endif */
6028 
6029 /* %if-c-only */
6036 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
6037 {
6038  YY_BUFFER_STATE b;
6039 
6040  if ( size < 2 ||
6041  base[size-2] != YY_END_OF_BUFFER_CHAR ||
6042  base[size-1] != YY_END_OF_BUFFER_CHAR )
6043  /* They forgot to leave room for the EOB's. */
6044  return NULL;
6045 
6046  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
6047  if ( ! b )
6048  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
6049 
6050  b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
6051  b->yy_buf_pos = b->yy_ch_buf = base;
6052  b->yy_is_our_buffer = 0;
6053  b->yy_input_file = NULL;
6054  b->yy_n_chars = b->yy_buf_size;
6055  b->yy_is_interactive = 0;
6056  b->yy_at_bol = 1;
6057  b->yy_fill_buffer = 0;
6059 
6060  yy_switch_to_buffer( b );
6061 
6062  return b;
6063 }
6064 /* %endif */
6065 
6066 /* %if-c-only */
6075 YY_BUFFER_STATE yy_scan_string (const char * yystr )
6076 {
6077 
6078  return yy_scan_bytes( yystr, (int) strlen(yystr) );
6079 }
6080 /* %endif */
6081 
6082 /* %if-c-only */
6090 YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
6091 {
6092  YY_BUFFER_STATE b;
6093  char *buf;
6094  yy_size_t n;
6095  int i;
6096 
6097  /* Get memory for full buffer, including space for trailing EOB's. */
6098  n = (yy_size_t) (_yybytes_len + 2);
6099  buf = (char *) yyalloc( n );
6100  if ( ! buf )
6101  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
6102 
6103  for ( i = 0; i < _yybytes_len; ++i )
6104  buf[i] = yybytes[i];
6105 
6106  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6107 
6108  b = yy_scan_buffer( buf, n );
6109  if ( ! b )
6110  YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
6111 
6112  /* It's okay to grow etc. this buffer, and we should throw it
6113  * away when we're done.
6114  */
6115  b->yy_is_our_buffer = 1;
6116 
6117  return b;
6118 }
6119 /* %endif */
6120 
6121 #ifndef YY_EXIT_FAILURE
6122 #define YY_EXIT_FAILURE 2
6123 #endif
6124 
6125 /* %if-c-only */
6126 static void yynoreturn yy_fatal_error (const char* msg )
6127 {
6128  fprintf( stderr, "%s\n", msg );
6129  exit( YY_EXIT_FAILURE );
6130 }
6131 /* %endif */
6132 /* %if-c++-only */
6133 /* %endif */
6134 
6135 /* Redefine yyless() so it works in section 3 code. */
6136 
6137 #undef yyless
6138 #define yyless(n) \
6139  do \
6140  { \
6141  /* Undo effects of setting up yytext. */ \
6142  int yyless_macro_arg = (n); \
6143  YY_LESS_LINENO(yyless_macro_arg);\
6144  yytext[yyleng] = (yy_hold_char); \
6145  (yy_c_buf_p) = yytext + yyless_macro_arg; \
6146  (yy_hold_char) = *(yy_c_buf_p); \
6147  *(yy_c_buf_p) = '\0'; \
6148  yyleng = yyless_macro_arg; \
6149  } \
6150  while ( 0 )
6151 
6152 /* Accessor methods (get/set functions) to struct members. */
6153 
6154 /* %if-c-only */
6155 /* %if-reentrant */
6156 /* %endif */
6157 
6161 int yyget_lineno (void)
6162 {
6163 
6164  return yylineno;
6165 }
6166 
6170 FILE *yyget_in (void)
6171 {
6172  return yyin;
6173 }
6174 
6178 FILE *yyget_out (void)
6179 {
6180  return yyout;
6181 }
6182 
6186 int yyget_leng (void)
6187 {
6188  return yyleng;
6189 }
6190 
6195 char *yyget_text (void)
6196 {
6197  return yytext;
6198 }
6199 
6200 /* %if-reentrant */
6201 /* %endif */
6202 
6207 void yyset_lineno (int _line_number )
6208 {
6209 
6210  yylineno = _line_number;
6211 }
6212 
6219 void yyset_in (FILE * _in_str )
6220 {
6221  yyin = _in_str ;
6222 }
6223 
6224 void yyset_out (FILE * _out_str )
6225 {
6226  yyout = _out_str ;
6227 }
6228 
6229 int yyget_debug (void)
6230 {
6231  return yy_flex_debug;
6232 }
6233 
6234 void yyset_debug (int _bdebug )
6235 {
6236  yy_flex_debug = _bdebug ;
6237 }
6238 
6239 /* %endif */
6240 
6241 /* %if-reentrant */
6242 /* %if-bison-bridge */
6243 /* %endif */
6244 /* %endif if-c-only */
6245 
6246 /* %if-c-only */
6247 static int yy_init_globals (void)
6248 {
6249  /* Initialization is the same as for the non-reentrant scanner.
6250  * This function is called from yylex_destroy(), so don't allocate here.
6251  */
6252 
6253  (yy_buffer_stack) = NULL;
6254  (yy_buffer_stack_top) = 0;
6255  (yy_buffer_stack_max) = 0;
6256  (yy_c_buf_p) = NULL;
6257  (yy_init) = 0;
6258  (yy_start) = 0;
6259 
6260 /* Defined in main.c */
6261 #ifdef YY_STDINIT
6262  yyin = stdin;
6263  yyout = stdout;
6264 #else
6265  yyin = NULL;
6266  yyout = NULL;
6267 #endif
6268 
6269  /* For future reference: Set errno on error, since we are called by
6270  * yylex_init()
6271  */
6272  return 0;
6273 }
6274 /* %endif */
6275 
6276 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
6277 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
6278 int yylex_destroy (void)
6279 {
6280 
6281  /* Pop the buffer stack, destroying each element. */
6282  while(YY_CURRENT_BUFFER){
6284  YY_CURRENT_BUFFER_LVALUE = NULL;
6286  }
6287 
6288  /* Destroy the stack itself. */
6289  yyfree((yy_buffer_stack) );
6290  (yy_buffer_stack) = NULL;
6291 
6292  /* Reset the globals. This is important in a non-reentrant scanner so the next time
6293  * yylex() is called, initialization will occur. */
6294  yy_init_globals( );
6295 
6296 /* %if-reentrant */
6297 /* %endif */
6298  return 0;
6299 }
6300 /* %endif */
6301 
6302 /*
6303  * Internal utility routines.
6304  */
6305 
6306 #ifndef yytext_ptr
6307 static void yy_flex_strncpy (char* s1, const char * s2, int n )
6308 {
6309 
6310  int i;
6311  for ( i = 0; i < n; ++i )
6312  s1[i] = s2[i];
6313 }
6314 #endif
6315 
6316 #ifdef YY_NEED_STRLEN
6317 static int yy_flex_strlen (const char * s )
6318 {
6319  int n;
6320  for ( n = 0; s[n]; ++n )
6321  ;
6322 
6323  return n;
6324 }
6325 #endif
6326 
6327 void *yyalloc (yy_size_t size )
6328 {
6329  return malloc(size);
6330 }
6331 
6332 void *yyrealloc (void * ptr, yy_size_t size )
6333 {
6334 
6335  /* The cast to (char *) in the following accommodates both
6336  * implementations that use char* generic pointers, and those
6337  * that use void* generic pointers. It works with the latter
6338  * because both ANSI C and C++ allow castless assignment from
6339  * any pointer type to void*, and deal with argument conversions
6340  * as though doing an assignment.
6341  */
6342  return realloc(ptr, size);
6343 }
6344 
6345 void yyfree (void * ptr )
6346 {
6347  free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
6348 }
6349 
6350 /* %if-tables-serialization definitions */
6351 /* %define-yytables The name for this specific scanner's tables. */
6352 #define YYTABLES_NAME "yytables"
6353 /* %endif */
6354 
6355 /* %ok-for-header */
6356 
6357 #line 2263 "dhcp4_lexer.ll"
6358 
6359 
6360 using namespace isc::dhcp;
6361 
6362 void
6363 Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type)
6364 {
6365  start_token_flag = true;
6366  start_token_value = parser_type;
6367 
6368  file_ = "<string>";
6369  sfile_ = 0;
6370  loc_.initialize(&file_);
6371  yy_flex_debug = trace_scanning_;
6372  YY_BUFFER_STATE buffer;
6373  buffer = parser4__scan_bytes(str.c_str(), str.size());
6374  if (!buffer) {
6375  fatal("cannot scan string");
6376  /* fatal() throws an exception so this can't be reached */
6377  }
6378 }
6379 
6380 void
6382  const std::string& filename,
6383  ParserType parser_type)
6384 {
6385  start_token_flag = true;
6386  start_token_value = parser_type;
6387 
6388  file_ = filename;
6389  sfile_ = f;
6390  loc_.initialize(&file_);
6391  yy_flex_debug = trace_scanning_;
6392  YY_BUFFER_STATE buffer;
6393 
6394  /* See dhcp4_lexer.cc header for available definitions */
6395  buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
6396  if (!buffer) {
6397  fatal("cannot scan file " + filename);
6398  }
6399  parser4__switch_to_buffer(buffer);
6400 }
6401 
6402 void
6404  if (sfile_)
6405  fclose(sfile_);
6406  sfile_ = 0;
6407  static_cast<void>(parser4_lex_destroy());
6408  /* Close files */
6409  while (!sfiles_.empty()) {
6410  FILE* f = sfiles_.back();
6411  if (f) {
6412  fclose(f);
6413  }
6414  sfiles_.pop_back();
6415  }
6416  /* Delete states */
6417  while (!states_.empty()) {
6418  parser4__delete_buffer(states_.back());
6419  states_.pop_back();
6420  }
6421 }
6422 
6423 void
6424 Parser4Context::includeFile(const std::string& filename) {
6425  if (states_.size() > 10) {
6426  fatal("Too many nested include.");
6427  }
6428 
6429  FILE* f = fopen(filename.c_str(), "r");
6430  if (!f) {
6431  fatal("Can't open include file " + filename);
6432  }
6433  if (sfile_) {
6434  sfiles_.push_back(sfile_);
6435  }
6436  sfile_ = f;
6437  states_.push_back(YY_CURRENT_BUFFER);
6438  YY_BUFFER_STATE buffer;
6439  buffer = parser4__create_buffer(f, 65536 /*buffer size*/);
6440  if (!buffer) {
6441  fatal( "Can't scan include file " + filename);
6442  }
6443  parser4__switch_to_buffer(buffer);
6444  files_.push_back(file_);
6445  file_ = filename;
6446  locs_.push_back(loc_);
6447  loc_.initialize(&file_);
6448 
6449  BEGIN(INITIAL);
6450 }
6451 
6452 namespace {
6454 class Dummy {
6455  /* cppcheck-suppress unusedPrivateFunction */
6456  void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
6457 };
6458 }
6459 #endif /* !__clang_analyzer__ */
6460 
static symbol_type make_TOPLEVEL_DHCP4(const location_type &l)
static symbol_type make_SUB_CONFIG_CONTROL(const location_type &l)
static symbol_type make_DDNS_OVERRIDE_CLIENT_UPDATE(const location_type &l)
static symbol_type make_LENIENT_OPTION_PARSING(const location_type &l)
static symbol_type make_NCR_FORMAT(const location_type &l)
#define yy_init_buffer
Definition: dhcp4_lexer.cc:17
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
Used while parsing Dhcp4/hosts-database[s] structures.
static symbol_type make_SUBNET_4O6_INTERFACE(const location_type &l)
Used while parsing Dhcp4/*-database/on-fail.
static symbol_type make_CIRCUIT_ID(const location_type &l)
static symbol_type make_VALID_LIFETIME(const location_type &l)
static symbol_type make_SERVER_TAG(const location_type &l)
static symbol_type make_CONFIG_FETCH_WAIT_TIME(const location_type &l)
Used while parsing Dhcp4/dhcp-ddns/ncr-protocol.
FILE * yy_input_file
Definition: agent_lexer.cc:491
#define yypop_buffer_state
Definition: dhcp4_lexer.cc:22
#define YY_BUFFER_NORMAL
Definition: dhcp4_lexer.cc:540
#define YY_NEW_FILE
Definition: dhcp4_lexer.cc:424
Used while parsing Dhcp4/hooks-libraries.
static symbol_type make_TCP_KEEPALIVE(const location_type &l)
static symbol_type make_GLOBAL(const location_type &l)
static symbol_type make_DATA(const location_type &l)
static symbol_type make_AUTHORITATIVE(const location_type &l)
static symbol_type make_UDP(const location_type &l)
static symbol_type make_TYPE(const location_type &l)
static symbol_type make_MAX_QUEUE_SIZE(const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
#define YY_EXIT_FAILURE
#define yylex
Definition: dhcp4_lexer.cc:27
#define yyget_lineno
Definition: dhcp4_lexer.cc:218
static symbol_type make_RELAY(const location_type &l)
static symbol_type make_USER(const location_type &l)
Used while parsing Dhcp4/dhcp-ddns/ncr-format.
static symbol_type make_DEBUGLEVEL(const location_type &l)
#define yyget_debug
Definition: dhcp4_lexer.cc:158
static symbol_type make_CONTROL_SOCKET(const location_type &l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(const location_type &l)
#define YY_CURRENT_BUFFER
Definition: dhcp4_lexer.cc:575
#define yyrestart
Definition: dhcp4_lexer.cc:30
static symbol_type make_STATISTIC_DEFAULT_SAMPLE_AGE(const location_type &l)
#define yy_scan_string
Definition: dhcp4_lexer.cc:15
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_TEST(const location_type &l)
static symbol_type make_POSTGRESQL(const location_type &l)
static symbol_type make_DDNS_OVERRIDE_NO_UPDATE(const location_type &l)
Used while parsing Dhcp4/client-classes structures.
static symbol_type make_CONSISTENCY(const location_type &l)
#define DIR_INCLUDE
static symbol_type make_POOL(const location_type &l)
static symbol_type make_CACHE_MAX_AGE(const location_type &l)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_HOSTS_DATABASES(const location_type &l)
#define yytext_ptr
Definition: dhcp4_lexer.cc:669
static symbol_type make_SHARED_NETWORKS(const location_type &l)
#define yyensure_buffer_stack
Definition: dhcp4_lexer.cc:23
#define YY_READ_BUF_SIZE
static symbol_type make_SERVE_RETRY_CONTINUE(const location_type &l)
static symbol_type make_LEASE_DATABASE(const location_type &l)
#define yyset_out
Definition: dhcp4_lexer.cc:200
Used while parsing Dhcp4/*-database/type.
static symbol_type make_MAX_ROW_ERRORS(const location_type &l)
static symbol_type make_MIN_VALID_LIFETIME(const location_type &l)
int yy_act
static symbol_type make_SUBNET_4O6_SUBNET(const location_type &l)
std::vector< FILE * > sfiles_
sFile (aka FILE) stack
Used while parsing Dhcp4/host-reservation-identifiers.
static symbol_type make_OUT_OF_POOL(const location_type &l)
static symbol_type make_CACHE_THRESHOLD(const location_type &l)
#define YY_BUFFER_EOF_PENDING
Definition: dhcp4_lexer.cc:551
Used while parsing Dhcp4/multi-threading structures.
static symbol_type make_ECHO_CLIENT_ID(const location_type &l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(const location_type &l)
#define YY_BUFFER_NEW
Definition: dhcp4_lexer.cc:539
static symbol_type make_INTERFACE(const location_type &l)
static symbol_type make_STATISTIC_DEFAULT_SAMPLE_COUNT(const location_type &l)
static symbol_type make_SUB_HOOKS_LIBRARY(const location_type &l)
static symbol_type make_DHCP_SOCKET_TYPE(const location_type &l)
static symbol_type make_OVERRIDE_NO_UPDATE(const location_type &l)
static symbol_type make_ENABLE_UPDATES(const location_type &l)
static symbol_type make_COMPATIBILITY(const location_type &l)
static symbol_type make_DHCP_DDNS(const location_type &l)
static symbol_type make_COLON(const location_type &l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(const location_type &l)
static symbol_type make_MAX_VALID_LIFETIME(const location_type &l)
static symbol_type make_SUB_DHCP_DDNS(const location_type &l)
static symbol_type make_T1_PERCENT(const location_type &l)
static symbol_type make_MAX_RECONNECT_TRIES(const location_type &l)
int yy_bs_lineno
The line count.
Definition: agent_lexer.cc:529
static symbol_type make_SENDER_PORT(const 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_DDNS_SEND_UPDATES(const location_type &l)
Used while parsing Dhcp4/lease-database structures.
#define yy_scan_bytes
Definition: dhcp4_lexer.cc:16
static symbol_type make_SENDER_IP(const location_type &l)
static symbol_type make_ALWAYS(const location_type &l)
static symbol_type make_FLEX_ID(const location_type &l)
static symbol_type make_RESERVATION_MODE(const location_type &l)
static symbol_type make_ALWAYS_SEND(const location_type &l)
#define yyget_text
Definition: dhcp4_lexer.cc:212
static symbol_type make_SERVER_IP(const location_type &l)
static symbol_type make_MEMFILE(const location_type &l)
static symbol_type make_SERVE_RETRY_EXIT(const location_type &l)
static symbol_type make_CONFIG_CONTROL(const location_type &l)
#define EOB_ACT_END_OF_FILE
Definition: dhcp4_lexer.cc:465
static symbol_type make_STORE_EXTENDED_INFO(const location_type &l)
static symbol_type make_SUB_INTERFACES4(const location_type &l)
void scanEnd()
Method called after the last tokens are scanned.
static symbol_type make_ENABLE_MULTI_THREADING(const location_type &l)
Used while parsing Dhcp4/dhcp-ddns.
static symbol_type make_DECLINE_PROBATION_PERIOD(const location_type &l)
static symbol_type make_SUBNET_4O6_INTERFACE_ID(const location_type &l)
static symbol_type make_DISABLED(const location_type &l)
#define YY_END_OF_BUFFER
Definition: dhcp4_lexer.cc:695
static symbol_type make_SANITY_CHECKS(const location_type &l)
static symbol_type make_LSQUARE_BRACKET(const location_type &l)
#define EOB_ACT_LAST_MATCH
Definition: dhcp4_lexer.cc:466
static symbol_type make_HOLD_RECLAIMED_TIME(const location_type &l)
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_T2_PERCENT(const location_type &l)
int flex_int32_t
Definition: agent_lexer.cc:334
static symbol_type make_FLOAT(const double &v, const location_type &l)
static symbol_type make_OVERRIDE_CLIENT_UPDATE(const location_type &l)
flex_uint8_t YY_CHAR
Definition: dhcp4_lexer.cc:656
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
static symbol_type make_TCP_NODELAY(const location_type &l)
#define yyalloc
Definition: dhcp4_lexer.cc:33
Used while parsing Dhcp4/control-socket structures.
static symbol_type make_BOOT_FILE_NAME(const location_type &l)
static symbol_type make_HOST(const location_type &l)
static symbol_type make_CALCULATE_TEE_TIMES(const location_type &l)
static symbol_type make_MAX_RECLAIM_TIME(const location_type &l)
#define YY_FATAL_ERROR(msg)
#define YY_SC_TO_UI(c)
Definition: dhcp4_lexer.cc:400
#define COMMENT
#define yyleng
Definition: dhcp4_lexer.cc:26
static symbol_type make_NEXT_SERVER(const location_type &l)
static symbol_type make_NEVER(const location_type &l)
Used while parsing Dhcp4/subnet4/pools structures.
static symbol_type make_PERSIST(const location_type &l)
static symbol_type make_DHCP4(const location_type &l)
Used while parsing Dhcp4/dhcp-queue-control structures.
static symbol_type make_WHEN_PRESENT(const location_type &l)
Used while parsing shared-networks structures.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
static symbol_type make_IP_RESERVATIONS_UNIQUE(const location_type &l)
#define yylineno
Definition: dhcp4_lexer.cc:28
static symbol_type make_SERVER_PORT(const location_type &l)
#define YY_END_OF_BUFFER_CHAR
Definition: dhcp4_lexer.cc:425
int yy_state_type
Definition: dhcp4_lexer.cc:660
static symbol_type make_MATCH_CLIENT_ID(const location_type &l)
#define yy_flush_buffer
Definition: dhcp4_lexer.cc:18
static symbol_type make_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_RESERVATIONS(const location_type &l)
static symbol_type make_SERIAL_CONSISTENCY(const 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
#define yywrap
static symbol_type make_ENABLE_QUEUE(const location_type &l)
#define YY_RULE_SETUP
#define YY_STATE_EOF(state)
Definition: dhcp4_lexer.cc:422
static symbol_type make_SUBNET(const location_type &l)
Used while parsing Dhcp4/loggers/output_options structures.
std::vector< isc::dhcp::location > locs_
Location stack.
std::vector< std::string > files_
File name stack.
static symbol_type make_DHCP_QUEUE_CONTROL(const location_type &l)
static symbol_type make_DUID(const location_type &l)
#define YY_MORE_ADJ
flex_uint8_t YY_CHAR
Definition: agent_lexer.cc:656
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(const location_type &l)
static symbol_type make_DDNS_REPLACE_CLIENT_NAME(const location_type &l)
static symbol_type make_QUALIFYING_SUFFIX(const location_type &l)
static symbol_type make_SOCKET_TYPE(const location_type &l)
#define YY_RESTORE_YY_MORE_OFFSET
char * yy_bp
#define yy_create_buffer
Definition: dhcp4_lexer.cc:12
#define yy_scan_buffer
Definition: dhcp4_lexer.cc:14
static symbol_type make_NAME(const location_type &l)
static symbol_type make_RENEW_TIMER(const location_type &l)
ParserType
Defines currently supported scopes.
static symbol_type make_ID(const location_type &l)
static symbol_type make_IP_ADDRESS(const location_type &l)
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
#define yy_flex_debug
Definition: dhcp4_lexer.cc:24
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_RESERVATIONS_GLOBAL(const location_type &l)
static symbol_type make_OUTPUT_OPTIONS(const location_type &l)
static symbol_type make_CONTACT_POINTS(const location_type &l)
#define yyget_out
Definition: dhcp4_lexer.cc:194
unsigned short int flex_uint16_t
Definition: dhcp4_lexer.cc:336
#define BEGIN
Definition: dhcp4_lexer.cc:414
static symbol_type make_DDNS_USE_CONFLICT_RESOLUTION(const location_type &l)
static symbol_type make_NCR_PROTOCOL(const location_type &l)
Used while parsing Dhcp4/Subnet4 structures.
static symbol_type make_READONLY(const location_type &l)
static symbol_type make_TOPLEVEL_JSON(const location_type &l)
static symbol_type make_HOSTS_DATABASE(const location_type &l)
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_CQL(const location_type &l)
static symbol_type make_CLIENT_CLASSES(const location_type &l)
static symbol_type make_CSV_FORMAT(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(const 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.
static symbol_type make_DHCP4O6_PORT(const location_type &l)
#define INITIAL
static symbol_type make_WHEN_NOT_PRESENT(const location_type &l)
#define yy_load_buffer_state
Definition: dhcp4_lexer.cc:19
Used while parsing content of Dhcp4.
static symbol_type make_POOLS(const location_type &l)
static symbol_type make_END(const location_type &l)
#define yyrealloc
Definition: dhcp4_lexer.cc:34
Used while parsing Dhcp4/subnet4relay structures.
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_INTERFACES(const location_type &l)
#define YY_START
Definition: dhcp4_lexer.cc:419
static symbol_type make_INTERFACES_CONFIG(const location_type &l)
static symbol_type make_TCP(const location_type &l)
static symbol_type make_DHCP_MULTI_THREADING(const location_type &l)
static symbol_type make_SUB_RESERVATION(const location_type &l)
size_t yy_size_t
Definition: agent_lexer.cc:451
#define yyget_leng
Definition: dhcp4_lexer.cc:206
#define YY_CURRENT_BUFFER_LVALUE
Definition: dhcp4_lexer.cc:581
static symbol_type make_MAX_RECLAIM_LEASES(const location_type &l)
static symbol_type make_CLIENT_ID(const location_type &l)
static symbol_type make_SUB_SUBNET4(const location_type &l)
#define yyset_extra
Definition: dhcp4_lexer.cc:176
#define yyset_debug
Definition: dhcp4_lexer.cc:164
static symbol_type make_RECORD_TYPES(const location_type &l)
static symbol_type make_HOSTNAME(const location_type &l)
static symbol_type make_REBIND_TIMER(const location_type &l)
#define yyset_in
Definition: dhcp4_lexer.cc:188
unsigned char flex_uint8_t
Definition: agent_lexer.cc:335
Used while parsing Dhcp4/loggers structures.
int flex_int32_t
Definition: dhcp4_lexer.cc:334
static symbol_type make_EXPIRED_LEASES_PROCESSING(const location_type &l)
#define yytext
Definition: dhcp4_lexer.cc:31
static symbol_type make_PACKET_QUEUE_SIZE(const location_type &l)
#define DIR_ENTER
Used while parsing compatibility parameters.
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_OUTPUT(const location_type &l)
static symbol_type make_SUB_POOL4(const location_type &l)
#define yyget_extra
Definition: dhcp4_lexer.cc:170
static symbol_type make_RESERVATIONS_OUT_OF_POOL(const location_type &l)
static symbol_type make_KEYSPACE(const location_type &l)
void scanStringBegin(const std::string &str, ParserType type)
Method called before scanning starts on a string.
static symbol_type make_HW_ADDRESS(const location_type &l)
static symbol_type make_DDNS_GENERATED_PREFIX(const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
static symbol_type make_RESERVATIONS_IN_SUBNET(const 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_MYSQL(const location_type &l)
static symbol_type make_LOGGERS(const location_type &l)
FILE * sfile_
sFile (aka FILE)
static symbol_type make_RAW(const location_type &l)
static symbol_type make_CODE(const location_type &l)
static symbol_type make_LEASE_CHECKS(const location_type &l)
short int flex_int16_t
Definition: dhcp4_lexer.cc:333
static symbol_type make_DDNS_QUALIFYING_SUFFIX(const location_type &l)
short int flex_int16_t
Definition: agent_lexer.cc:333
static symbol_type make_ALL(const location_type &l)
static symbol_type make_RE_DETECT(const location_type &l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(const location_type &l)
static symbol_type make_SUB_OPTION_DEFS(const 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_OPTION_DATA(const location_type &l)
static symbol_type make_IP_ADDRESSES(const location_type &l)
static symbol_type make_DDNS_UPDATE_ON_RENEW(const location_type &l)
static symbol_type make_OUTBOUND_INTERFACE(const location_type &l)
static symbol_type make_ENCAPSULATE(const location_type &l)
#define yyout
Definition: dhcp4_lexer.cc:29
#define YY_EXTRA_TYPE
static symbol_type make_ONLY_IF_REQUIRED(const location_type &l)
char * yy_cp
static symbol_type make_RECONNECT_WAIT_TIME(const location_type &l)
static symbol_type make_CONFIG_DATABASES(const location_type &l)
#define YY_DECL
static symbol_type make_REQUEST_TIMEOUT(const location_type &l)
#define yyget_in
Definition: dhcp4_lexer.cc:182
Used while parsing Dhcp4/expired-leases-processing.
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_HOSTNAME_CHAR_SET(const location_type &l)
#define YY_INPUT(buf, result, max_size)
Used while parsing config-control/config-databases.
static symbol_type make_OPTION_DEF(const location_type &l)
static symbol_type make_JSON(const location_type &l)
static symbol_type make_PASSWORD(const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
static symbol_type make_STOP_RETRY_EXIT(const location_type &l)
static symbol_type make_NULL_TYPE(const location_type &l)
#define yyset_lineno
Definition: dhcp4_lexer.cc:224
static symbol_type make_CONNECT_TIMEOUT(const location_type &l)
#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_SUB_DHCP4(const location_type &l)
#define YY_BREAK
#define yylex_destroy
Definition: dhcp4_lexer.cc:152
static symbol_type make_PORT(const location_type &l)
static symbol_type make_SUB_OPTION_DEF(const location_type &l)
#define yynoreturn
Definition: dhcp4_lexer.cc:388
static symbol_type make_SERVER_HOSTNAME(const location_type &l)
static void fatal(const std::string &what)
Fatal error handler.
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_SUB_OPTION_DATA(const location_type &l)
#define yyin
Definition: dhcp4_lexer.cc:25
static symbol_type make_QUEUE_TYPE(const location_type &l)
static symbol_type make_GENERATED_PREFIX(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)
static symbol_type make_PATTERN(const location_type &l)
Used while parsing Dhcp4/config-control.
static symbol_type make_CLIENT_CLASS(const location_type &l)
static symbol_type make_ON_FAIL(const location_type &l)
std::string file_
File name.
static symbol_type make_SOCKET_NAME(const location_type &l)
static symbol_type make_SUBNET4(const location_type &l)
static symbol_type make_LFC_INTERVAL(const location_type &l)
static symbol_type make_CAPACITY(const location_type &l)
Used while parsing Dhcp4/reservation-mode.
#define yyfree
Definition: dhcp4_lexer.cc:35
static symbol_type make_THREAD_POOL_SIZE(const location_type &l)
static symbol_type make_ARRAY(const location_type &l)
static symbol_type make_SPACE(const location_type &l)
static symbol_type make_REPLACE_CLIENT_NAME(const location_type &l)
#define yy_switch_to_buffer
Definition: dhcp4_lexer.cc:20