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