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