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