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