Kea  1.5.0
agent_lexer.cc
Go to the documentation of this file.
1 #line 1 "agent_lexer.cc"
2 
3 #line 3 "agent_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 agent__create_buffer
13 #define yy_delete_buffer agent__delete_buffer
14 #define yy_scan_buffer agent__scan_buffer
15 #define yy_scan_string agent__scan_string
16 #define yy_scan_bytes agent__scan_bytes
17 #define yy_init_buffer agent__init_buffer
18 #define yy_flush_buffer agent__flush_buffer
19 #define yy_load_buffer_state agent__load_buffer_state
20 #define yy_switch_to_buffer agent__switch_to_buffer
21 #define yypush_buffer_state agent_push_buffer_state
22 #define yypop_buffer_state agent_pop_buffer_state
23 #define yyensure_buffer_stack agent_ensure_buffer_stack
24 #define yy_flex_debug agent__flex_debug
25 #define yyin agent_in
26 #define yyleng agent_leng
27 #define yylex agent_lex
28 #define yylineno agent_lineno
29 #define yyout agent_out
30 #define yyrestart agent_restart
31 #define yytext agent_text
32 #define yywrap agent_wrap
33 #define yyalloc agent_alloc
34 #define yyrealloc agent_realloc
35 #define yyfree agent_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 agent__create_buffer_ALREADY_DEFINED
55 #else
56 #define yy_create_buffer agent__create_buffer
57 #endif
58 
59 #ifdef yy_delete_buffer
60 #define agent__delete_buffer_ALREADY_DEFINED
61 #else
62 #define yy_delete_buffer agent__delete_buffer
63 #endif
64 
65 #ifdef yy_scan_buffer
66 #define agent__scan_buffer_ALREADY_DEFINED
67 #else
68 #define yy_scan_buffer agent__scan_buffer
69 #endif
70 
71 #ifdef yy_scan_string
72 #define agent__scan_string_ALREADY_DEFINED
73 #else
74 #define yy_scan_string agent__scan_string
75 #endif
76 
77 #ifdef yy_scan_bytes
78 #define agent__scan_bytes_ALREADY_DEFINED
79 #else
80 #define yy_scan_bytes agent__scan_bytes
81 #endif
82 
83 #ifdef yy_init_buffer
84 #define agent__init_buffer_ALREADY_DEFINED
85 #else
86 #define yy_init_buffer agent__init_buffer
87 #endif
88 
89 #ifdef yy_flush_buffer
90 #define agent__flush_buffer_ALREADY_DEFINED
91 #else
92 #define yy_flush_buffer agent__flush_buffer
93 #endif
94 
95 #ifdef yy_load_buffer_state
96 #define agent__load_buffer_state_ALREADY_DEFINED
97 #else
98 #define yy_load_buffer_state agent__load_buffer_state
99 #endif
100 
101 #ifdef yy_switch_to_buffer
102 #define agent__switch_to_buffer_ALREADY_DEFINED
103 #else
104 #define yy_switch_to_buffer agent__switch_to_buffer
105 #endif
106 
107 #ifdef yypush_buffer_state
108 #define agent_push_buffer_state_ALREADY_DEFINED
109 #else
110 #define yypush_buffer_state agent_push_buffer_state
111 #endif
112 
113 #ifdef yypop_buffer_state
114 #define agent_pop_buffer_state_ALREADY_DEFINED
115 #else
116 #define yypop_buffer_state agent_pop_buffer_state
117 #endif
118 
119 #ifdef yyensure_buffer_stack
120 #define agent_ensure_buffer_stack_ALREADY_DEFINED
121 #else
122 #define yyensure_buffer_stack agent_ensure_buffer_stack
123 #endif
124 
125 #ifdef yylex
126 #define agent_lex_ALREADY_DEFINED
127 #else
128 #define yylex agent_lex
129 #endif
130 
131 #ifdef yyrestart
132 #define agent_restart_ALREADY_DEFINED
133 #else
134 #define yyrestart agent_restart
135 #endif
136 
137 #ifdef yylex_init
138 #define agent_lex_init_ALREADY_DEFINED
139 #else
140 #define yylex_init agent_lex_init
141 #endif
142 
143 #ifdef yylex_init_extra
144 #define agent_lex_init_extra_ALREADY_DEFINED
145 #else
146 #define yylex_init_extra agent_lex_init_extra
147 #endif
148 
149 #ifdef yylex_destroy
150 #define agent_lex_destroy_ALREADY_DEFINED
151 #else
152 #define yylex_destroy agent_lex_destroy
153 #endif
154 
155 #ifdef yyget_debug
156 #define agent_get_debug_ALREADY_DEFINED
157 #else
158 #define yyget_debug agent_get_debug
159 #endif
160 
161 #ifdef yyset_debug
162 #define agent_set_debug_ALREADY_DEFINED
163 #else
164 #define yyset_debug agent_set_debug
165 #endif
166 
167 #ifdef yyget_extra
168 #define agent_get_extra_ALREADY_DEFINED
169 #else
170 #define yyget_extra agent_get_extra
171 #endif
172 
173 #ifdef yyset_extra
174 #define agent_set_extra_ALREADY_DEFINED
175 #else
176 #define yyset_extra agent_set_extra
177 #endif
178 
179 #ifdef yyget_in
180 #define agent_get_in_ALREADY_DEFINED
181 #else
182 #define yyget_in agent_get_in
183 #endif
184 
185 #ifdef yyset_in
186 #define agent_set_in_ALREADY_DEFINED
187 #else
188 #define yyset_in agent_set_in
189 #endif
190 
191 #ifdef yyget_out
192 #define agent_get_out_ALREADY_DEFINED
193 #else
194 #define yyget_out agent_get_out
195 #endif
196 
197 #ifdef yyset_out
198 #define agent_set_out_ALREADY_DEFINED
199 #else
200 #define yyset_out agent_set_out
201 #endif
202 
203 #ifdef yyget_leng
204 #define agent_get_leng_ALREADY_DEFINED
205 #else
206 #define yyget_leng agent_get_leng
207 #endif
208 
209 #ifdef yyget_text
210 #define agent_get_text_ALREADY_DEFINED
211 #else
212 #define yyget_text agent_get_text
213 #endif
214 
215 #ifdef yyget_lineno
216 #define agent_get_lineno_ALREADY_DEFINED
217 #else
218 #define yyget_lineno agent_get_lineno
219 #endif
220 
221 #ifdef yyset_lineno
222 #define agent_set_lineno_ALREADY_DEFINED
223 #else
224 #define yyset_lineno agent_set_lineno
225 #endif
226 
227 #ifdef yywrap
228 #define agent_wrap_ALREADY_DEFINED
229 #else
230 #define yywrap agent_wrap
231 #endif
232 
233 /* %endif */
234 
235 #ifdef yyalloc
236 #define agent_alloc_ALREADY_DEFINED
237 #else
238 #define yyalloc agent_alloc
239 #endif
240 
241 #ifdef yyrealloc
242 #define agent_realloc_ALREADY_DEFINED
243 #else
244 #define yyrealloc agent_realloc
245 #endif
246 
247 #ifdef yyfree
248 #define agent_free_ALREADY_DEFINED
249 #else
250 #define yyfree agent_free
251 #endif
252 
253 /* %if-c-only */
254 
255 #ifdef yytext
256 #define agent_text_ALREADY_DEFINED
257 #else
258 #define yytext agent_text
259 #endif
260 
261 #ifdef yyleng
262 #define agent_leng_ALREADY_DEFINED
263 #else
264 #define yyleng agent_leng
265 #endif
266 
267 #ifdef yyin
268 #define agent_in_ALREADY_DEFINED
269 #else
270 #define yyin agent_in
271 #endif
272 
273 #ifdef yyout
274 #define agent_out_ALREADY_DEFINED
275 #else
276 #define yyout agent_out
277 #endif
278 
279 #ifdef yy_flex_debug
280 #define agent__flex_debug_ALREADY_DEFINED
281 #else
282 #define yy_flex_debug agent__flex_debug
283 #endif
284 
285 #ifdef yylineno
286 #define agent_lineno_ALREADY_DEFINED
287 #else
288 #define yylineno agent_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
489  {
490 /* %if-c-only */
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  */
504 
505  /* Number of characters read into yy_ch_buf, not including EOB
506  * characters.
507  */
509 
510  /* Whether we "own" the buffer - i.e., we know we created it,
511  * and can realloc() it to grow it, and should free() it to
512  * delete it.
513  */
515 
516  /* Whether this is an "interactive" input source; if so, and
517  * if we're using stdio for input, then we want to use getc()
518  * instead of fread(), to make sure we stop fetching input after
519  * each newline.
520  */
522 
523  /* Whether we're considered to be at the beginning of a line.
524  * If so, '^' rules will be active on the next match, otherwise
525  * not.
526  */
528 
532  /* Whether to try to fill the input buffer when we reach the
533  * end of it.
534  */
536 
538 
539 #define YY_BUFFER_NEW 0
540 #define YY_BUFFER_NORMAL 1
541  /* When an EOF's been seen but there's still some text to process
542  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
543  * shouldn't try reading from the input source any more. We might
544  * still have a bunch of tokens to match, though, because of
545  * possible backing-up.
546  *
547  * When we actually see the EOF, we change the status to "new"
548  * (via yyrestart()), so that the user can continue scanning by
549  * just pointing yyin at a new input file.
550  */
551 #define YY_BUFFER_EOF_PENDING 2
552 
553  };
554 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
555 
556 /* %if-c-only Standard (non-C++) definition */
557 /* %not-for-header */
558 /* %if-not-reentrant */
559 
560 /* Stack of input buffers. */
561 static size_t yy_buffer_stack_top = 0;
562 static size_t yy_buffer_stack_max = 0;
563 static YY_BUFFER_STATE * yy_buffer_stack = NULL;
564 /* %endif */
565 /* %ok-for-header */
566 
567 /* %endif */
568 
569 /* We provide macros for accessing buffer states in case in the
570  * future we want to put the buffer states in a more general
571  * "scanner state".
572  *
573  * Returns the top of the stack, or NULL.
574  */
575 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
576  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
577  : NULL)
578 /* Same as previous macro, but useful when we know that the buffer stack is not
579  * NULL or when we need an lvalue. For internal use only.
580  */
581 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
582 
583 /* %if-c-only Standard (non-C++) definition */
584 
585 /* %if-not-reentrant */
586 /* %not-for-header */
587 /* yy_hold_char holds the character lost when yytext is formed. */
588 static char yy_hold_char;
589 static int yy_n_chars; /* number of characters read into yy_ch_buf */
590 int yyleng;
591 
592 /* Points to current character in buffer. */
593 static char *yy_c_buf_p = NULL;
594 static int yy_init = 0; /* whether we need to initialize */
595 static int yy_start = 0; /* start state number */
596 
597 /* Flag which is used to allow yywrap()'s to do buffer switches
598  * instead of setting up a fresh yyin. A bit of a hack ...
599  */
600 static int yy_did_buffer_switch_on_eof;
601 /* %ok-for-header */
602 
603 /* %endif */
604 
605 void yyrestart ( FILE *input_file );
606 void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
607 YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
610 void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
611 void yypop_buffer_state ( void );
612 
613 static void yyensure_buffer_stack ( void );
614 static void yy_load_buffer_state ( void );
615 static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
616 #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
617 
618 YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
619 YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
620 YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
621 
622 /* %endif */
623 
624 void *yyalloc ( yy_size_t );
625 void *yyrealloc ( void *, yy_size_t );
626 void yyfree ( void * );
627 
628 #define yy_new_buffer yy_create_buffer
629 #define yy_set_interactive(is_interactive) \
630  { \
631  if ( ! YY_CURRENT_BUFFER ){ \
632  yyensure_buffer_stack (); \
633  YY_CURRENT_BUFFER_LVALUE = \
634  yy_create_buffer( yyin, YY_BUF_SIZE ); \
635  } \
636  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
637  }
638 #define yy_set_bol(at_bol) \
639  { \
640  if ( ! YY_CURRENT_BUFFER ){\
641  yyensure_buffer_stack (); \
642  YY_CURRENT_BUFFER_LVALUE = \
643  yy_create_buffer( yyin, YY_BUF_SIZE ); \
644  } \
645  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
646  }
647 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
648 
649 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
650 /* Begin user sect3 */
651 
652 #define agent_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 58
695 #define YY_END_OF_BUFFER 59
696 /* This struct is not used in this scanner,
697  but its presence is necessary. */
699  {
702  };
703 static const flex_int16_t yy_accept[320] =
704  { 0,
705  51, 51, 0, 0, 0, 0, 0, 0, 0, 0,
706  59, 57, 10, 11, 57, 1, 51, 48, 51, 51,
707  57, 50, 49, 57, 57, 57, 57, 57, 44, 45,
708  57, 57, 57, 46, 47, 5, 5, 5, 57, 57,
709  57, 10, 11, 0, 0, 40, 0, 0, 0, 0,
710  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711  0, 1, 51, 51, 0, 50, 51, 3, 2, 6,
712  0, 51, 0, 0, 0, 0, 0, 0, 4, 0,
713  0, 9, 0, 41, 0, 0, 0, 0, 0, 43,
714  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 
716  0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
717  0, 0, 0, 0, 0, 0, 8, 0, 0, 0,
718  0, 0, 42, 0, 0, 0, 20, 0, 0, 0,
719  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
720  0, 0, 0, 56, 54, 0, 53, 52, 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, 55, 52, 0, 0, 0, 0, 0, 0,
724  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
725  0, 0, 0, 0, 29, 0, 0, 0, 0, 23,
726 
727  0, 0, 0, 0, 37, 38, 0, 0, 0, 0,
728  0, 18, 19, 32, 0, 0, 0, 0, 0, 0,
729  0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
730  0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
731  31, 0, 0, 0, 0, 0, 0, 0, 27, 16,
732  0, 0, 0, 0, 0, 25, 28, 33, 0, 0,
733  0, 0, 0, 0, 0, 39, 0, 0, 0, 0,
734  0, 0, 0, 36, 0, 0, 0, 0, 0, 0,
735  0, 13, 14, 0, 0, 0, 0, 0, 0, 0,
736  35, 0, 0, 26, 0, 0, 0, 0, 0, 0,
737 
738  0, 21, 22, 0, 0, 0, 0, 0, 15, 12,
739  0, 0, 0, 0, 0, 30, 17, 24, 0
740  } ;
741 
742 static const YY_CHAR yy_ec[256] =
743  { 0,
744  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
745  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
746  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
747  1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
748  5, 8, 9, 10, 11, 12, 13, 14, 14, 15,
749  14, 16, 14, 17, 14, 14, 14, 18, 5, 19,
750  5, 20, 21, 5, 22, 23, 24, 25, 26, 27,
751  5, 5, 5, 5, 5, 28, 5, 29, 5, 5,
752  5, 30, 31, 32, 33, 5, 5, 5, 5, 5,
753  34, 35, 36, 5, 37, 5, 38, 39, 40, 41,
754 
755  42, 43, 44, 45, 46, 5, 47, 48, 49, 50,
756  51, 52, 5, 53, 54, 55, 56, 57, 5, 58,
757  59, 60, 61, 5, 62, 5, 5, 5, 5, 5,
758  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
759  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
760  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
761  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
762  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
763  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
764  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
765 
766  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
767  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
768  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
769  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
770  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
771  5, 5, 5, 5, 5
772  } ;
773 
774 static const YY_CHAR yy_meta[63] =
775  { 0,
776  1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
777  3, 3, 3, 5, 5, 5, 5, 3, 3, 3,
778  3, 5, 5, 5, 5, 5, 5, 3, 3, 3,
779  3, 3, 3, 3, 3, 3, 3, 5, 5, 5,
780  5, 5, 5, 3, 3, 3, 3, 3, 3, 3,
781  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
782  3, 3
783  } ;
784 
785 static const flex_int16_t yy_base[332] =
786  { 0,
787  0, 0, 61, 64, 67, 0, 65, 69, 49, 66,
788  277, 2102, 86, 269, 129, 0, 124, 2102, 172, 129,
789  84, 178, 2102, 250, 91, 76, 71, 89, 2102, 2102,
790  96, 91, 95, 2102, 2102, 2102, 87, 250, 196, 0,
791  222, 119, 236, 114, 199, 2102, 205, 215, 222, 209,
792  235, 252, 273, 279, 287, 297, 304, 310, 317, 323,
793  345, 0, 345, 367, 361, 374, 387, 2102, 0, 2102,
794  144, 215, 128, 134, 119, 171, 185, 135, 2102, 172,
795  204, 2102, 161, 2102, 392, 405, 416, 422, 203, 435,
796  457, 457, 484, 502, 508, 514, 520, 526, 533, 544,
797 
798  550, 556, 563, 572, 581, 591, 598, 608, 0, 172,
799  199, 209, 212, 221, 219, 149, 2102, 0, 618, 626,
800  633, 167, 2102, 665, 661, 639, 2102, 696, 710, 716,
801  722, 731, 737, 747, 753, 762, 773, 783, 792, 800,
802  810, 827, 242, 2102, 2102, 275, 2102, 2102, 109, 0,
803  835, 847, 854, 887, 873, 884, 915, 930, 937, 950,
804  960, 967, 973, 985, 991, 997, 1008, 1016, 1022, 1034,
805  1043, 1052, 2102, 2102, 122, 0, 1065, 1071, 1078, 1087,
806  1095, 1132, 1101, 1109, 1117, 1131, 1161, 1175, 1181, 1187,
807  1196, 1202, 1211, 1217, 2102, 1223, 1232, 1241, 1258, 2102,
808 
809  1279, 109, 0, 1288, 2102, 2102, 1294, 1302, 1314, 1324,
810  1332, 2102, 2102, 2102, 1349, 1355, 1374, 1380, 1386, 1392,
811  1398, 1410, 1416, 1429, 1435, 1447, 2102, 1454, 1460, 1466,
812  1472, 1485, 1491, 1503, 1509, 1515, 1521, 1527, 1534, 2102,
813  2102, 1540, 1551, 1564, 1570, 1576, 1586, 1594, 2102, 2102,
814  1600, 1606, 1612, 1630, 1636, 2102, 2102, 2102, 1643, 1654,
815  1661, 1667, 1673, 1680, 1698, 2102, 1708, 1691, 1715, 1721,
816  1728, 1735, 1743, 2102, 1751, 1759, 1770, 1778, 1786, 1800,
817  1813, 2102, 2102, 1821, 1827, 1835, 1841, 1851, 1857, 1863,
818  2102, 1878, 1887, 2102, 1893, 1899, 1913, 1923, 1934, 1940,
819 
820  1948, 2102, 2102, 1954, 1960, 1971, 1978, 1990, 2102, 2102,
821  1998, 2006, 2013, 2021, 2028, 2102, 2102, 2102, 2102, 2063,
822  2068, 2073, 2078, 2083, 2088, 2093, 2096, 132, 128, 121,
823  111
824  } ;
825 
826 static const flex_int16_t yy_def[332] =
827  { 0,
828  319, 1, 320, 320, 1, 5, 5, 5, 5, 5,
829  319, 319, 319, 319, 321, 322, 319, 319, 319, 319,
830  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
831  319, 319, 319, 319, 319, 319, 319, 319, 319, 323,
832  319, 319, 319, 324, 321, 319, 321, 321, 321, 325,
833  321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
834  321, 322, 319, 319, 319, 319, 319, 319, 326, 319,
835  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
836  323, 319, 324, 319, 319, 321, 321, 321, 327, 321,
837  325, 321, 321, 321, 321, 321, 321, 321, 321, 321,
838 
839  321, 321, 321, 321, 321, 321, 321, 321, 326, 319,
840  319, 319, 319, 319, 319, 319, 319, 328, 321, 321,
841  321, 327, 319, 325, 321, 321, 319, 321, 321, 321,
842  321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
843  321, 321, 319, 319, 319, 319, 319, 319, 319, 329,
844  321, 321, 321, 325, 321, 321, 321, 321, 321, 321,
845  321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
846  321, 321, 319, 319, 319, 330, 321, 321, 321, 321,
847  321, 325, 321, 321, 321, 321, 321, 321, 321, 321,
848  321, 321, 321, 321, 319, 321, 321, 321, 321, 319,
849 
850  321, 319, 331, 321, 319, 319, 321, 321, 321, 321,
851  321, 319, 319, 319, 321, 321, 321, 321, 321, 321,
852  321, 321, 321, 321, 321, 321, 319, 321, 321, 321,
853  321, 321, 321, 321, 321, 321, 321, 321, 321, 319,
854  319, 321, 321, 321, 321, 321, 321, 321, 319, 319,
855  321, 321, 321, 321, 321, 319, 319, 319, 321, 321,
856  321, 321, 321, 321, 321, 319, 321, 321, 321, 321,
857  321, 321, 321, 319, 321, 321, 321, 321, 321, 321,
858  321, 319, 319, 321, 321, 321, 321, 321, 321, 321,
859  319, 321, 321, 319, 321, 321, 321, 321, 321, 321,
860 
861  321, 319, 319, 321, 321, 321, 321, 321, 319, 319,
862  321, 321, 321, 321, 321, 319, 319, 319, 0, 319,
863  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
864  319
865  } ;
866 
867 static const flex_int16_t yy_nxt[2165] =
868  { 0,
869  12, 13, 14, 13, 12, 15, 16, 12, 17, 18,
870  19, 20, 21, 22, 22, 22, 22, 23, 24, 12,
871  12, 12, 12, 12, 12, 25, 26, 12, 27, 12,
872  12, 28, 12, 29, 12, 30, 12, 12, 12, 12,
873  12, 25, 31, 12, 12, 12, 12, 12, 12, 32,
874  12, 12, 12, 12, 33, 12, 12, 12, 12, 12,
875  34, 35, 37, 14, 37, 37, 14, 37, 38, 41,
876  40, 38, 12, 12, 40, 12, 12, 12, 12, 12,
877  12, 12, 12, 12, 12, 12, 41, 42, 42, 42,
878  42, 68, 12, 12, 12, 12, 69, 73, 12, 71,
879 
880  12, 71, 12, 74, 72, 72, 72, 72, 12, 12,
881  12, 12, 39, 73, 12, 83, 12, 73, 75, 84,
882  42, 12, 42, 74, 75, 203, 74, 12, 12, 44,
883  44, 44, 176, 76, 46, 63, 150, 64, 64, 64,
884  64, 75, 67, 67, 67, 67, 77, 78, 85, 65,
885  227, 112, 47, 48, 65, 110, 49, 72, 72, 72,
886  72, 111, 202, 50, 175, 65, 84, 112, 51, 52,
887  65, 53, 123, 54, 112, 110, 55, 56, 57, 58,
888  59, 111, 60, 63, 61, 66, 66, 66, 66, 63,
889  115, 66, 66, 66, 66, 85, 149, 65, 110, 44,
890 
891  44, 44, 143, 65, 46, 44, 44, 44, 123, 117,
892  46, 116, 111, 65, 90, 44, 44, 44, 113, 65,
893  46, 45, 44, 44, 44, 143, 144, 46, 72, 72,
894  72, 72, 114, 50, 145, 44, 44, 44, 43, 50,
895  46, 82, 143, 45, 145, 80, 144, 45, 144, 50,
896  145, 45, 44, 44, 44, 86, 50, 46, 45, 87,
897  148, 45, 79, 45, 91, 146, 93, 173, 147, 50,
898  70, 43, 88, 44, 44, 44, 319, 319, 46, 44,
899  44, 44, 319, 173, 46, 92, 50, 44, 44, 44,
900  319, 319, 46, 94, 319, 319, 95, 44, 44, 44,
901 
902  173, 319, 46, 319, 44, 44, 44, 50, 319, 46,
903  44, 44, 44, 50, 319, 46, 174, 44, 44, 44,
904  96, 50, 46, 44, 44, 44, 319, 319, 46, 97,
905  319, 50, 99, 98, 101, 319, 319, 100, 50, 319,
906  319, 102, 319, 319, 50, 44, 44, 44, 319, 319,
907  46, 50, 319, 319, 104, 319, 319, 50, 67, 67,
908  67, 67, 319, 319, 105, 103, 319, 319, 319, 71,
909  65, 71, 319, 106, 72, 72, 72, 72, 63, 50,
910  64, 64, 64, 64, 319, 63, 65, 66, 66, 66,
911  66, 319, 65, 319, 107, 319, 319, 83, 108, 65,
912 
913  67, 67, 67, 67, 83, 44, 44, 44, 65, 319,
914  46, 319, 65, 319, 319, 65, 44, 44, 44, 319,
915  319, 46, 44, 44, 44, 319, 83, 46, 65, 319,
916  83, 319, 319, 319, 83, 44, 44, 44, 319, 50,
917  46, 83, 319, 319, 83, 319, 83, 118, 319, 319,
918  50, 319, 319, 319, 119, 120, 50, 44, 44, 44,
919  319, 319, 46, 319, 319, 121, 319, 319, 319, 50,
920  124, 124, 124, 124, 319, 319, 319, 319, 124, 124,
921  124, 124, 124, 124, 44, 44, 44, 319, 319, 127,
922  319, 50, 319, 319, 124, 124, 124, 124, 124, 124,
923 
924  319, 319, 44, 44, 44, 125, 126, 46, 44, 44,
925  44, 319, 319, 46, 44, 44, 44, 319, 50, 46,
926  44, 44, 44, 319, 319, 46, 44, 44, 44, 319,
927  319, 46, 319, 44, 44, 44, 50, 319, 46, 319,
928  128, 319, 50, 319, 44, 44, 44, 129, 50, 46,
929  44, 44, 44, 319, 50, 46, 44, 44, 44, 319,
930  50, 46, 319, 44, 44, 44, 319, 50, 46, 130,
931  131, 133, 44, 44, 44, 319, 319, 46, 50, 319,
932  132, 44, 44, 44, 50, 319, 46, 134, 319, 319,
933  50, 44, 44, 44, 319, 319, 46, 50, 44, 44,
934 
935  44, 319, 319, 46, 136, 319, 50, 135, 44, 44,
936  44, 319, 319, 46, 319, 50, 319, 137, 44, 44,
937  44, 319, 319, 46, 138, 50, 44, 44, 44, 319,
938  140, 46, 50, 44, 44, 44, 319, 139, 46, 44,
939  44, 44, 50, 141, 46, 319, 319, 319, 319, 142,
940  319, 319, 50, 319, 319, 319, 319, 319, 319, 319,
941  50, 44, 44, 44, 319, 319, 46, 50, 319, 319,
942  319, 319, 151, 50, 319, 319, 153, 152, 154, 154,
943  154, 154, 319, 319, 319, 319, 154, 154, 154, 154,
944  154, 154, 319, 156, 319, 50, 44, 44, 44, 319,
945 
946  319, 46, 154, 154, 154, 154, 154, 154, 319, 155,
947  44, 44, 44, 319, 319, 46, 44, 44, 44, 319,
948  319, 46, 44, 44, 44, 319, 319, 46, 319, 319,
949  50, 44, 44, 44, 319, 319, 46, 44, 44, 44,
950  319, 319, 46, 319, 50, 319, 319, 44, 44, 44,
951  50, 157, 46, 44, 44, 44, 50, 319, 46, 319,
952  319, 158, 44, 44, 44, 50, 319, 46, 160, 159,
953  319, 50, 319, 44, 44, 44, 319, 319, 46, 319,
954  319, 50, 161, 44, 44, 44, 319, 50, 46, 162,
955  163, 319, 44, 44, 44, 319, 50, 46, 319, 319,
956 
957  44, 44, 44, 166, 319, 46, 164, 50, 319, 165,
958  44, 44, 44, 319, 319, 46, 319, 50, 319, 319,
959  168, 319, 319, 319, 167, 319, 50, 44, 44, 44,
960  319, 319, 46, 169, 50, 44, 44, 44, 319, 319,
961  46, 319, 319, 319, 50, 319, 170, 44, 44, 44,
962  319, 319, 46, 319, 44, 44, 44, 319, 319, 46,
963  319, 50, 178, 179, 319, 319, 319, 171, 319, 50,
964  319, 180, 319, 44, 44, 44, 319, 319, 46, 172,
965  319, 50, 319, 319, 44, 44, 44, 177, 50, 46,
966  319, 319, 319, 319, 319, 319, 319, 319, 319, 181,
967 
968  182, 182, 182, 182, 319, 319, 319, 50, 182, 182,
969  182, 182, 182, 182, 183, 44, 44, 44, 50, 319,
970  46, 319, 319, 319, 182, 182, 182, 182, 182, 182,
971  44, 44, 44, 319, 319, 46, 184, 44, 44, 44,
972  319, 319, 46, 319, 319, 186, 187, 319, 319, 50,
973  44, 44, 44, 319, 319, 46, 319, 319, 185, 319,
974  44, 44, 44, 319, 50, 46, 319, 44, 44, 44,
975  190, 50, 46, 44, 44, 44, 319, 319, 46, 319,
976  319, 188, 319, 319, 50, 44, 44, 44, 319, 319,
977  46, 44, 44, 44, 50, 319, 46, 44, 44, 44,
978 
979  319, 50, 195, 189, 191, 319, 319, 50, 44, 44,
980  44, 319, 319, 46, 192, 319, 44, 44, 44, 50,
981  319, 46, 44, 44, 44, 50, 319, 46, 319, 319,
982  193, 50, 194, 319, 44, 44, 44, 319, 319, 46,
983  319, 319, 50, 44, 44, 44, 319, 319, 200, 319,
984  50, 319, 44, 44, 44, 319, 50, 46, 319, 319,
985  319, 319, 201, 196, 197, 44, 44, 44, 50, 319,
986  46, 44, 44, 44, 198, 199, 205, 50, 44, 44,
987  44, 319, 319, 206, 319, 319, 50, 44, 44, 44,
988  319, 319, 46, 319, 319, 44, 44, 44, 319, 50,
989 
990  46, 44, 44, 44, 319, 50, 46, 319, 319, 44,
991  44, 44, 50, 319, 46, 204, 319, 44, 44, 44,
992  319, 50, 46, 319, 319, 319, 319, 207, 319, 50,
993  319, 44, 44, 44, 319, 50, 212, 319, 319, 319,
994  319, 319, 319, 50, 208, 45, 45, 45, 45, 319,
995  209, 50, 319, 45, 45, 45, 45, 45, 45, 210,
996  319, 44, 44, 44, 211, 50, 213, 319, 319, 45,
997  45, 45, 45, 45, 45, 44, 44, 44, 319, 319,
998  214, 44, 44, 44, 319, 319, 46, 44, 44, 44,
999  319, 215, 46, 319, 319, 50, 44, 44, 44, 319,
1000 
1001  319, 46, 44, 44, 44, 319, 319, 46, 319, 50,
1002  319, 44, 44, 44, 319, 50, 46, 44, 44, 44,
1003  319, 50, 46, 44, 44, 44, 319, 319, 46, 319,
1004  50, 216, 44, 44, 44, 319, 50, 46, 217, 319,
1005  319, 44, 44, 44, 319, 50, 46, 319, 218, 319,
1006  319, 50, 319, 319, 219, 319, 319, 50, 44, 44,
1007  44, 319, 319, 46, 319, 319, 50, 319, 319, 221,
1008  220, 319, 319, 223, 319, 50, 319, 222, 319, 44,
1009  44, 44, 319, 319, 46, 319, 224, 319, 44, 44,
1010  44, 319, 50, 46, 44, 44, 44, 319, 319, 46,
1011 
1012  319, 319, 44, 44, 44, 319, 319, 46, 319, 319,
1013  319, 319, 225, 50, 44, 44, 44, 319, 226, 46,
1014  319, 319, 50, 319, 44, 44, 44, 319, 50, 46,
1015  319, 319, 44, 44, 44, 228, 50, 46, 319, 319,
1016  319, 319, 319, 229, 319, 230, 319, 319, 50, 44,
1017  44, 44, 319, 319, 46, 44, 44, 44, 50, 319,
1018  46, 319, 319, 319, 319, 319, 50, 319, 231, 319,
1019  319, 232, 319, 233, 44, 44, 44, 319, 319, 46,
1020  44, 44, 44, 50, 319, 46, 44, 44, 44, 50,
1021  319, 46, 44, 44, 44, 319, 234, 46, 44, 44,
1022 
1023  44, 319, 319, 240, 319, 235, 319, 319, 50, 319,
1024  44, 44, 44, 319, 50, 241, 44, 44, 44, 319,
1025  50, 46, 319, 319, 236, 319, 50, 319, 319, 44,
1026  44, 44, 50, 239, 46, 44, 44, 44, 237, 238,
1027  46, 319, 319, 319, 50, 245, 242, 44, 44, 44,
1028  50, 319, 46, 319, 44, 44, 44, 319, 319, 46,
1029  44, 44, 44, 50, 247, 46, 44, 44, 44, 50,
1030  243, 249, 44, 44, 44, 319, 319, 250, 319, 319,
1031  319, 50, 319, 244, 319, 44, 44, 44, 50, 319,
1032  46, 44, 44, 44, 50, 251, 46, 246, 319, 319,
1033 
1034  50, 319, 319, 44, 44, 44, 50, 319, 46, 44,
1035  44, 44, 319, 248, 46, 44, 44, 44, 319, 50,
1036  46, 44, 44, 44, 319, 50, 256, 44, 44, 44,
1037  319, 319, 257, 319, 44, 44, 44, 50, 319, 258,
1038  44, 44, 44, 50, 319, 46, 319, 252, 253, 50,
1039  319, 44, 44, 44, 319, 50, 46, 319, 319, 319,
1040  319, 50, 254, 319, 44, 44, 44, 255, 50, 46,
1041  44, 44, 44, 319, 50, 46, 44, 44, 44, 319,
1042  319, 46, 319, 319, 319, 50, 44, 44, 44, 319,
1043  259, 46, 260, 319, 44, 44, 44, 319, 50, 266,
1044 
1045  44, 44, 44, 319, 50, 46, 44, 44, 44, 319,
1046  50, 46, 44, 44, 44, 319, 319, 46, 319, 262,
1047  50, 319, 261, 265, 263, 264, 319, 319, 50, 319,
1048  44, 44, 44, 319, 50, 46, 44, 44, 44, 319,
1049  50, 46, 319, 44, 44, 44, 50, 268, 46, 319,
1050  269, 319, 319, 267, 44, 44, 44, 319, 319, 46,
1051  319, 44, 44, 44, 50, 319, 274, 44, 44, 44,
1052  50, 319, 46, 44, 44, 44, 319, 50, 46, 319,
1053  44, 44, 44, 319, 270, 46, 319, 319, 50, 319,
1054  271, 44, 44, 44, 272, 50, 46, 319, 44, 44,
1055 
1056  44, 50, 319, 46, 275, 319, 273, 50, 44, 44,
1057  44, 319, 319, 46, 50, 44, 44, 44, 319, 319,
1058  46, 44, 44, 44, 319, 50, 282, 319, 44, 44,
1059  44, 276, 50, 283, 277, 44, 44, 44, 280, 319,
1060  46, 278, 50, 44, 44, 44, 319, 319, 46, 50,
1061  319, 44, 44, 44, 319, 50, 46, 319, 279, 44,
1062  44, 44, 50, 319, 46, 319, 319, 281, 319, 50,
1063  44, 44, 44, 319, 319, 46, 319, 50, 44, 44,
1064  44, 319, 319, 46, 319, 50, 44, 44, 44, 284,
1065  319, 46, 319, 50, 319, 319, 285, 319, 319, 286,
1066 
1067  44, 44, 44, 319, 50, 291, 319, 319, 319, 319,
1068  287, 288, 50, 44, 44, 44, 319, 319, 46, 289,
1069  50, 44, 44, 44, 319, 290, 46, 44, 44, 44,
1070  319, 319, 294, 319, 50, 44, 44, 44, 319, 319,
1071  46, 44, 44, 44, 319, 319, 46, 50, 319, 319,
1072  292, 44, 44, 44, 319, 50, 46, 44, 44, 44,
1073  319, 50, 46, 44, 44, 44, 293, 319, 46, 50,
1074  319, 319, 319, 319, 319, 50, 295, 319, 44, 44,
1075  44, 319, 296, 46, 319, 50, 319, 44, 44, 44,
1076  319, 50, 46, 44, 44, 44, 319, 50, 302, 44,
1077 
1078  44, 44, 319, 319, 303, 319, 298, 319, 297, 299,
1079  319, 319, 50, 44, 44, 44, 319, 319, 46, 319,
1080  319, 50, 319, 44, 44, 44, 319, 50, 46, 319,
1081  300, 319, 319, 50, 44, 44, 44, 301, 319, 46,
1082  44, 44, 44, 319, 319, 46, 319, 50, 44, 44,
1083  44, 319, 319, 46, 44, 44, 44, 50, 319, 309,
1084  44, 44, 44, 319, 319, 310, 319, 304, 50, 319,
1085  319, 44, 44, 44, 50, 306, 46, 305, 44, 44,
1086  44, 319, 50, 46, 319, 307, 319, 319, 50, 319,
1087  44, 44, 44, 319, 50, 46, 319, 308, 44, 44,
1088 
1089  44, 319, 319, 46, 319, 50, 44, 44, 44, 319,
1090  319, 46, 50, 44, 44, 44, 319, 319, 316, 312,
1091  319, 44, 44, 44, 50, 311, 317, 319, 44, 44,
1092  44, 319, 50, 318, 319, 319, 319, 319, 319, 319,
1093  50, 319, 319, 313, 319, 319, 319, 50, 319, 319,
1094  319, 314, 319, 319, 319, 50, 319, 319, 319, 315,
1095  319, 319, 50, 36, 36, 36, 36, 36, 45, 45,
1096  45, 45, 45, 62, 319, 62, 62, 62, 81, 319,
1097  81, 319, 81, 83, 83, 83, 83, 83, 89, 89,
1098  89, 89, 89, 109, 319, 109, 109, 109, 122, 122,
1099 
1100  122, 11, 319, 319, 319, 319, 319, 319, 319, 319,
1101  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1102  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1103  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1104  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1105  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1106  319, 319, 319, 319
1107  } ;
1108 
1109 static const flex_int16_t yy_chk[2165] =
1110  { 0,
1111  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1112  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1113  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1114  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1115  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1116  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1117  1, 1, 3, 3, 3, 4, 4, 4, 3, 9,
1118  7, 4, 5, 5, 8, 5, 5, 5, 5, 5,
1119  5, 5, 5, 5, 5, 5, 10, 13, 37, 13,
1120  37, 21, 5, 5, 9, 5, 21, 26, 5, 25,
1121 
1122  5, 25, 5, 27, 25, 25, 25, 25, 5, 5,
1123  7, 10, 5, 26, 8, 331, 5, 31, 28, 44,
1124  42, 5, 42, 32, 33, 330, 27, 5, 5, 15,
1125  15, 15, 329, 31, 15, 17, 328, 17, 17, 17,
1126  17, 28, 20, 20, 20, 20, 32, 33, 44, 17,
1127  202, 75, 15, 15, 20, 73, 15, 71, 71, 71,
1128  71, 74, 175, 15, 149, 17, 83, 78, 15, 15,
1129  20, 15, 122, 15, 75, 73, 15, 15, 15, 15,
1130  15, 74, 15, 19, 15, 19, 19, 19, 19, 22,
1131  78, 22, 22, 22, 22, 83, 116, 19, 76, 45,
1132 
1133  45, 45, 110, 22, 45, 47, 47, 47, 89, 81,
1134  47, 80, 77, 19, 50, 48, 48, 48, 76, 22,
1135  48, 50, 49, 49, 49, 110, 111, 49, 72, 72,
1136  72, 72, 77, 45, 112, 51, 51, 51, 43, 47,
1137  51, 41, 113, 50, 115, 39, 111, 50, 114, 48,
1138  112, 50, 52, 52, 52, 47, 49, 52, 50, 48,
1139  115, 50, 38, 50, 50, 113, 52, 143, 114, 51,
1140  24, 14, 49, 53, 53, 53, 11, 0, 53, 54,
1141  54, 54, 0, 143, 54, 51, 52, 55, 55, 55,
1142  0, 0, 55, 52, 0, 0, 52, 56, 56, 56,
1143 
1144  146, 0, 56, 0, 57, 57, 57, 53, 0, 57,
1145  58, 58, 58, 54, 0, 58, 146, 59, 59, 59,
1146  53, 55, 59, 60, 60, 60, 0, 0, 60, 54,
1147  0, 56, 55, 54, 56, 0, 0, 55, 57, 0,
1148  0, 57, 0, 0, 58, 61, 61, 61, 0, 0,
1149  61, 59, 0, 0, 59, 0, 0, 60, 63, 63,
1150  63, 63, 0, 0, 60, 58, 0, 0, 0, 65,
1151  63, 65, 0, 60, 65, 65, 65, 65, 64, 61,
1152  64, 64, 64, 64, 0, 66, 63, 66, 66, 66,
1153  66, 0, 64, 0, 61, 0, 0, 85, 61, 66,
1154 
1155  67, 67, 67, 67, 85, 86, 86, 86, 64, 0,
1156  86, 0, 67, 0, 0, 66, 87, 87, 87, 0,
1157  0, 87, 88, 88, 88, 0, 85, 88, 67, 0,
1158  85, 0, 0, 0, 85, 90, 90, 90, 0, 86,
1159  90, 85, 0, 0, 85, 0, 85, 85, 0, 0,
1160  87, 0, 0, 0, 86, 87, 88, 92, 92, 92,
1161  0, 0, 92, 0, 0, 88, 0, 0, 0, 90,
1162  91, 91, 91, 91, 0, 0, 0, 0, 91, 91,
1163  91, 91, 91, 91, 93, 93, 93, 0, 0, 93,
1164  0, 92, 0, 0, 91, 91, 91, 91, 91, 91,
1165 
1166  0, 0, 94, 94, 94, 92, 92, 94, 95, 95,
1167  95, 0, 0, 95, 96, 96, 96, 0, 93, 96,
1168  97, 97, 97, 0, 0, 97, 98, 98, 98, 0,
1169  0, 98, 0, 99, 99, 99, 94, 0, 99, 0,
1170  94, 0, 95, 0, 100, 100, 100, 95, 96, 100,
1171  101, 101, 101, 0, 97, 101, 102, 102, 102, 0,
1172  98, 102, 0, 103, 103, 103, 0, 99, 103, 96,
1173  97, 99, 104, 104, 104, 0, 0, 104, 100, 0,
1174  98, 105, 105, 105, 101, 0, 105, 100, 0, 0,
1175  102, 106, 106, 106, 0, 0, 106, 103, 107, 107,
1176 
1177  107, 0, 0, 107, 102, 0, 104, 101, 108, 108,
1178  108, 0, 0, 108, 0, 105, 0, 103, 119, 119,
1179  119, 0, 0, 119, 104, 106, 120, 120, 120, 0,
1180  106, 120, 107, 121, 121, 121, 0, 105, 121, 126,
1181  126, 126, 108, 107, 126, 0, 0, 0, 0, 108,
1182  0, 0, 119, 0, 0, 0, 0, 0, 0, 0,
1183  120, 125, 125, 125, 0, 0, 125, 121, 0, 0,
1184  0, 0, 119, 126, 0, 0, 121, 120, 124, 124,
1185  124, 124, 0, 0, 0, 0, 124, 124, 124, 124,
1186  124, 124, 0, 126, 0, 125, 128, 128, 128, 0,
1187 
1188  0, 128, 124, 124, 124, 124, 124, 124, 0, 125,
1189  129, 129, 129, 0, 0, 129, 130, 130, 130, 0,
1190  0, 130, 131, 131, 131, 0, 0, 131, 0, 0,
1191  128, 132, 132, 132, 0, 0, 132, 133, 133, 133,
1192  0, 0, 133, 0, 129, 0, 0, 134, 134, 134,
1193  130, 128, 134, 135, 135, 135, 131, 0, 135, 0,
1194  0, 129, 136, 136, 136, 132, 0, 136, 131, 130,
1195  0, 133, 0, 137, 137, 137, 0, 0, 137, 0,
1196  0, 134, 132, 138, 138, 138, 0, 135, 138, 133,
1197  134, 0, 139, 139, 139, 0, 136, 139, 0, 0,
1198 
1199  140, 140, 140, 136, 0, 140, 135, 137, 0, 135,
1200  141, 141, 141, 0, 0, 141, 0, 138, 0, 0,
1201  138, 0, 0, 0, 137, 0, 139, 142, 142, 142,
1202  0, 0, 142, 139, 140, 151, 151, 151, 0, 0,
1203  151, 0, 0, 0, 141, 0, 140, 152, 152, 152,
1204  0, 0, 152, 0, 153, 153, 153, 0, 0, 153,
1205  0, 142, 152, 152, 0, 0, 0, 141, 0, 151,
1206  0, 152, 0, 155, 155, 155, 0, 0, 155, 142,
1207  0, 152, 0, 0, 156, 156, 156, 151, 153, 156,
1208  0, 0, 0, 0, 0, 0, 0, 0, 0, 153,
1209 
1210  154, 154, 154, 154, 0, 0, 0, 155, 154, 154,
1211  154, 154, 154, 154, 155, 157, 157, 157, 156, 0,
1212  157, 0, 0, 0, 154, 154, 154, 154, 154, 154,
1213  158, 158, 158, 0, 0, 158, 156, 159, 159, 159,
1214  0, 0, 159, 0, 0, 158, 158, 0, 0, 157,
1215  160, 160, 160, 0, 0, 160, 0, 0, 157, 0,
1216  161, 161, 161, 0, 158, 161, 0, 162, 162, 162,
1217  161, 159, 162, 163, 163, 163, 0, 0, 163, 0,
1218  0, 159, 0, 0, 160, 164, 164, 164, 0, 0,
1219  164, 165, 165, 165, 161, 0, 165, 166, 166, 166,
1220 
1221  0, 162, 166, 160, 162, 0, 0, 163, 167, 167,
1222  167, 0, 0, 167, 163, 0, 168, 168, 168, 164,
1223  0, 168, 169, 169, 169, 165, 0, 169, 0, 0,
1224  164, 166, 165, 0, 170, 170, 170, 0, 0, 170,
1225  0, 0, 167, 171, 171, 171, 0, 0, 171, 0,
1226  168, 0, 172, 172, 172, 0, 169, 172, 0, 0,
1227  0, 0, 172, 167, 168, 177, 177, 177, 170, 0,
1228  177, 178, 178, 178, 169, 170, 178, 171, 179, 179,
1229  179, 0, 0, 179, 0, 0, 172, 180, 180, 180,
1230  0, 0, 180, 0, 0, 181, 181, 181, 0, 177,
1231 
1232  181, 183, 183, 183, 0, 178, 183, 0, 0, 184,
1233  184, 184, 179, 0, 184, 177, 0, 185, 185, 185,
1234  0, 180, 185, 0, 0, 0, 0, 180, 0, 181,
1235  0, 186, 186, 186, 0, 183, 186, 0, 0, 0,
1236  0, 0, 0, 184, 181, 182, 182, 182, 182, 0,
1237  183, 185, 0, 182, 182, 182, 182, 182, 182, 184,
1238  0, 187, 187, 187, 185, 186, 187, 0, 0, 182,
1239  182, 182, 182, 182, 182, 188, 188, 188, 0, 0,
1240  188, 189, 189, 189, 0, 0, 189, 190, 190, 190,
1241  0, 189, 190, 0, 0, 187, 191, 191, 191, 0,
1242 
1243  0, 191, 192, 192, 192, 0, 0, 192, 0, 188,
1244  0, 193, 193, 193, 0, 189, 193, 194, 194, 194,
1245  0, 190, 194, 196, 196, 196, 0, 0, 196, 0,
1246  191, 190, 197, 197, 197, 0, 192, 197, 190, 0,
1247  0, 198, 198, 198, 0, 193, 198, 0, 191, 0,
1248  0, 194, 0, 0, 192, 0, 0, 196, 199, 199,
1249  199, 0, 0, 199, 0, 0, 197, 0, 0, 194,
1250  193, 0, 0, 197, 0, 198, 0, 196, 0, 201,
1251  201, 201, 0, 0, 201, 0, 198, 0, 204, 204,
1252  204, 0, 199, 204, 207, 207, 207, 0, 0, 207,
1253 
1254  0, 0, 208, 208, 208, 0, 0, 208, 0, 0,
1255  0, 0, 199, 201, 209, 209, 209, 0, 201, 209,
1256  0, 0, 204, 0, 210, 210, 210, 0, 207, 210,
1257  0, 0, 211, 211, 211, 204, 208, 211, 0, 0,
1258  0, 0, 0, 207, 0, 208, 0, 0, 209, 215,
1259  215, 215, 0, 0, 215, 216, 216, 216, 210, 0,
1260  216, 0, 0, 0, 0, 0, 211, 0, 209, 0,
1261  0, 210, 0, 211, 217, 217, 217, 0, 0, 217,
1262  218, 218, 218, 215, 0, 218, 219, 219, 219, 216,
1263  0, 219, 220, 220, 220, 0, 215, 220, 221, 221,
1264 
1265  221, 0, 0, 221, 0, 216, 0, 0, 217, 0,
1266  222, 222, 222, 0, 218, 222, 223, 223, 223, 0,
1267  219, 223, 0, 0, 217, 0, 220, 0, 0, 224,
1268  224, 224, 221, 220, 224, 225, 225, 225, 218, 219,
1269  225, 0, 0, 0, 222, 225, 222, 226, 226, 226,
1270  223, 0, 226, 0, 228, 228, 228, 0, 0, 228,
1271  229, 229, 229, 224, 228, 229, 230, 230, 230, 225,
1272  223, 230, 231, 231, 231, 0, 0, 231, 0, 0,
1273  0, 226, 0, 224, 0, 232, 232, 232, 228, 0,
1274  232, 233, 233, 233, 229, 232, 233, 226, 0, 0,
1275 
1276  230, 0, 0, 234, 234, 234, 231, 0, 234, 235,
1277  235, 235, 0, 229, 235, 236, 236, 236, 0, 232,
1278  236, 237, 237, 237, 0, 233, 237, 238, 238, 238,
1279  0, 0, 238, 0, 239, 239, 239, 234, 0, 239,
1280  242, 242, 242, 235, 0, 242, 0, 233, 234, 236,
1281  0, 243, 243, 243, 0, 237, 243, 0, 0, 0,
1282  0, 238, 235, 0, 244, 244, 244, 236, 239, 244,
1283  245, 245, 245, 0, 242, 245, 246, 246, 246, 0,
1284  0, 246, 0, 0, 0, 243, 247, 247, 247, 0,
1285  242, 247, 243, 0, 248, 248, 248, 0, 244, 248,
1286 
1287  251, 251, 251, 0, 245, 251, 252, 252, 252, 0,
1288  246, 252, 253, 253, 253, 0, 0, 253, 0, 245,
1289  247, 0, 244, 247, 245, 246, 0, 0, 248, 0,
1290  254, 254, 254, 0, 251, 254, 255, 255, 255, 0,
1291  252, 255, 0, 259, 259, 259, 253, 252, 259, 0,
1292  253, 0, 0, 251, 260, 260, 260, 0, 0, 260,
1293  0, 261, 261, 261, 254, 0, 261, 262, 262, 262,
1294  255, 0, 262, 263, 263, 263, 0, 259, 263, 0,
1295  264, 264, 264, 0, 254, 264, 0, 0, 260, 0,
1296  255, 268, 268, 268, 259, 261, 268, 0, 265, 265,
1297 
1298  265, 262, 0, 265, 262, 0, 260, 263, 267, 267,
1299  267, 0, 0, 267, 264, 269, 269, 269, 0, 0,
1300  269, 270, 270, 270, 0, 268, 270, 0, 271, 271,
1301  271, 263, 265, 271, 264, 272, 272, 272, 268, 0,
1302  272, 265, 267, 273, 273, 273, 0, 0, 273, 269,
1303  0, 275, 275, 275, 0, 270, 275, 0, 267, 276,
1304  276, 276, 271, 0, 276, 0, 0, 269, 0, 272,
1305  277, 277, 277, 0, 0, 277, 0, 273, 278, 278,
1306  278, 0, 0, 278, 0, 275, 279, 279, 279, 272,
1307  0, 279, 0, 276, 0, 0, 273, 0, 0, 275,
1308 
1309  280, 280, 280, 0, 277, 280, 0, 0, 0, 0,
1310  276, 277, 278, 281, 281, 281, 0, 0, 281, 278,
1311  279, 284, 284, 284, 0, 279, 284, 285, 285, 285,
1312  0, 0, 285, 0, 280, 286, 286, 286, 0, 0,
1313  286, 287, 287, 287, 0, 0, 287, 281, 0, 0,
1314  281, 288, 288, 288, 0, 284, 288, 289, 289, 289,
1315  0, 285, 289, 290, 290, 290, 284, 0, 290, 286,
1316  0, 0, 0, 0, 0, 287, 286, 0, 292, 292,
1317  292, 0, 287, 292, 0, 288, 0, 293, 293, 293,
1318  0, 289, 293, 295, 295, 295, 0, 290, 295, 296,
1319 
1320  296, 296, 0, 0, 296, 0, 289, 0, 288, 290,
1321  0, 0, 292, 297, 297, 297, 0, 0, 297, 0,
1322  0, 293, 0, 298, 298, 298, 0, 295, 298, 0,
1323  292, 0, 0, 296, 299, 299, 299, 293, 0, 299,
1324  300, 300, 300, 0, 0, 300, 0, 297, 301, 301,
1325  301, 0, 0, 301, 304, 304, 304, 298, 0, 304,
1326  305, 305, 305, 0, 0, 305, 0, 297, 299, 0,
1327  0, 306, 306, 306, 300, 299, 306, 298, 307, 307,
1328  307, 0, 301, 307, 0, 300, 0, 0, 304, 0,
1329  308, 308, 308, 0, 305, 308, 0, 301, 311, 311,
1330 
1331  311, 0, 0, 311, 0, 306, 312, 312, 312, 0,
1332  0, 312, 307, 313, 313, 313, 0, 0, 313, 307,
1333  0, 314, 314, 314, 308, 306, 314, 0, 315, 315,
1334  315, 0, 311, 315, 0, 0, 0, 0, 0, 0,
1335  312, 0, 0, 308, 0, 0, 0, 313, 0, 0,
1336  0, 311, 0, 0, 0, 314, 0, 0, 0, 312,
1337  0, 0, 315, 320, 320, 320, 320, 320, 321, 321,
1338  321, 321, 321, 322, 0, 322, 322, 322, 323, 0,
1339  323, 0, 323, 324, 324, 324, 324, 324, 325, 325,
1340  325, 325, 325, 326, 0, 326, 326, 326, 327, 327,
1341 
1342  327, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1343  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1344  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1345  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1346  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1347  319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1348  319, 319, 319, 319
1349  } ;
1350 
1351 static yy_state_type yy_last_accepting_state;
1352 static char *yy_last_accepting_cpos;
1353 
1354 extern int yy_flex_debug;
1356 
1357 static const flex_int16_t yy_rule_linenum[58] =
1358  { 0,
1359  133, 135, 137, 142, 143, 148, 149, 150, 162, 165,
1360  170, 177, 186, 195, 204, 215, 226, 235, 244, 253,
1361  262, 271, 280, 289, 298, 307, 316, 325, 334, 343,
1362  352, 361, 370, 379, 388, 397, 406, 415, 424, 433,
1363  532, 537, 542, 547, 548, 549, 550, 551, 552, 554,
1364  572, 585, 590, 594, 596, 598, 600
1365  } ;
1366 
1367 /* The intent behind this definition is that it'll catch
1368  * any uses of REJECT which flex missed.
1369  */
1370 #define REJECT reject_used_but_not_detected
1371 #define yymore() yymore_used_but_not_detected
1372 #define YY_MORE_ADJ 0
1373 #define YY_RESTORE_YY_MORE_OFFSET
1374 char *yytext;
1375 #line 1 "agent_lexer.ll"
1376 /* Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
1377 
1378  This Source Code Form is subject to the terms of the Mozilla Public
1379  License, v. 2.0. If a copy of the MPL was not distributed with this
1380  file, You can obtain one at http://mozilla.org/MPL/2.0/. */
1381 #line 8 "agent_lexer.ll"
1382 
1383 /* Generated files do not make clang static analyser so happy */
1384 #ifndef __clang_analyzer__
1385 
1386 #include <cerrno>
1387 #include <climits>
1388 #include <cstdlib>
1389 #include <string>
1390 #include <agent/parser_context.h>
1391 #include <asiolink/io_address.h>
1392 #include <boost/lexical_cast.hpp>
1393 #include <exceptions/exceptions.h>
1394 #include <cc/dhcp_config_error.h>
1395 
1396 /* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */
1397 
1398 /* Work around an incompatibility in flex (at least versions
1399  2.5.31 through 2.5.33): it generates code that does
1400  not conform to C89. See Debian bug 333231
1401  <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
1402 # undef yywrap
1403 # define yywrap() 1
1404 
1405 namespace {
1406 
1407 bool start_token_flag = false;
1408 
1409 isc::agent::ParserContext::ParserType start_token_value;
1410 unsigned int comment_start_line = 0;
1411 
1412 using namespace isc;
1414 
1415 };
1416 
1417 /* To avoid the call to exit... oops! */
1418 #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
1419 #line 1419 "agent_lexer.cc"
1420 /* noyywrap disables automatic rewinding for the next file to parse. Since we
1421  always parse only a single string, there's no need to do any wraps. And
1422  using yywrap requires linking with -lfl, which provides the default yywrap
1423  implementation that always returns 1 anyway. */
1424 /* nounput simplifies the lexer, by removing support for putting a character
1425  back into the input stream. We never use such capability anyway. */
1426 /* batch means that we'll never use the generated lexer interactively. */
1427 /* avoid to get static global variables to remain with C++. */
1428 /* in last resort %option reentrant */
1429 /* Enables debug mode. To see the debug messages, one needs to also set
1430  yy_flex_debug to 1, then the debug messages will be printed on stderr. */
1431 /* I have no idea what this option does, except it was specified in the bison
1432  examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
1433  be on the safe side and keep it. */
1434 #define YY_NO_INPUT 1
1435 
1436 /* These are not token expressions yet, just convenience expressions that
1437  can be used during actual token definitions. Note some can match
1438  incorrect inputs (e.g., IP addresses) which must be checked. */
1439 /* for errors */
1440 #line 96 "agent_lexer.ll"
1441 /* This code run each time a pattern is matched. It updates the location
1442  by moving it ahead by yyleng bytes. yyleng specifies the length of the
1443  currently matched token. */
1444 #define YY_USER_ACTION driver.loc_.columns(yyleng);
1445 #line 1445 "agent_lexer.cc"
1446 #line 1446 "agent_lexer.cc"
1447 
1448 #define INITIAL 0
1449 #define COMMENT 1
1450 #define DIR_ENTER 2
1451 #define DIR_INCLUDE 3
1452 #define DIR_EXIT 4
1453 
1454 #ifndef YY_NO_UNISTD_H
1455 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1456  * down here because we want the user's section 1 to have been scanned first.
1457  * The user has a chance to override it with an option.
1458  */
1459 /* %if-c-only */
1460 #include <unistd.h>
1461 /* %endif */
1462 /* %if-c++-only */
1463 /* %endif */
1464 #endif
1465 
1466 #ifndef YY_EXTRA_TYPE
1467 #define YY_EXTRA_TYPE void *
1468 #endif
1469 
1470 /* %if-c-only Reentrant structure and macros (non-C++). */
1471 /* %if-reentrant */
1472 /* %if-c-only */
1473 
1474 static int yy_init_globals ( void );
1475 
1476 /* %endif */
1477 /* %if-reentrant */
1478 /* %endif */
1479 /* %endif End reentrant structures and macros. */
1480 
1481 /* Accessor methods to globals.
1482  These are made visible to non-reentrant scanners for convenience. */
1483 
1484 int yylex_destroy ( void );
1485 
1486 int yyget_debug ( void );
1487 
1488 void yyset_debug ( int debug_flag );
1489 
1490 YY_EXTRA_TYPE yyget_extra ( void );
1491 
1492 void yyset_extra ( YY_EXTRA_TYPE user_defined );
1493 
1494 FILE *yyget_in ( void );
1495 
1496 void yyset_in ( FILE * _in_str );
1497 
1498 FILE *yyget_out ( void );
1499 
1500 void yyset_out ( FILE * _out_str );
1501 
1502  int yyget_leng ( void );
1503 
1504 char *yyget_text ( void );
1505 
1506 int yyget_lineno ( void );
1507 
1508 void yyset_lineno ( int _line_number );
1509 
1510 /* %if-bison-bridge */
1511 /* %endif */
1512 
1513 /* Macros after this point can all be overridden by user definitions in
1514  * section 1.
1515  */
1516 
1517 #ifndef YY_SKIP_YYWRAP
1518 #ifdef __cplusplus
1519 extern "C" int yywrap ( void );
1520 #else
1521 extern int yywrap ( void );
1522 #endif
1523 #endif
1524 
1525 /* %not-for-header */
1526 #ifndef YY_NO_UNPUT
1527 
1528 #endif
1529 /* %ok-for-header */
1530 
1531 /* %endif */
1532 
1533 #ifndef yytext_ptr
1534 static void yy_flex_strncpy ( char *, const char *, int );
1535 #endif
1536 
1537 #ifdef YY_NEED_STRLEN
1538 static int yy_flex_strlen ( const char * );
1539 #endif
1540 
1541 #ifndef YY_NO_INPUT
1542 /* %if-c-only Standard (non-C++) definition */
1543 /* %not-for-header */
1544 #ifdef __cplusplus
1545 static int yyinput ( void );
1546 #else
1547 static int input ( void );
1548 #endif
1549 /* %ok-for-header */
1550 
1551 /* %endif */
1552 #endif
1553 
1554 /* %if-c-only */
1555 
1556 /* %endif */
1557 
1558 /* Amount of stuff to slurp up with each read. */
1559 #ifndef YY_READ_BUF_SIZE
1560 #ifdef __ia64__
1561 /* On IA-64, the buffer size is 16k, not 8k */
1562 #define YY_READ_BUF_SIZE 16384
1563 #else
1564 #define YY_READ_BUF_SIZE 8192
1565 #endif /* __ia64__ */
1566 #endif
1567 
1568 /* Copy whatever the last rule matched to the standard output. */
1569 #ifndef ECHO
1570 /* %if-c-only Standard (non-C++) definition */
1571 /* This used to be an fputs(), but since the string might contain NUL's,
1572  * we now use fwrite().
1573  */
1574 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1575 /* %endif */
1576 /* %if-c++-only C++ definition */
1577 /* %endif */
1578 #endif
1579 
1580 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1581  * is returned in "result".
1582  */
1583 #ifndef YY_INPUT
1584 #define YY_INPUT(buf,result,max_size) \
1585 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1586  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1587  { \
1588  int c = '*'; \
1589  int n; \
1590  for ( n = 0; n < max_size && \
1591  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1592  buf[n] = (char) c; \
1593  if ( c == '\n' ) \
1594  buf[n++] = (char) c; \
1595  if ( c == EOF && ferror( yyin ) ) \
1596  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1597  result = n; \
1598  } \
1599  else \
1600  { \
1601  errno=0; \
1602  while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1603  { \
1604  if( errno != EINTR) \
1605  { \
1606  YY_FATAL_ERROR( "input in flex scanner failed" ); \
1607  break; \
1608  } \
1609  errno=0; \
1610  clearerr(yyin); \
1611  } \
1612  }\
1613 \
1614 /* %if-c++-only C++ definition \ */\
1615 /* %endif */
1616 
1617 #endif
1618 
1619 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1620  * we don't want an extra ';' after the "return" because that will cause
1621  * some compilers to complain about unreachable statements.
1622  */
1623 #ifndef yyterminate
1624 #define yyterminate() return YY_NULL
1625 #endif
1626 
1627 /* Number of entries by which start-condition stack grows. */
1628 #ifndef YY_START_STACK_INCR
1629 #define YY_START_STACK_INCR 25
1630 #endif
1631 
1632 /* Report a fatal error. */
1633 #ifndef YY_FATAL_ERROR
1634 /* %if-c-only */
1635 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1636 /* %endif */
1637 /* %if-c++-only */
1638 /* %endif */
1639 #endif
1640 
1641 /* %if-tables-serialization structures and prototypes */
1642 /* %not-for-header */
1643 /* %ok-for-header */
1644 
1645 /* %not-for-header */
1646 /* %tables-yydmap generated elements */
1647 /* %endif */
1648 /* end tables serialization structures and prototypes */
1649 
1650 /* %ok-for-header */
1651 
1652 /* Default declaration of generated scanner - a define so the user can
1653  * easily add parameters.
1654  */
1655 #ifndef YY_DECL
1656 #define YY_DECL_IS_OURS 1
1657 /* %if-c-only Standard (non-C++) definition */
1658 
1659 extern int yylex (void);
1660 
1661 #define YY_DECL int yylex (void)
1662 /* %endif */
1663 /* %if-c++-only C++ definition */
1664 /* %endif */
1665 #endif /* !YY_DECL */
1666 
1667 /* Code executed at the beginning of each rule, after yytext and yyleng
1668  * have been set up.
1669  */
1670 #ifndef YY_USER_ACTION
1671 #define YY_USER_ACTION
1672 #endif
1673 
1674 /* Code executed at the end of each rule. */
1675 #ifndef YY_BREAK
1676 #define YY_BREAK /*LINTED*/break;
1677 #endif
1678 
1679 /* %% [6.0] YY_RULE_SETUP definition goes here */
1680 #define YY_RULE_SETUP \
1681  YY_USER_ACTION
1682 
1683 /* %not-for-header */
1686 YY_DECL
1688  yy_state_type yy_current_state;
1689  char *yy_cp, *yy_bp;
1690  int yy_act;
1691 
1692  if ( !(yy_init) )
1693  {
1694  (yy_init) = 1;
1695 
1696 #ifdef YY_USER_INIT
1697  YY_USER_INIT;
1698 #endif
1699 
1700  if ( ! (yy_start) )
1701  (yy_start) = 1; /* first start state */
1702 
1703  if ( ! yyin )
1704 /* %if-c-only */
1705  yyin = stdin;
1706 /* %endif */
1707 /* %if-c++-only */
1708 /* %endif */
1709 
1710  if ( ! yyout )
1711 /* %if-c-only */
1712  yyout = stdout;
1713 /* %endif */
1714 /* %if-c++-only */
1715 /* %endif */
1716 
1717  if ( ! YY_CURRENT_BUFFER ) {
1721  }
1722 
1724  }
1725 
1726  {
1727 /* %% [7.0] user's declarations go here */
1728 #line 102 "agent_lexer.ll"
1729 
1730 
1731 
1732 #line 106 "agent_lexer.ll"
1733  /* This part of the code is copied over to the verbatim to the top
1734  of the generated yylex function. Explanation:
1735  http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
1736 
1737  /* Code run each time yylex is called. */
1738  driver.loc_.step();
1739 
1740  /* We currently have 3 points of entries defined:
1741  START_JSON - which expects any valid JSON
1742  START_AGENT - which expects full configuration (with outer map and Control-agent
1743  object in it.
1744  START_SUB_AGENT - which expects only content of the Control-agent, this is
1745  primarily useful for testing. */
1746  if (start_token_flag) {
1747  start_token_flag = false;
1748  switch (start_token_value) {
1749  case ParserContext::PARSER_JSON:
1750  default:
1751  return isc::agent::AgentParser::make_START_JSON(driver.loc_);
1752  case ParserContext::PARSER_AGENT:
1753  return isc::agent::AgentParser::make_START_AGENT(driver.loc_);
1754  case ParserContext::PARSER_SUB_AGENT:
1756  }
1757  }
1758 
1759 
1760 #line 1760 "agent_lexer.cc"
1761 
1762  while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1763  {
1764 /* %% [8.0] yymore()-related code goes here */
1765  yy_cp = (yy_c_buf_p);
1766 
1767  /* Support of yytext. */
1768  *yy_cp = (yy_hold_char);
1769 
1770  /* yy_bp points to the position in yy_ch_buf of the start of
1771  * the current run.
1772  */
1773  yy_bp = yy_cp;
1774 
1775 /* %% [9.0] code to set up and find next match goes here */
1776  yy_current_state = (yy_start);
1777 yy_match:
1778  do
1779  {
1780  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1781  if ( yy_accept[yy_current_state] )
1782  {
1783  (yy_last_accepting_state) = yy_current_state;
1784  (yy_last_accepting_cpos) = yy_cp;
1785  }
1786  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1787  {
1788  yy_current_state = (int) yy_def[yy_current_state];
1789  if ( yy_current_state >= 320 )
1790  yy_c = yy_meta[yy_c];
1791  }
1792  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1793  ++yy_cp;
1794  }
1795  while ( yy_current_state != 319 );
1796  yy_cp = (yy_last_accepting_cpos);
1797  yy_current_state = (yy_last_accepting_state);
1798 
1799 yy_find_action:
1800 /* %% [10.0] code to find the action number goes here */
1801  yy_act = yy_accept[yy_current_state];
1802 
1804 
1805 /* %% [11.0] code for yylineno update goes here */
1806 
1807 do_action: /* This label is used only to access EOF actions. */
1808 
1809 /* %% [12.0] debug code goes here */
1810  if ( yy_flex_debug )
1811  {
1812  if ( yy_act == 0 )
1813  fprintf( stderr, "--scanner backing up\n" );
1814  else if ( yy_act < 58 )
1815  fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1816  (long)yy_rule_linenum[yy_act], yytext );
1817  else if ( yy_act == 58 )
1818  fprintf( stderr, "--accepting default rule (\"%s\")\n",
1819  yytext );
1820  else if ( yy_act == 59 )
1821  fprintf( stderr, "--(end of buffer or a NUL)\n" );
1822  else
1823  fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1824  }
1825 
1826  switch ( yy_act )
1827  { /* beginning of action switch */
1828 /* %% [13.0] actions go here */
1829  case 0: /* must back up */
1830  /* undo the effects of YY_DO_BEFORE_ACTION */
1831  *yy_cp = (yy_hold_char);
1832  yy_cp = (yy_last_accepting_cpos);
1833  yy_current_state = (yy_last_accepting_state);
1834  goto yy_find_action;
1835 
1836 case 1:
1838 #line 133 "agent_lexer.ll"
1839 ;
1840  YY_BREAK
1841 case 2:
1843 #line 135 "agent_lexer.ll"
1844 ;
1845  YY_BREAK
1846 case 3:
1848 #line 137 "agent_lexer.ll"
1849 {
1850  BEGIN(COMMENT);
1851  comment_start_line = driver.loc_.end.line;;
1852 }
1853  YY_BREAK
1854 case 4:
1856 #line 142 "agent_lexer.ll"
1857 BEGIN(INITIAL);
1858  YY_BREAK
1859 case 5:
1861 #line 143 "agent_lexer.ll"
1862 ;
1863  YY_BREAK
1864 case YY_STATE_EOF(COMMENT):
1865 #line 144 "agent_lexer.ll"
1866 {
1867  isc_throw(ParseError, "Comment not closed. (/* in line " << comment_start_line);
1868 }
1869  YY_BREAK
1870 case 6:
1872 #line 148 "agent_lexer.ll"
1873 BEGIN(DIR_ENTER);
1874  YY_BREAK
1875 case 7:
1877 #line 149 "agent_lexer.ll"
1879  YY_BREAK
1880 case 8:
1882 #line 150 "agent_lexer.ll"
1883 {
1884  /* Include directive. */
1885 
1886  /* Extract the filename. */
1887  std::string tmp(yytext+1);
1888  tmp.resize(tmp.size() - 1);
1889 
1890  driver.includeFile(tmp);
1891 }
1892  YY_BREAK
1893 case YY_STATE_EOF(DIR_ENTER):
1895 case YY_STATE_EOF(DIR_EXIT):
1896 #line 159 "agent_lexer.ll"
1897 {
1898  isc_throw(ParseError, "Directive not closed.");
1899 }
1900  YY_BREAK
1901 case 9:
1903 #line 162 "agent_lexer.ll"
1904 BEGIN(INITIAL);
1905  YY_BREAK
1906 case 10:
1908 #line 165 "agent_lexer.ll"
1909 {
1910  /* Ok, we found a with space. Let's ignore it and update loc variable. */
1911  driver.loc_.step();
1912 }
1913  YY_BREAK
1914 case 11:
1915 /* rule 11 can match eol */
1917 #line 170 "agent_lexer.ll"
1918 {
1919  /* Newline found. Let's update the location and continue. */
1920  driver.loc_.lines(yyleng);
1921  driver.loc_.step();
1922 }
1923  YY_BREAK
1924 case 12:
1926 #line 177 "agent_lexer.ll"
1927 {
1928  switch(driver.ctx_) {
1929  case ParserContext::CONFIG:
1930  return AgentParser::make_CONTROL_AGENT(driver.loc_);
1931  default:
1932  return AgentParser::make_STRING("Control-agent", driver.loc_);
1933  }
1934 }
1935  YY_BREAK
1936 case 13:
1938 #line 186 "agent_lexer.ll"
1939 {
1940  switch(driver.ctx_) {
1941  case ParserContext::AGENT:
1942  return AgentParser::make_HTTP_HOST(driver.loc_);
1943  default:
1944  return AgentParser::make_STRING("http-host", driver.loc_);
1945  }
1946 }
1947  YY_BREAK
1948 case 14:
1950 #line 195 "agent_lexer.ll"
1951 {
1952  switch(driver.ctx_) {
1953  case ParserContext::AGENT:
1954  return AgentParser::make_HTTP_PORT(driver.loc_);
1955  default:
1956  return AgentParser::make_STRING("http-port", driver.loc_);
1957  }
1958 }
1959  YY_BREAK
1960 case 15:
1962 #line 204 "agent_lexer.ll"
1963 {
1964  switch(driver.ctx_) {
1965  case ParserContext::AGENT:
1966  case ParserContext::SERVER:
1967  case ParserContext::LOGGERS:
1968  return AgentParser::make_USER_CONTEXT(driver.loc_);
1969  default:
1970  return AgentParser::make_STRING("user-context", driver.loc_);
1971  }
1972 }
1973  YY_BREAK
1974 case 16:
1976 #line 215 "agent_lexer.ll"
1977 {
1978  switch(driver.ctx_) {
1979  case ParserContext::AGENT:
1980  case ParserContext::SERVER:
1981  case ParserContext::LOGGERS:
1982  return AgentParser::make_COMMENT(driver.loc_);
1983  default:
1984  return AgentParser::make_STRING("comment", driver.loc_);
1985  }
1986 }
1987  YY_BREAK
1988 case 17:
1990 #line 226 "agent_lexer.ll"
1991 {
1992  switch(driver.ctx_) {
1993  case ParserContext::AGENT:
1994  return AgentParser::make_CONTROL_SOCKETS(driver.loc_);
1995  default:
1996  return AgentParser::make_STRING("control-sockets", driver.loc_);
1997  }
1998 }
1999  YY_BREAK
2000 case 18:
2002 #line 235 "agent_lexer.ll"
2003 {
2004  switch(driver.ctx_) {
2005  case ParserContext::CONTROL_SOCKETS:
2006  return AgentParser::make_DHCP4_SERVER(driver.loc_);
2007  default:
2008  return AgentParser::make_STRING("dhcp4", driver.loc_);
2009  }
2010 }
2011  YY_BREAK
2012 case 19:
2014 #line 244 "agent_lexer.ll"
2015 {
2016  switch(driver.ctx_) {
2017  case ParserContext::CONTROL_SOCKETS:
2018  return AgentParser::make_DHCP6_SERVER(driver.loc_);
2019  default:
2020  return AgentParser::make_STRING("dhcp6", driver.loc_);
2021  }
2022 }
2023  YY_BREAK
2024 case 20:
2026 #line 253 "agent_lexer.ll"
2027 {
2028  switch(driver.ctx_) {
2029  case ParserContext::CONTROL_SOCKETS:
2030  return AgentParser::make_D2_SERVER(driver.loc_);
2031  default:
2032  return AgentParser::make_STRING("d2", driver.loc_);
2033  }
2034 }
2035  YY_BREAK
2036 case 21:
2038 #line 262 "agent_lexer.ll"
2039 {
2040  switch(driver.ctx_) {
2041  case ParserContext::SERVER:
2042  return AgentParser::make_SOCKET_NAME(driver.loc_);
2043  default:
2044  return AgentParser::make_STRING("socket-name", driver.loc_);
2045  }
2046 }
2047  YY_BREAK
2048 case 22:
2050 #line 271 "agent_lexer.ll"
2051 {
2052  switch(driver.ctx_) {
2053  case ParserContext::SERVER:
2054  return AgentParser::make_SOCKET_TYPE(driver.loc_);
2055  default:
2056  return AgentParser::make_STRING("socket-type", driver.loc_);
2057  }
2058 }
2059  YY_BREAK
2060 case 23:
2062 #line 280 "agent_lexer.ll"
2063 {
2064  switch(driver.ctx_) {
2065  case ParserContext::SOCKET_TYPE:
2066  return AgentParser::make_UNIX(driver.loc_);
2067  default:
2068  return AgentParser::make_STRING("unix", driver.loc_);
2069  }
2070 }
2071  YY_BREAK
2072 case 24:
2074 #line 289 "agent_lexer.ll"
2075 {
2076  switch(driver.ctx_) {
2077  case ParserContext::AGENT:
2078  return AgentParser::make_HOOKS_LIBRARIES(driver.loc_);
2079  default:
2080  return AgentParser::make_STRING("hooks-libraries", driver.loc_);
2081  }
2082 }
2083  YY_BREAK
2084 case 25:
2086 #line 298 "agent_lexer.ll"
2087 {
2088  switch(driver.ctx_) {
2089  case ParserContext::HOOKS_LIBRARIES:
2090  return AgentParser::make_LIBRARY(driver.loc_);
2091  default:
2092  return AgentParser::make_STRING("library", driver.loc_);
2093  }
2094 }
2095  YY_BREAK
2096 case 26:
2098 #line 307 "agent_lexer.ll"
2099 {
2100  switch(driver.ctx_) {
2101  case ParserContext::HOOKS_LIBRARIES:
2102  return AgentParser::make_PARAMETERS(driver.loc_);
2103  default:
2104  return AgentParser::make_STRING("parameters", driver.loc_);
2105  }
2106 }
2107  YY_BREAK
2108 case 27:
2110 #line 316 "agent_lexer.ll"
2111 {
2112  switch(driver.ctx_) {
2113  case ParserContext::CONFIG:
2114  return AgentParser::make_LOGGING(driver.loc_);
2115  default:
2116  return AgentParser::make_STRING("Logging", driver.loc_);
2117  }
2118 }
2119  YY_BREAK
2120 case 28:
2122 #line 325 "agent_lexer.ll"
2123 {
2124  switch(driver.ctx_) {
2125  case ParserContext::LOGGING:
2126  return AgentParser::make_LOGGERS(driver.loc_);
2127  default:
2128  return AgentParser::make_STRING("loggers", driver.loc_);
2129  }
2130 }
2131  YY_BREAK
2132 case 29:
2134 #line 334 "agent_lexer.ll"
2135 {
2136  switch(driver.ctx_) {
2137  case ParserContext::LOGGERS:
2138  return AgentParser::make_NAME(driver.loc_);
2139  default:
2140  return AgentParser::make_STRING("name", driver.loc_);
2141  }
2142 }
2143  YY_BREAK
2144 case 30:
2146 #line 343 "agent_lexer.ll"
2147 {
2148  switch(driver.ctx_) {
2149  case ParserContext::LOGGERS:
2150  return AgentParser::make_OUTPUT_OPTIONS(driver.loc_);
2151  default:
2152  return AgentParser::make_STRING("output_options", driver.loc_);
2153  }
2154 }
2155  YY_BREAK
2156 case 31:
2158 #line 352 "agent_lexer.ll"
2159 {
2160  switch(driver.ctx_) {
2161  case ParserContext::OUTPUT_OPTIONS:
2162  return AgentParser::make_OUTPUT(driver.loc_);
2163  default:
2164  return AgentParser::make_STRING("output", driver.loc_);
2165  }
2166 }
2167  YY_BREAK
2168 case 32:
2170 #line 361 "agent_lexer.ll"
2171 {
2172  switch(driver.ctx_) {
2173  case ParserContext::OUTPUT_OPTIONS:
2174  return AgentParser::make_FLUSH(driver.loc_);
2175  default:
2176  return AgentParser::make_STRING("flush", driver.loc_);
2177  }
2178 }
2179  YY_BREAK
2180 case 33:
2182 #line 370 "agent_lexer.ll"
2183 {
2184  switch(driver.ctx_) {
2185  case ParserContext::OUTPUT_OPTIONS:
2186  return AgentParser::make_MAXSIZE(driver.loc_);
2187  default:
2188  return AgentParser::make_STRING("maxsize", driver.loc_);
2189  }
2190 }
2191  YY_BREAK
2192 case 34:
2194 #line 379 "agent_lexer.ll"
2195 {
2196  switch(driver.ctx_) {
2197  case ParserContext::OUTPUT_OPTIONS:
2198  return AgentParser::make_MAXVER(driver.loc_);
2199  default:
2200  return AgentParser::make_STRING("maxver", driver.loc_);
2201  }
2202 }
2203  YY_BREAK
2204 case 35:
2206 #line 388 "agent_lexer.ll"
2207 {
2208  switch(driver.ctx_) {
2209  case ParserContext::LOGGERS:
2210  return AgentParser::make_DEBUGLEVEL(driver.loc_);
2211  default:
2212  return AgentParser::make_STRING("debuglevel", driver.loc_);
2213  }
2214 }
2215  YY_BREAK
2216 case 36:
2218 #line 397 "agent_lexer.ll"
2219 {
2220  switch(driver.ctx_) {
2221  case ParserContext::LOGGERS:
2222  return AgentParser::make_SEVERITY(driver.loc_);
2223  default:
2224  return AgentParser::make_STRING("severity", driver.loc_);
2225  }
2226 }
2227  YY_BREAK
2228 case 37:
2230 #line 406 "agent_lexer.ll"
2231 {
2232  switch(driver.ctx_) {
2233  case ParserContext::CONFIG:
2234  return AgentParser::make_DHCP4(driver.loc_);
2235  default:
2236  return AgentParser::make_STRING("Dhcp4", driver.loc_);
2237  }
2238 }
2239  YY_BREAK
2240 case 38:
2242 #line 415 "agent_lexer.ll"
2243 {
2244  switch(driver.ctx_) {
2245  case ParserContext::CONFIG:
2246  return AgentParser::make_DHCP6(driver.loc_);
2247  default:
2248  return AgentParser::make_STRING("Dhcp6", driver.loc_);
2249  }
2250 }
2251  YY_BREAK
2252 case 39:
2254 #line 424 "agent_lexer.ll"
2255 {
2256  switch(driver.ctx_) {
2257  case ParserContext::CONFIG:
2258  return AgentParser::make_DHCPDDNS(driver.loc_);
2259  default:
2260  return AgentParser::make_STRING("DhcpDdns", driver.loc_);
2261  }
2262 }
2263  YY_BREAK
2264 case 40:
2266 #line 433 "agent_lexer.ll"
2267 {
2268  /* A string has been matched. It contains the actual string and single quotes.
2269  We need to get those quotes out of the way and just use its content, e.g.
2270  for 'foo' we should get foo */
2271  std::string raw(yytext+1);
2272  size_t len = raw.size() - 1;
2273  raw.resize(len);
2274  std::string decoded;
2275  decoded.reserve(len);
2276  for (size_t pos = 0; pos < len; ++pos) {
2277  int b = 0;
2278  char c = raw[pos];
2279  switch (c) {
2280  case '"':
2281  /* impossible condition */
2282  driver.error(driver.loc_, "Bad quote in \"" + raw + "\"");
2283  break;
2284  case '\\':
2285  ++pos;
2286  if (pos >= len) {
2287  /* impossible condition */
2288  driver.error(driver.loc_, "Overflow escape in \"" + raw + "\"");
2289  }
2290  c = raw[pos];
2291  switch (c) {
2292  case '"':
2293  case '\\':
2294  case '/':
2295  decoded.push_back(c);
2296  break;
2297  case 'b':
2298  decoded.push_back('\b');
2299  break;
2300  case 'f':
2301  decoded.push_back('\f');
2302  break;
2303  case 'n':
2304  decoded.push_back('\n');
2305  break;
2306  case 'r':
2307  decoded.push_back('\r');
2308  break;
2309  case 't':
2310  decoded.push_back('\t');
2311  break;
2312  case 'u':
2313  /* support only \u0000 to \u00ff */
2314  ++pos;
2315  if (pos + 4 > len) {
2316  /* impossible condition */
2317  driver.error(driver.loc_,
2318  "Overflow unicode escape in \"" + raw + "\"");
2319  }
2320  if ((raw[pos] != '0') || (raw[pos + 1] != '0')) {
2321  driver.error(driver.loc_, "Unsupported unicode escape in \"" + raw + "\"");
2322  }
2323  pos += 2;
2324  c = raw[pos];
2325  if ((c >= '0') && (c <= '9')) {
2326  b = (c - '0') << 4;
2327  } else if ((c >= 'A') && (c <= 'F')) {
2328  b = (c - 'A' + 10) << 4;
2329  } else if ((c >= 'a') && (c <= 'f')) {
2330  b = (c - 'a' + 10) << 4;
2331  } else {
2332  /* impossible condition */
2333  driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
2334  }
2335  pos++;
2336  c = raw[pos];
2337  if ((c >= '0') && (c <= '9')) {
2338  b |= c - '0';
2339  } else if ((c >= 'A') && (c <= 'F')) {
2340  b |= c - 'A' + 10;
2341  } else if ((c >= 'a') && (c <= 'f')) {
2342  b |= c - 'a' + 10;
2343  } else {
2344  /* impossible condition */
2345  driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\"");
2346  }
2347  decoded.push_back(static_cast<char>(b & 0xff));
2348  break;
2349  default:
2350  /* impossible condition */
2351  driver.error(driver.loc_, "Bad escape in \"" + raw + "\"");
2352  }
2353  break;
2354  default:
2355  if ((c >= 0) && (c < 0x20)) {
2356  /* impossible condition */
2357  driver.error(driver.loc_, "Invalid control in \"" + raw + "\"");
2358  }
2359  decoded.push_back(c);
2360  }
2361  }
2362 
2363  return AgentParser::make_STRING(decoded, driver.loc_);
2364 }
2365  YY_BREAK
2366 case 41:
2367 /* rule 41 can match eol */
2369 #line 532 "agent_lexer.ll"
2370 {
2371  /* Bad string with a forbidden control character inside */
2372  driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
2373 }
2374  YY_BREAK
2375 case 42:
2376 /* rule 42 can match eol */
2378 #line 537 "agent_lexer.ll"
2379 {
2380  /* Bad string with a bad escape inside */
2381  driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
2382 }
2383  YY_BREAK
2384 case 43:
2386 #line 542 "agent_lexer.ll"
2387 {
2388  /* Bad string with an open escape at the end */
2389  driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
2390 }
2391  YY_BREAK
2392 case 44:
2394 #line 547 "agent_lexer.ll"
2395 { return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
2396  YY_BREAK
2397 case 45:
2399 #line 548 "agent_lexer.ll"
2400 { return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
2401  YY_BREAK
2402 case 46:
2404 #line 549 "agent_lexer.ll"
2405 { return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
2406  YY_BREAK
2407 case 47:
2409 #line 550 "agent_lexer.ll"
2410 { return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
2411  YY_BREAK
2412 case 48:
2414 #line 551 "agent_lexer.ll"
2415 { return AgentParser::make_COMMA(driver.loc_); }
2416  YY_BREAK
2417 case 49:
2419 #line 552 "agent_lexer.ll"
2420 { return AgentParser::make_COLON(driver.loc_); }
2421  YY_BREAK
2422 case 50:
2424 #line 554 "agent_lexer.ll"
2425 {
2426  /* An integer was found. */
2427  std::string tmp(yytext);
2428  int64_t integer = 0;
2429  try {
2430  /* In substring we want to use negative values (e.g. -1).
2431  In enterprise-id we need to use values up to 0xffffffff.
2432  To cover both of those use cases, we need at least
2433  int64_t. */
2434  integer = boost::lexical_cast<int64_t>(tmp);
2435  } catch (const boost::bad_lexical_cast &) {
2436  driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer.");
2437  }
2438 
2439  /* The parser needs the string form as double conversion is no lossless */
2440  return AgentParser::make_INTEGER(integer, driver.loc_);
2441 }
2442  YY_BREAK
2443 case 51:
2445 #line 572 "agent_lexer.ll"
2446 {
2447  /* A floating point was found. */
2448  std::string tmp(yytext);
2449  double fp = 0.0;
2450  try {
2451  fp = boost::lexical_cast<double>(tmp);
2452  } catch (const boost::bad_lexical_cast &) {
2453  driver.error(driver.loc_, "Failed to convert " + tmp + " to a floating point.");
2454  }
2455 
2456  return AgentParser::make_FLOAT(fp, driver.loc_);
2457 }
2458  YY_BREAK
2459 case 52:
2461 #line 585 "agent_lexer.ll"
2462 {
2463  string tmp(yytext);
2464  return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
2465 }
2466  YY_BREAK
2467 case 53:
2469 #line 590 "agent_lexer.ll"
2470 {
2471  return AgentParser::make_NULL_TYPE(driver.loc_);
2472 }
2473  YY_BREAK
2474 case 54:
2476 #line 594 "agent_lexer.ll"
2477 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
2478  YY_BREAK
2479 case 55:
2481 #line 596 "agent_lexer.ll"
2482 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
2483  YY_BREAK
2484 case 56:
2486 #line 598 "agent_lexer.ll"
2487 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
2488  YY_BREAK
2489 case 57:
2491 #line 600 "agent_lexer.ll"
2492 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
2493  YY_BREAK
2494 case YY_STATE_EOF(INITIAL):
2495 #line 602 "agent_lexer.ll"
2496 {
2497  if (driver.states_.empty()) {
2498  return AgentParser::make_END(driver.loc_);
2499  }
2500  driver.loc_ = driver.locs_.back();
2501  driver.locs_.pop_back();
2502  driver.file_ = driver.files_.back();
2503  driver.files_.pop_back();
2504  if (driver.sfile_) {
2505  fclose(driver.sfile_);
2506  driver.sfile_ = 0;
2507  }
2508  if (!driver.sfiles_.empty()) {
2509  driver.sfile_ = driver.sfiles_.back();
2510  driver.sfiles_.pop_back();
2511  }
2512  agent__delete_buffer(YY_CURRENT_BUFFER);
2513  agent__switch_to_buffer(driver.states_.back());
2514  driver.states_.pop_back();
2515 
2516  BEGIN(DIR_EXIT);
2517 }
2518  YY_BREAK
2519 case 58:
2521 #line 625 "agent_lexer.ll"
2522 ECHO;
2523  YY_BREAK
2524 #line 2524 "agent_lexer.cc"
2525 
2526  case YY_END_OF_BUFFER:
2527  {
2528  /* Amount of text matched not including the EOB char. */
2529  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2530 
2531  /* Undo the effects of YY_DO_BEFORE_ACTION. */
2532  *yy_cp = (yy_hold_char);
2534 
2535  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2536  {
2537  /* We're scanning a new file or input source. It's
2538  * possible that this happened because the user
2539  * just pointed yyin at a new source and called
2540  * yylex(). If so, then we have to assure
2541  * consistency between YY_CURRENT_BUFFER and our
2542  * globals. Here is the right place to do so, because
2543  * this is the first action (other than possibly a
2544  * back-up) that will match for the new input source.
2545  */
2546  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2547 /* %if-c-only */
2548  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2549 /* %endif */
2550 /* %if-c++-only */
2551 /* %endif */
2552  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2553  }
2554 
2555  /* Note that here we test for yy_c_buf_p "<=" to the position
2556  * of the first EOB in the buffer, since yy_c_buf_p will
2557  * already have been incremented past the NUL character
2558  * (since all states make transitions on EOB to the
2559  * end-of-buffer state). Contrast this with the test
2560  * in input().
2561  */
2562  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2563  { /* This was really a NUL. */
2564  yy_state_type yy_next_state;
2565 
2566  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2567 
2568  yy_current_state = yy_get_previous_state( );
2569 
2570  /* Okay, we're now positioned to make the NUL
2571  * transition. We couldn't have
2572  * yy_get_previous_state() go ahead and do it
2573  * for us because it doesn't know how to deal
2574  * with the possibility of jamming (and we don't
2575  * want to build jamming into it because then it
2576  * will run more slowly).
2577  */
2578 
2579  yy_next_state = yy_try_NUL_trans( yy_current_state );
2580 
2582 
2583  if ( yy_next_state )
2584  {
2585  /* Consume the NUL. */
2586  yy_cp = ++(yy_c_buf_p);
2587  yy_current_state = yy_next_state;
2588  goto yy_match;
2589  }
2590 
2591  else
2592  {
2593 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2594  yy_cp = (yy_last_accepting_cpos);
2595  yy_current_state = (yy_last_accepting_state);
2596  goto yy_find_action;
2597  }
2598  }
2599 
2600  else switch ( yy_get_next_buffer( ) )
2601  {
2602  case EOB_ACT_END_OF_FILE:
2603  {
2604  (yy_did_buffer_switch_on_eof) = 0;
2605 
2606  if ( yywrap( ) )
2607  {
2608  /* Note: because we've taken care in
2609  * yy_get_next_buffer() to have set up
2610  * yytext, we can now set up
2611  * yy_c_buf_p so that if some total
2612  * hoser (like flex itself) wants to
2613  * call the scanner after we return the
2614  * YY_NULL, it'll still work - another
2615  * YY_NULL will get returned.
2616  */
2617  (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2618 
2620  goto do_action;
2621  }
2622 
2623  else
2624  {
2625  if ( ! (yy_did_buffer_switch_on_eof) )
2626  YY_NEW_FILE;
2627  }
2628  break;
2629  }
2630 
2631  case EOB_ACT_CONTINUE_SCAN:
2632  (yy_c_buf_p) =
2633  (yytext_ptr) + yy_amount_of_matched_text;
2634 
2635  yy_current_state = yy_get_previous_state( );
2636 
2637  yy_cp = (yy_c_buf_p);
2639  goto yy_match;
2640 
2641  case EOB_ACT_LAST_MATCH:
2642  (yy_c_buf_p) =
2643  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2644 
2645  yy_current_state = yy_get_previous_state( );
2646 
2647  yy_cp = (yy_c_buf_p);
2649  goto yy_find_action;
2650  }
2651  break;
2652  }
2653 
2654  default:
2656  "fatal flex scanner internal error--no action found" );
2657  } /* end of action switch */
2658  } /* end of scanning one token */
2659  } /* end of user's declarations */
2660 } /* end of yylex */
2661 /* %ok-for-header */
2662 
2663 /* %if-c++-only */
2664 /* %not-for-header */
2665 /* %ok-for-header */
2666 
2667 /* %endif */
2668 
2669 /* yy_get_next_buffer - try to read in a new buffer
2670  *
2671  * Returns a code representing an action:
2672  * EOB_ACT_LAST_MATCH -
2673  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2674  * EOB_ACT_END_OF_FILE - end of file
2675  */
2676 /* %if-c-only */
2677 static int yy_get_next_buffer (void)
2678 /* %endif */
2679 /* %if-c++-only */
2680 /* %endif */
2681 {
2682  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2683  char *source = (yytext_ptr);
2684  int number_to_move, i;
2685  int ret_val;
2686 
2687  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2689  "fatal flex scanner internal error--end of buffer missed" );
2690 
2691  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2692  { /* Don't try to fill the buffer, so this is an EOF. */
2693  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2694  {
2695  /* We matched a single character, the EOB, so
2696  * treat this as a final EOF.
2697  */
2698  return EOB_ACT_END_OF_FILE;
2699  }
2700 
2701  else
2702  {
2703  /* We matched some text prior to the EOB, first
2704  * process it.
2705  */
2706  return EOB_ACT_LAST_MATCH;
2707  }
2708  }
2709 
2710  /* Try to read more data. */
2711 
2712  /* First move last chars to start of buffer. */
2713  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
2714 
2715  for ( i = 0; i < number_to_move; ++i )
2716  *(dest++) = *(source++);
2717 
2718  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2719  /* don't do the read, it's not guaranteed to return an EOF,
2720  * just force an EOF
2721  */
2722  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2723 
2724  else
2725  {
2726  int num_to_read =
2727  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2728 
2729  while ( num_to_read <= 0 )
2730  { /* Not enough room in the buffer - grow it. */
2731 
2732  /* just a shorter name for the current buffer */
2734 
2735  int yy_c_buf_p_offset =
2736  (int) ((yy_c_buf_p) - b->yy_ch_buf);
2737 
2738  if ( b->yy_is_our_buffer )
2739  {
2740  int new_size = b->yy_buf_size * 2;
2741 
2742  if ( new_size <= 0 )
2743  b->yy_buf_size += b->yy_buf_size / 8;
2744  else
2745  b->yy_buf_size *= 2;
2746 
2747  b->yy_ch_buf = (char *)
2748  /* Include room in for 2 EOB chars. */
2749  yyrealloc( (void *) b->yy_ch_buf,
2750  (yy_size_t) (b->yy_buf_size + 2) );
2751  }
2752  else
2753  /* Can't grow it, we don't own it. */
2754  b->yy_ch_buf = NULL;
2755 
2756  if ( ! b->yy_ch_buf )
2758  "fatal error - scanner input buffer overflow" );
2759 
2760  (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2761 
2762  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2763  number_to_move - 1;
2764 
2765  }
2766 
2767  if ( num_to_read > YY_READ_BUF_SIZE )
2768  num_to_read = YY_READ_BUF_SIZE;
2769 
2770  /* Read in more data. */
2771  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2772  (yy_n_chars), num_to_read );
2773 
2774  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2775  }
2776 
2777  if ( (yy_n_chars) == 0 )
2778  {
2779  if ( number_to_move == YY_MORE_ADJ )
2780  {
2781  ret_val = EOB_ACT_END_OF_FILE;
2782  yyrestart( yyin );
2783  }
2784 
2785  else
2786  {
2787  ret_val = EOB_ACT_LAST_MATCH;
2788  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2790  }
2791  }
2792 
2793  else
2794  ret_val = EOB_ACT_CONTINUE_SCAN;
2795 
2796  if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2797  /* Extend the array by 50%, plus the number we really need. */
2798  int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2799  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
2800  (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
2801  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2802  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2803  /* "- 2" to take care of EOB's */
2804  YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
2805  }
2806 
2807  (yy_n_chars) += number_to_move;
2808  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2809  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2810 
2811  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2812 
2813  return ret_val;
2814 }
2815 
2816 /* yy_get_previous_state - get the state just before the EOB char was reached */
2817 
2818 /* %if-c-only */
2819 /* %not-for-header */
2820  static yy_state_type yy_get_previous_state (void)
2821 /* %endif */
2822 /* %if-c++-only */
2823 /* %endif */
2824 {
2825  yy_state_type yy_current_state;
2826  char *yy_cp;
2827 
2828 /* %% [15.0] code to get the start state into yy_current_state goes here */
2829  yy_current_state = (yy_start);
2830 
2831  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2832  {
2833 /* %% [16.0] code to find the next state goes here */
2834  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2835  if ( yy_accept[yy_current_state] )
2836  {
2837  (yy_last_accepting_state) = yy_current_state;
2838  (yy_last_accepting_cpos) = yy_cp;
2839  }
2840  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2841  {
2842  yy_current_state = (int) yy_def[yy_current_state];
2843  if ( yy_current_state >= 320 )
2844  yy_c = yy_meta[yy_c];
2845  }
2846  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2847  }
2848 
2849  return yy_current_state;
2850 }
2851 
2852 /* yy_try_NUL_trans - try to make a transition on the NUL character
2853  *
2854  * synopsis
2855  * next_state = yy_try_NUL_trans( current_state );
2856  */
2857 /* %if-c-only */
2858  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2859 /* %endif */
2860 /* %if-c++-only */
2861 /* %endif */
2862 {
2863  int yy_is_jam;
2864  /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2865  char *yy_cp = (yy_c_buf_p);
2866 
2867  YY_CHAR yy_c = 1;
2868  if ( yy_accept[yy_current_state] )
2869  {
2870  (yy_last_accepting_state) = yy_current_state;
2871  (yy_last_accepting_cpos) = yy_cp;
2872  }
2873  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2874  {
2875  yy_current_state = (int) yy_def[yy_current_state];
2876  if ( yy_current_state >= 320 )
2877  yy_c = yy_meta[yy_c];
2878  }
2879  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2880  yy_is_jam = (yy_current_state == 319);
2881 
2882  return yy_is_jam ? 0 : yy_current_state;
2883 }
2884 
2885 #ifndef YY_NO_UNPUT
2886 /* %if-c-only */
2887 
2888 /* %endif */
2889 #endif
2890 
2891 /* %if-c-only */
2892 #ifndef YY_NO_INPUT
2893 #ifdef __cplusplus
2894  static int yyinput (void)
2895 #else
2896  static int input (void)
2897 #endif
2898 
2899 /* %endif */
2900 /* %if-c++-only */
2901 /* %endif */
2902 {
2903  int c;
2904 
2905  *(yy_c_buf_p) = (yy_hold_char);
2906 
2907  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2908  {
2909  /* yy_c_buf_p now points to the character we want to return.
2910  * If this occurs *before* the EOB characters, then it's a
2911  * valid NUL; if not, then we've hit the end of the buffer.
2912  */
2913  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2914  /* This was really a NUL. */
2915  *(yy_c_buf_p) = '\0';
2916 
2917  else
2918  { /* need more input */
2919  int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
2920  ++(yy_c_buf_p);
2921 
2922  switch ( yy_get_next_buffer( ) )
2923  {
2924  case EOB_ACT_LAST_MATCH:
2925  /* This happens because yy_g_n_b()
2926  * sees that we've accumulated a
2927  * token and flags that we need to
2928  * try matching the token before
2929  * proceeding. But for input(),
2930  * there's no matching to consider.
2931  * So convert the EOB_ACT_LAST_MATCH
2932  * to EOB_ACT_END_OF_FILE.
2933  */
2934 
2935  /* Reset buffer status. */
2936  yyrestart( yyin );
2937 
2938  /*FALLTHROUGH*/
2939 
2940  case EOB_ACT_END_OF_FILE:
2941  {
2942  if ( yywrap( ) )
2943  return 0;
2944 
2945  if ( ! (yy_did_buffer_switch_on_eof) )
2946  YY_NEW_FILE;
2947 #ifdef __cplusplus
2948  return yyinput();
2949 #else
2950  return input();
2951 #endif
2952  }
2953 
2954  case EOB_ACT_CONTINUE_SCAN:
2955  (yy_c_buf_p) = (yytext_ptr) + offset;
2956  break;
2957  }
2958  }
2959  }
2960 
2961  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2962  *(yy_c_buf_p) = '\0'; /* preserve yytext */
2963  (yy_hold_char) = *++(yy_c_buf_p);
2964 
2965 /* %% [19.0] update BOL and yylineno */
2966 
2967  return c;
2968 }
2969 /* %if-c-only */
2970 #endif /* ifndef YY_NO_INPUT */
2971 /* %endif */
2972 
2978 /* %if-c-only */
2979  void yyrestart (FILE * input_file )
2980 /* %endif */
2981 /* %if-c++-only */
2982 /* %endif */
2983 {
2984 
2985  if ( ! YY_CURRENT_BUFFER ){
2989  }
2990 
2991  yy_init_buffer( YY_CURRENT_BUFFER, input_file );
2993 }
2994 
2995 /* %if-c++-only */
2996 /* %endif */
2997 
3002 /* %if-c-only */
3004 /* %endif */
3005 /* %if-c++-only */
3006 /* %endif */
3007 {
3008 
3009  /* TODO. We should be able to replace this entire function body
3010  * with
3011  * yypop_buffer_state();
3012  * yypush_buffer_state(new_buffer);
3013  */
3015  if ( YY_CURRENT_BUFFER == new_buffer )
3016  return;
3017 
3018  if ( YY_CURRENT_BUFFER )
3019  {
3020  /* Flush out information for old buffer. */
3021  *(yy_c_buf_p) = (yy_hold_char);
3022  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3023  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3024  }
3025 
3026  YY_CURRENT_BUFFER_LVALUE = new_buffer;
3028 
3029  /* We don't actually know whether we did this switch during
3030  * EOF (yywrap()) processing, but the only time this flag
3031  * is looked at is after yywrap() is called, so it's safe
3032  * to go ahead and always set it.
3033  */
3034  (yy_did_buffer_switch_on_eof) = 1;
3035 }
3036 
3037 /* %if-c-only */
3038 static void yy_load_buffer_state (void)
3039 /* %endif */
3040 /* %if-c++-only */
3041 /* %endif */
3042 {
3043  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3044  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3045 /* %if-c-only */
3046  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3047 /* %endif */
3048 /* %if-c++-only */
3049 /* %endif */
3050  (yy_hold_char) = *(yy_c_buf_p);
3051 }
3052 
3059 /* %if-c-only */
3060  YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
3061 /* %endif */
3062 /* %if-c++-only */
3063 /* %endif */
3064 {
3065  YY_BUFFER_STATE b;
3066 
3067  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3068  if ( ! b )
3069  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3070 
3071  b->yy_buf_size = size;
3072 
3073  /* yy_ch_buf has to be 2 characters longer than the size given because
3074  * we need to put in 2 end-of-buffer characters.
3075  */
3076  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
3077  if ( ! b->yy_ch_buf )
3078  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3079 
3080  b->yy_is_our_buffer = 1;
3081 
3082  yy_init_buffer( b, file );
3083 
3084  return b;
3085 }
3086 
3087 /* %if-c++-only */
3088 /* %endif */
3089 
3094 /* %if-c-only */
3096 /* %endif */
3097 /* %if-c++-only */
3098 /* %endif */
3099 {
3100 
3101  if ( ! b )
3102  return;
3103 
3104  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3106 
3107  if ( b->yy_is_our_buffer )
3108  yyfree( (void *) b->yy_ch_buf );
3109 
3110  yyfree( (void *) b );
3111 }
3112 
3113 /* Initializes or reinitializes a buffer.
3114  * This function is sometimes called more than once on the same buffer,
3115  * such as during a yyrestart() or at EOF.
3116  */
3117 /* %if-c-only */
3118  static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3119 /* %endif */
3120 /* %if-c++-only */
3121 /* %endif */
3122 
3123 {
3124  int oerrno = errno;
3125 
3126  yy_flush_buffer( b );
3127 
3128 /* %if-c-only */
3129  b->yy_input_file = file;
3130 /* %endif */
3131 /* %if-c++-only */
3132 /* %endif */
3133  b->yy_fill_buffer = 1;
3134 
3135  /* If b is the current buffer, then yy_init_buffer was _probably_
3136  * called from yyrestart() or through yy_get_next_buffer.
3137  * In that case, we don't want to reset the lineno or column.
3138  */
3139  if (b != YY_CURRENT_BUFFER){
3140  b->yy_bs_lineno = 1;
3141  b->yy_bs_column = 0;
3142  }
3143 
3144 /* %if-c-only */
3145 
3146  b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3147 
3148 /* %endif */
3149 /* %if-c++-only */
3150 /* %endif */
3151  errno = oerrno;
3152 }
3153 
3158 /* %if-c-only */
3160 /* %endif */
3161 /* %if-c++-only */
3162 /* %endif */
3163 {
3164  if ( ! b )
3165  return;
3166 
3167  b->yy_n_chars = 0;
3168 
3169  /* We always need two end-of-buffer characters. The first causes
3170  * a transition to the end-of-buffer state. The second causes
3171  * a jam in that state.
3172  */
3175 
3176  b->yy_buf_pos = &b->yy_ch_buf[0];
3177 
3178  b->yy_at_bol = 1;
3180 
3181  if ( b == YY_CURRENT_BUFFER )
3183 }
3184 
3185 /* %if-c-or-c++ */
3192 /* %if-c-only */
3194 /* %endif */
3195 /* %if-c++-only */
3196 /* %endif */
3197 {
3198  if (new_buffer == NULL)
3199  return;
3200 
3202 
3203  /* This block is copied from yy_switch_to_buffer. */
3204  if ( YY_CURRENT_BUFFER )
3205  {
3206  /* Flush out information for old buffer. */
3207  *(yy_c_buf_p) = (yy_hold_char);
3208  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3209  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3210  }
3211 
3212  /* Only push if top exists. Otherwise, replace top. */
3213  if (YY_CURRENT_BUFFER)
3214  (yy_buffer_stack_top)++;
3215  YY_CURRENT_BUFFER_LVALUE = new_buffer;
3216 
3217  /* copied from yy_switch_to_buffer. */
3219  (yy_did_buffer_switch_on_eof) = 1;
3220 }
3221 /* %endif */
3222 
3223 /* %if-c-or-c++ */
3228 /* %if-c-only */
3230 /* %endif */
3231 /* %if-c++-only */
3232 /* %endif */
3233 {
3234  if (!YY_CURRENT_BUFFER)
3235  return;
3236 
3238  YY_CURRENT_BUFFER_LVALUE = NULL;
3239  if ((yy_buffer_stack_top) > 0)
3240  --(yy_buffer_stack_top);
3241 
3242  if (YY_CURRENT_BUFFER) {
3244  (yy_did_buffer_switch_on_eof) = 1;
3245  }
3246 }
3247 /* %endif */
3248 
3249 /* %if-c-or-c++ */
3250 /* Allocates the stack if it does not exist.
3251  * Guarantees space for at least one push.
3252  */
3253 /* %if-c-only */
3254 static void yyensure_buffer_stack (void)
3255 /* %endif */
3256 /* %if-c++-only */
3257 /* %endif */
3258 {
3259  yy_size_t num_to_alloc;
3260 
3261  if (!(yy_buffer_stack)) {
3262 
3263  /* First allocation is just for 2 elements, since we don't know if this
3264  * scanner will even need a stack. We use 2 instead of 1 to avoid an
3265  * immediate realloc on the next call.
3266  */
3267  num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
3268  (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3269  (num_to_alloc * sizeof(struct yy_buffer_state*)
3270  );
3271  if ( ! (yy_buffer_stack) )
3272  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3273 
3274  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3275 
3276  (yy_buffer_stack_max) = num_to_alloc;
3277  (yy_buffer_stack_top) = 0;
3278  return;
3279  }
3280 
3281  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3282 
3283  /* Increase the buffer to prepare for a possible push. */
3284  yy_size_t grow_size = 8 /* arbitrary grow size */;
3285 
3286  num_to_alloc = (yy_buffer_stack_max) + grow_size;
3287  (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3288  ((yy_buffer_stack),
3289  num_to_alloc * sizeof(struct yy_buffer_state*)
3290  );
3291  if ( ! (yy_buffer_stack) )
3292  YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3293 
3294  /* zero only the new slots.*/
3295  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3296  (yy_buffer_stack_max) = num_to_alloc;
3297  }
3298 }
3299 /* %endif */
3300 
3301 /* %if-c-only */
3309 {
3310  YY_BUFFER_STATE b;
3311 
3312  if ( size < 2 ||
3313  base[size-2] != YY_END_OF_BUFFER_CHAR ||
3314  base[size-1] != YY_END_OF_BUFFER_CHAR )
3315  /* They forgot to leave room for the EOB's. */
3316  return NULL;
3317 
3318  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
3319  if ( ! b )
3320  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3321 
3322  b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
3323  b->yy_buf_pos = b->yy_ch_buf = base;
3324  b->yy_is_our_buffer = 0;
3325  b->yy_input_file = NULL;
3326  b->yy_n_chars = b->yy_buf_size;
3327  b->yy_is_interactive = 0;
3328  b->yy_at_bol = 1;
3329  b->yy_fill_buffer = 0;
3331 
3332  yy_switch_to_buffer( b );
3333 
3334  return b;
3335 }
3336 /* %endif */
3337 
3338 /* %if-c-only */
3347 YY_BUFFER_STATE yy_scan_string (const char * yystr )
3348 {
3349 
3350  return yy_scan_bytes( yystr, (int) strlen(yystr) );
3351 }
3352 /* %endif */
3353 
3354 /* %if-c-only */
3362 YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
3363 {
3364  YY_BUFFER_STATE b;
3365  char *buf;
3366  yy_size_t n;
3367  int i;
3368 
3369  /* Get memory for full buffer, including space for trailing EOB's. */
3370  n = (yy_size_t) (_yybytes_len + 2);
3371  buf = (char *) yyalloc( n );
3372  if ( ! buf )
3373  YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3374 
3375  for ( i = 0; i < _yybytes_len; ++i )
3376  buf[i] = yybytes[i];
3377 
3378  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3379 
3380  b = yy_scan_buffer( buf, n );
3381  if ( ! b )
3382  YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3383 
3384  /* It's okay to grow etc. this buffer, and we should throw it
3385  * away when we're done.
3386  */
3387  b->yy_is_our_buffer = 1;
3388 
3389  return b;
3390 }
3391 /* %endif */
3392 
3393 #ifndef YY_EXIT_FAILURE
3394 #define YY_EXIT_FAILURE 2
3395 #endif
3396 
3397 /* %if-c-only */
3398 static void yynoreturn yy_fatal_error (const char* msg )
3399 {
3400  fprintf( stderr, "%s\n", msg );
3401  exit( YY_EXIT_FAILURE );
3402 }
3403 /* %endif */
3404 /* %if-c++-only */
3405 /* %endif */
3406 
3407 /* Redefine yyless() so it works in section 3 code. */
3408 
3409 #undef yyless
3410 #define yyless(n) \
3411  do \
3412  { \
3413  /* Undo effects of setting up yytext. */ \
3414  int yyless_macro_arg = (n); \
3415  YY_LESS_LINENO(yyless_macro_arg);\
3416  yytext[yyleng] = (yy_hold_char); \
3417  (yy_c_buf_p) = yytext + yyless_macro_arg; \
3418  (yy_hold_char) = *(yy_c_buf_p); \
3419  *(yy_c_buf_p) = '\0'; \
3420  yyleng = yyless_macro_arg; \
3421  } \
3422  while ( 0 )
3423 
3424 /* Accessor methods (get/set functions) to struct members. */
3425 
3426 /* %if-c-only */
3427 /* %if-reentrant */
3428 /* %endif */
3429 
3433 int yyget_lineno (void)
3434 {
3435 
3436  return yylineno;
3437 }
3438 
3442 FILE *yyget_in (void)
3443 {
3444  return yyin;
3445 }
3446 
3450 FILE *yyget_out (void)
3451 {
3452  return yyout;
3453 }
3454 
3458 int yyget_leng (void)
3459 {
3460  return yyleng;
3461 }
3462 
3467 char *yyget_text (void)
3468 {
3469  return yytext;
3470 }
3471 
3472 /* %if-reentrant */
3473 /* %endif */
3474 
3479 void yyset_lineno (int _line_number )
3480 {
3481 
3482  yylineno = _line_number;
3483 }
3484 
3491 void yyset_in (FILE * _in_str )
3492 {
3493  yyin = _in_str ;
3494 }
3495 
3496 void yyset_out (FILE * _out_str )
3497 {
3498  yyout = _out_str ;
3499 }
3500 
3501 int yyget_debug (void)
3502 {
3503  return yy_flex_debug;
3504 }
3505 
3506 void yyset_debug (int _bdebug )
3507 {
3508  yy_flex_debug = _bdebug ;
3509 }
3510 
3511 /* %endif */
3512 
3513 /* %if-reentrant */
3514 /* %if-bison-bridge */
3515 /* %endif */
3516 /* %endif if-c-only */
3517 
3518 /* %if-c-only */
3519 static int yy_init_globals (void)
3520 {
3521  /* Initialization is the same as for the non-reentrant scanner.
3522  * This function is called from yylex_destroy(), so don't allocate here.
3523  */
3524 
3525  (yy_buffer_stack) = NULL;
3526  (yy_buffer_stack_top) = 0;
3527  (yy_buffer_stack_max) = 0;
3528  (yy_c_buf_p) = NULL;
3529  (yy_init) = 0;
3530  (yy_start) = 0;
3531 
3532 /* Defined in main.c */
3533 #ifdef YY_STDINIT
3534  yyin = stdin;
3535  yyout = stdout;
3536 #else
3537  yyin = NULL;
3538  yyout = NULL;
3539 #endif
3540 
3541  /* For future reference: Set errno on error, since we are called by
3542  * yylex_init()
3543  */
3544  return 0;
3545 }
3546 /* %endif */
3547 
3548 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3549 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
3550 int yylex_destroy (void)
3551 {
3552 
3553  /* Pop the buffer stack, destroying each element. */
3554  while(YY_CURRENT_BUFFER){
3556  YY_CURRENT_BUFFER_LVALUE = NULL;
3558  }
3559 
3560  /* Destroy the stack itself. */
3561  yyfree((yy_buffer_stack) );
3562  (yy_buffer_stack) = NULL;
3563 
3564  /* Reset the globals. This is important in a non-reentrant scanner so the next time
3565  * yylex() is called, initialization will occur. */
3566  yy_init_globals( );
3567 
3568 /* %if-reentrant */
3569 /* %endif */
3570  return 0;
3571 }
3572 /* %endif */
3573 
3574 /*
3575  * Internal utility routines.
3576  */
3577 
3578 #ifndef yytext_ptr
3579 static void yy_flex_strncpy (char* s1, const char * s2, int n )
3580 {
3581 
3582  int i;
3583  for ( i = 0; i < n; ++i )
3584  s1[i] = s2[i];
3585 }
3586 #endif
3587 
3588 #ifdef YY_NEED_STRLEN
3589 static int yy_flex_strlen (const char * s )
3590 {
3591  int n;
3592  for ( n = 0; s[n]; ++n )
3593  ;
3594 
3595  return n;
3596 }
3597 #endif
3598 
3599 void *yyalloc (yy_size_t size )
3600 {
3601  return malloc(size);
3602 }
3603 
3604 void *yyrealloc (void * ptr, yy_size_t size )
3605 {
3606 
3607  /* The cast to (char *) in the following accommodates both
3608  * implementations that use char* generic pointers, and those
3609  * that use void* generic pointers. It works with the latter
3610  * because both ANSI C and C++ allow castless assignment from
3611  * any pointer type to void*, and deal with argument conversions
3612  * as though doing an assignment.
3613  */
3614  return realloc(ptr, size);
3615 }
3616 
3617 void yyfree (void * ptr )
3618 {
3619  free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3620 }
3621 
3622 /* %if-tables-serialization definitions */
3623 /* %define-yytables The name for this specific scanner's tables. */
3624 #define YYTABLES_NAME "yytables"
3625 /* %endif */
3626 
3627 /* %ok-for-header */
3628 
3629 #line 625 "agent_lexer.ll"
3630 
3631 
3632 using namespace isc::dhcp;
3633 
3634 void
3635 ParserContext::scanStringBegin(const std::string& str, ParserType parser_type)
3636 {
3637  start_token_flag = true;
3638  start_token_value = parser_type;
3639 
3640  file_ = "<string>";
3641  sfile_ = 0;
3642  loc_.initialize(&file_);
3643  yy_flex_debug = trace_scanning_;
3644  YY_BUFFER_STATE buffer;
3645  buffer = agent__scan_bytes(str.c_str(), str.size());
3646  if (!buffer) {
3647  fatal("cannot scan string");
3648  /* fatal() throws an exception so this can't be reached */
3649  }
3650 }
3651 
3652 void
3653 ParserContext::scanFileBegin(FILE * f,
3654  const std::string& filename,
3655  ParserType parser_type)
3656 {
3657  start_token_flag = true;
3658  start_token_value = parser_type;
3659 
3660  file_ = filename;
3661  sfile_ = f;
3662  loc_.initialize(&file_);
3663  yy_flex_debug = trace_scanning_;
3664  YY_BUFFER_STATE buffer;
3665 
3666  /* See agent_lexer.cc header for available definitions */
3667  buffer = agent__create_buffer(f, 65536 /*buffer size*/);
3668  if (!buffer) {
3669  fatal("cannot scan file " + filename);
3670  }
3671  agent__switch_to_buffer(buffer);
3672 }
3673 
3674 void
3675 ParserContext::scanEnd() {
3676  if (sfile_)
3677  fclose(sfile_);
3678  sfile_ = 0;
3679  static_cast<void>(agent_lex_destroy());
3680  /* Close files */
3681  while (!sfiles_.empty()) {
3682  FILE* f = sfiles_.back();
3683  if (f) {
3684  fclose(f);
3685  }
3686  sfiles_.pop_back();
3687  }
3688  /* Delete states */
3689  while (!states_.empty()) {
3690  agent__delete_buffer(states_.back());
3691  states_.pop_back();
3692  }
3693 }
3694 
3695 void
3696 ParserContext::includeFile(const std::string& filename) {
3697  if (states_.size() > 10) {
3698  fatal("Too many nested include.");
3699  }
3700 
3701  FILE* f = fopen(filename.c_str(), "r");
3702  if (!f) {
3703  fatal("Can't open include file " + filename);
3704  }
3705  if (sfile_) {
3706  sfiles_.push_back(sfile_);
3707  }
3708  sfile_ = f;
3709  states_.push_back(YY_CURRENT_BUFFER);
3710  YY_BUFFER_STATE buffer;
3711  buffer = agent__create_buffer(f, 65536 /*buffer size*/);
3712  if (!buffer) {
3713  fatal( "Can't scan include file " + filename);
3714  }
3715  agent__switch_to_buffer(buffer);
3716  files_.push_back(file_);
3717  file_ = filename;
3718  locs_.push_back(loc_);
3719  loc_.initialize(&file_);
3720 
3721  BEGIN(INITIAL);
3722 }
3723 
3724 namespace {
3726 class Dummy {
3727  /* cppcheck-suppress unusedPrivateFunction */
3728  void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
3729 };
3730 }
3731 #endif /* !__clang_analyzer__ */
3732 
#define YY_DECL
#define yyget_extra
Definition: agent_lexer.cc:170
#define YY_BUF_SIZE
Definition: agent_lexer.cc:436
#define yyset_debug
Definition: agent_lexer.cc:164
FILE * yy_input_file
Definition: agent_lexer.cc:491
#define yy_load_buffer_state
Definition: agent_lexer.cc:19
#define yyalloc
Definition: agent_lexer.cc:33
#define DIR_ENTER
#define YY_BREAK
#define yylineno
Definition: agent_lexer.cc:28
ParserType
Defines currently supported scopes.
#define YY_STATE_EOF(state)
Definition: agent_lexer.cc:422
#define yy_init_buffer
Definition: agent_lexer.cc:17
#define yyset_in
Definition: agent_lexer.cc:188
#define YY_READ_BUF_SIZE
#define YY_BUFFER_NEW
Definition: agent_lexer.cc:539
unsigned short int flex_uint16_t
Definition: agent_lexer.cc:336
#define yyset_out
Definition: agent_lexer.cc:200
#define yyget_debug
Definition: agent_lexer.cc:158
#define yyensure_buffer_stack
Definition: agent_lexer.cc:23
#define yy_scan_string
Definition: agent_lexer.cc:15
signed char flex_int8_t
Definition: agent_lexer.cc:332
#define YY_MORE_ADJ
#define ECHO
int yy_bs_lineno
The line count.
Definition: agent_lexer.cc:529
#define EOB_ACT_CONTINUE_SCAN
Definition: agent_lexer.cc:464
static symbol_type make_START_SUB_AGENT(YY_COPY(location_type) l)
#define yyget_out
Definition: agent_lexer.cc:194
#define YY_END_OF_BUFFER
Definition: agent_lexer.cc:695
static symbol_type make_START_AGENT(YY_COPY(location_type) l)
int flex_int32_t
Definition: agent_lexer.cc:334
#define yyget_leng
Definition: agent_lexer.cc:206
char * yy_bp
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
#define yylex_destroy
Definition: agent_lexer.cc:152
#define yypush_buffer_state
Definition: agent_lexer.cc:21
#define YY_EXIT_FAILURE
#define yy_create_buffer
Definition: agent_lexer.cc:12
int yy_bs_column
The column count.
Definition: agent_lexer.cc:530
#define yy_scan_bytes
Definition: agent_lexer.cc:16
#define YY_BUFFER_NORMAL
Definition: agent_lexer.cc:540
#define yyfree
Definition: agent_lexer.cc:35
flex_uint8_t YY_CHAR
Definition: agent_lexer.cc:656
#define yyout
Definition: agent_lexer.cc:29
struct yy_buffer_state * YY_BUFFER_STATE
Definition: agent_lexer.cc:446
Evaluation error exception raised when trying to parse.
int yy_act
#define DIR_EXIT
unsigned int flex_uint32_t
Definition: agent_lexer.cc:337
#define yypop_buffer_state
Definition: agent_lexer.cc:22
#define YY_CURRENT_BUFFER_LVALUE
Definition: agent_lexer.cc:581
#define INITIAL
#define YY_RULE_SETUP
#define yy_scan_buffer
Definition: agent_lexer.cc:14
#define yyrealloc
Definition: agent_lexer.cc:34
#define YY_CURRENT_BUFFER
Definition: agent_lexer.cc:575
#define yywrap
#define YY_START
Definition: agent_lexer.cc:419
char * yy_cp
static symbol_type make_START_JSON(YY_COPY(location_type) l)
#define YY_NEW_FILE
Definition: agent_lexer.cc:424
#define yytext_ptr
Definition: agent_lexer.cc:669
Defines the logger used by the top-level component of kea-dhcp-ddns.
#define yyrestart
Definition: agent_lexer.cc:30
size_t yy_size_t
Definition: agent_lexer.cc:451
#define yyin
Definition: agent_lexer.cc:25
#define yy_delete_buffer
Definition: agent_lexer.cc:13
unsigned char flex_uint8_t
Definition: agent_lexer.cc:335
#define yy_switch_to_buffer
Definition: agent_lexer.cc:20
#define yyget_lineno
Definition: agent_lexer.cc:218
#define YY_END_OF_BUFFER_CHAR
Definition: agent_lexer.cc:425
#define yynoreturn
Definition: agent_lexer.cc:388
#define yyget_text
Definition: agent_lexer.cc:212
flex_int32_t yy_verify
Definition: agent_lexer.cc:700
#define DIR_INCLUDE
#define YY_EXTRA_TYPE
#define yyleng
Definition: agent_lexer.cc:26
#define YY_SC_TO_UI(c)
Definition: agent_lexer.cc:400
#define yy_flush_buffer
Definition: agent_lexer.cc:18
#define yyset_lineno
Definition: agent_lexer.cc:224
#define COMMENT
short int flex_int16_t
Definition: agent_lexer.cc:333
#define YY_DO_BEFORE_ACTION
Definition: agent_lexer.cc:685
flex_int32_t yy_nxt
Definition: agent_lexer.cc:701
int yy_state_type
Definition: agent_lexer.cc:660
#define YY_RESTORE_YY_MORE_OFFSET
#define EOB_ACT_LAST_MATCH
Definition: agent_lexer.cc:466
#define yyset_extra
Definition: agent_lexer.cc:176
#define EOB_ACT_END_OF_FILE
Definition: agent_lexer.cc:465
#define BEGIN
Definition: agent_lexer.cc:414
#define yytext
Definition: agent_lexer.cc:31
#define yy_flex_debug
Definition: agent_lexer.cc:24
#define YY_BUFFER_EOF_PENDING
Definition: agent_lexer.cc:551
#define YY_INPUT(buf, result, max_size)
#define yyget_in
Definition: agent_lexer.cc:182
#define yylex
Definition: agent_lexer.cc:27
#define YY_FATAL_ERROR(msg)