Annotation of embedaddon/strongswan/src/libstrongswan/settings/settings_lexer.c, revision 1.1.1.1
1.1 misho 1: #line 2 "settings/settings_lexer.c"
2:
3: #line 4 "settings/settings_lexer.c"
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: /* %endif */
13: /* %endif */
14: /* %ok-for-header */
15:
16: #define FLEX_SCANNER
17: #define YY_FLEX_MAJOR_VERSION 2
18: #define YY_FLEX_MINOR_VERSION 6
19: #define YY_FLEX_SUBMINOR_VERSION 4
20: #if YY_FLEX_SUBMINOR_VERSION > 0
21: #define FLEX_BETA
22: #endif
23:
24: /* %if-c++-only */
25: /* %endif */
26:
27: /* %if-c-only */
28: #ifdef yy_create_buffer
29: #define settings_parser__create_buffer_ALREADY_DEFINED
30: #else
31: #define yy_create_buffer settings_parser__create_buffer
32: #endif
33:
34: #ifdef yy_delete_buffer
35: #define settings_parser__delete_buffer_ALREADY_DEFINED
36: #else
37: #define yy_delete_buffer settings_parser__delete_buffer
38: #endif
39:
40: #ifdef yy_scan_buffer
41: #define settings_parser__scan_buffer_ALREADY_DEFINED
42: #else
43: #define yy_scan_buffer settings_parser__scan_buffer
44: #endif
45:
46: #ifdef yy_scan_string
47: #define settings_parser__scan_string_ALREADY_DEFINED
48: #else
49: #define yy_scan_string settings_parser__scan_string
50: #endif
51:
52: #ifdef yy_scan_bytes
53: #define settings_parser__scan_bytes_ALREADY_DEFINED
54: #else
55: #define yy_scan_bytes settings_parser__scan_bytes
56: #endif
57:
58: #ifdef yy_init_buffer
59: #define settings_parser__init_buffer_ALREADY_DEFINED
60: #else
61: #define yy_init_buffer settings_parser__init_buffer
62: #endif
63:
64: #ifdef yy_flush_buffer
65: #define settings_parser__flush_buffer_ALREADY_DEFINED
66: #else
67: #define yy_flush_buffer settings_parser__flush_buffer
68: #endif
69:
70: #ifdef yy_load_buffer_state
71: #define settings_parser__load_buffer_state_ALREADY_DEFINED
72: #else
73: #define yy_load_buffer_state settings_parser__load_buffer_state
74: #endif
75:
76: #ifdef yy_switch_to_buffer
77: #define settings_parser__switch_to_buffer_ALREADY_DEFINED
78: #else
79: #define yy_switch_to_buffer settings_parser__switch_to_buffer
80: #endif
81:
82: #ifdef yypush_buffer_state
83: #define settings_parser_push_buffer_state_ALREADY_DEFINED
84: #else
85: #define yypush_buffer_state settings_parser_push_buffer_state
86: #endif
87:
88: #ifdef yypop_buffer_state
89: #define settings_parser_pop_buffer_state_ALREADY_DEFINED
90: #else
91: #define yypop_buffer_state settings_parser_pop_buffer_state
92: #endif
93:
94: #ifdef yyensure_buffer_stack
95: #define settings_parser_ensure_buffer_stack_ALREADY_DEFINED
96: #else
97: #define yyensure_buffer_stack settings_parser_ensure_buffer_stack
98: #endif
99:
100: #ifdef yylex
101: #define settings_parser_lex_ALREADY_DEFINED
102: #else
103: #define yylex settings_parser_lex
104: #endif
105:
106: #ifdef yyrestart
107: #define settings_parser_restart_ALREADY_DEFINED
108: #else
109: #define yyrestart settings_parser_restart
110: #endif
111:
112: #ifdef yylex_init
113: #define settings_parser_lex_init_ALREADY_DEFINED
114: #else
115: #define yylex_init settings_parser_lex_init
116: #endif
117:
118: #ifdef yylex_init_extra
119: #define settings_parser_lex_init_extra_ALREADY_DEFINED
120: #else
121: #define yylex_init_extra settings_parser_lex_init_extra
122: #endif
123:
124: #ifdef yylex_destroy
125: #define settings_parser_lex_destroy_ALREADY_DEFINED
126: #else
127: #define yylex_destroy settings_parser_lex_destroy
128: #endif
129:
130: #ifdef yyget_debug
131: #define settings_parser_get_debug_ALREADY_DEFINED
132: #else
133: #define yyget_debug settings_parser_get_debug
134: #endif
135:
136: #ifdef yyset_debug
137: #define settings_parser_set_debug_ALREADY_DEFINED
138: #else
139: #define yyset_debug settings_parser_set_debug
140: #endif
141:
142: #ifdef yyget_extra
143: #define settings_parser_get_extra_ALREADY_DEFINED
144: #else
145: #define yyget_extra settings_parser_get_extra
146: #endif
147:
148: #ifdef yyset_extra
149: #define settings_parser_set_extra_ALREADY_DEFINED
150: #else
151: #define yyset_extra settings_parser_set_extra
152: #endif
153:
154: #ifdef yyget_in
155: #define settings_parser_get_in_ALREADY_DEFINED
156: #else
157: #define yyget_in settings_parser_get_in
158: #endif
159:
160: #ifdef yyset_in
161: #define settings_parser_set_in_ALREADY_DEFINED
162: #else
163: #define yyset_in settings_parser_set_in
164: #endif
165:
166: #ifdef yyget_out
167: #define settings_parser_get_out_ALREADY_DEFINED
168: #else
169: #define yyget_out settings_parser_get_out
170: #endif
171:
172: #ifdef yyset_out
173: #define settings_parser_set_out_ALREADY_DEFINED
174: #else
175: #define yyset_out settings_parser_set_out
176: #endif
177:
178: #ifdef yyget_leng
179: #define settings_parser_get_leng_ALREADY_DEFINED
180: #else
181: #define yyget_leng settings_parser_get_leng
182: #endif
183:
184: #ifdef yyget_text
185: #define settings_parser_get_text_ALREADY_DEFINED
186: #else
187: #define yyget_text settings_parser_get_text
188: #endif
189:
190: #ifdef yyget_lineno
191: #define settings_parser_get_lineno_ALREADY_DEFINED
192: #else
193: #define yyget_lineno settings_parser_get_lineno
194: #endif
195:
196: #ifdef yyset_lineno
197: #define settings_parser_set_lineno_ALREADY_DEFINED
198: #else
199: #define yyset_lineno settings_parser_set_lineno
200: #endif
201:
202: #ifdef yyget_column
203: #define settings_parser_get_column_ALREADY_DEFINED
204: #else
205: #define yyget_column settings_parser_get_column
206: #endif
207:
208: #ifdef yyset_column
209: #define settings_parser_set_column_ALREADY_DEFINED
210: #else
211: #define yyset_column settings_parser_set_column
212: #endif
213:
214: #ifdef yywrap
215: #define settings_parser_wrap_ALREADY_DEFINED
216: #else
217: #define yywrap settings_parser_wrap
218: #endif
219:
220: /* %endif */
221:
222: #ifdef yyget_lval
223: #define settings_parser_get_lval_ALREADY_DEFINED
224: #else
225: #define yyget_lval settings_parser_get_lval
226: #endif
227:
228: #ifdef yyset_lval
229: #define settings_parser_set_lval_ALREADY_DEFINED
230: #else
231: #define yyset_lval settings_parser_set_lval
232: #endif
233:
234: #ifdef yyalloc
235: #define settings_parser_alloc_ALREADY_DEFINED
236: #else
237: #define yyalloc settings_parser_alloc
238: #endif
239:
240: #ifdef yyrealloc
241: #define settings_parser_realloc_ALREADY_DEFINED
242: #else
243: #define yyrealloc settings_parser_realloc
244: #endif
245:
246: #ifdef yyfree
247: #define settings_parser_free_ALREADY_DEFINED
248: #else
249: #define yyfree settings_parser_free
250: #endif
251:
252: /* %if-c-only */
253:
254: /* %endif */
255:
256: /* First, we deal with platform-specific or compiler-specific issues. */
257:
258: /* begin standard C headers. */
259: /* %if-c-only */
260: #include <stdio.h>
261: #include <string.h>
262: #include <errno.h>
263: #include <stdlib.h>
264: /* %endif */
265:
266: /* %if-tables-serialization */
267: /* %endif */
268: /* end standard C headers. */
269:
270: /* %if-c-or-c++ */
271: /* flex integer type definitions */
272:
273: #ifndef FLEXINT_H
274: #define FLEXINT_H
275:
276: /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
277:
278: #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
279:
280: /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
281: * if you want the limit (max/min) macros for int types.
282: */
283: #ifndef __STDC_LIMIT_MACROS
284: #define __STDC_LIMIT_MACROS 1
285: #endif
286:
287: #include <inttypes.h>
288: typedef int8_t flex_int8_t;
289: typedef uint8_t flex_uint8_t;
290: typedef int16_t flex_int16_t;
291: typedef uint16_t flex_uint16_t;
292: typedef int32_t flex_int32_t;
293: typedef uint32_t flex_uint32_t;
294: #else
295: typedef signed char flex_int8_t;
296: typedef short int flex_int16_t;
297: typedef int flex_int32_t;
298: typedef unsigned char flex_uint8_t;
299: typedef unsigned short int flex_uint16_t;
300: typedef unsigned int flex_uint32_t;
301:
302: /* Limits of integral types. */
303: #ifndef INT8_MIN
304: #define INT8_MIN (-128)
305: #endif
306: #ifndef INT16_MIN
307: #define INT16_MIN (-32767-1)
308: #endif
309: #ifndef INT32_MIN
310: #define INT32_MIN (-2147483647-1)
311: #endif
312: #ifndef INT8_MAX
313: #define INT8_MAX (127)
314: #endif
315: #ifndef INT16_MAX
316: #define INT16_MAX (32767)
317: #endif
318: #ifndef INT32_MAX
319: #define INT32_MAX (2147483647)
320: #endif
321: #ifndef UINT8_MAX
322: #define UINT8_MAX (255U)
323: #endif
324: #ifndef UINT16_MAX
325: #define UINT16_MAX (65535U)
326: #endif
327: #ifndef UINT32_MAX
328: #define UINT32_MAX (4294967295U)
329: #endif
330:
331: #ifndef SIZE_MAX
332: #define SIZE_MAX (~(size_t)0)
333: #endif
334:
335: #endif /* ! C99 */
336:
337: #endif /* ! FLEXINT_H */
338:
339: /* %endif */
340:
341: /* begin standard C++ headers. */
342: /* %if-c++-only */
343: /* %endif */
344:
345: /* TODO: this is always defined, so inline it */
346: #define yyconst const
347:
348: #if defined(__GNUC__) && __GNUC__ >= 3
349: #define yynoreturn __attribute__((__noreturn__))
350: #else
351: #define yynoreturn
352: #endif
353:
354: /* %not-for-header */
355: /* Returned upon end-of-file. */
356: #define YY_NULL 0
357: /* %ok-for-header */
358:
359: /* %not-for-header */
360: /* Promotes a possibly negative, possibly signed char to an
361: * integer in range [0..255] for use as an array index.
362: */
363: #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
364: /* %ok-for-header */
365:
366: /* %if-reentrant */
367:
368: /* An opaque pointer. */
369: #ifndef YY_TYPEDEF_YY_SCANNER_T
370: #define YY_TYPEDEF_YY_SCANNER_T
371: typedef void* yyscan_t;
372: #endif
373:
374: /* For convenience, these vars (plus the bison vars far below)
375: are macros in the reentrant scanner. */
376: #define yyin yyg->yyin_r
377: #define yyout yyg->yyout_r
378: #define yyextra yyg->yyextra_r
379: #define yyleng yyg->yyleng_r
380: #define yytext yyg->yytext_r
381: #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
382: #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
383: #define yy_flex_debug yyg->yy_flex_debug_r
384:
385: /* %endif */
386:
387: /* %if-not-reentrant */
388: /* %endif */
389:
390: /* Enter a start condition. This macro really ought to take a parameter,
391: * but we do it the disgusting crufty way forced on us by the ()-less
392: * definition of BEGIN.
393: */
394: #define BEGIN yyg->yy_start = 1 + 2 *
395: /* Translate the current start state into a value that can be later handed
396: * to BEGIN to return to the state. The YYSTATE alias is for lex
397: * compatibility.
398: */
399: #define YY_START ((yyg->yy_start - 1) / 2)
400: #define YYSTATE YY_START
401: /* Action number for EOF rule of a given start state. */
402: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
403: /* Special action meaning "start processing a new file". */
404: #define YY_NEW_FILE yyrestart( yyin , yyscanner )
405: #define YY_END_OF_BUFFER_CHAR 0
406:
407: /* Size of default input buffer. */
408: #ifndef YY_BUF_SIZE
409: #ifdef __ia64__
410: /* On IA-64, the buffer size is 16k, not 8k.
411: * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
412: * Ditto for the __ia64__ case accordingly.
413: */
414: #define YY_BUF_SIZE 32768
415: #else
416: #define YY_BUF_SIZE 16384
417: #endif /* __ia64__ */
418: #endif
419:
420: /* The state buf must be large enough to hold one state per character in the main buffer.
421: */
422: #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
423:
424: #ifndef YY_TYPEDEF_YY_BUFFER_STATE
425: #define YY_TYPEDEF_YY_BUFFER_STATE
426: typedef struct yy_buffer_state *YY_BUFFER_STATE;
427: #endif
428:
429: #ifndef YY_TYPEDEF_YY_SIZE_T
430: #define YY_TYPEDEF_YY_SIZE_T
431: typedef size_t yy_size_t;
432: #endif
433:
434: /* %if-not-reentrant */
435: /* %endif */
436:
437: /* %if-c-only */
438: /* %if-not-reentrant */
439: /* %endif */
440: /* %endif */
441:
442: #define EOB_ACT_CONTINUE_SCAN 0
443: #define EOB_ACT_END_OF_FILE 1
444: #define EOB_ACT_LAST_MATCH 2
445:
446: /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
447: * access to the local variable yy_act. Since yyless() is a macro, it would break
448: * existing scanners that call yyless() from OUTSIDE yylex.
449: * One obvious solution it to make yy_act a global. I tried that, and saw
450: * a 5% performance hit in a non-yylineno scanner, because yy_act is
451: * normally declared as a register variable-- so it is not worth it.
452: */
453: #define YY_LESS_LINENO(n) \
454: do { \
455: int yyl;\
456: for ( yyl = n; yyl < yyleng; ++yyl )\
457: if ( yytext[yyl] == '\n' )\
458: --yylineno;\
459: }while(0)
460: #define YY_LINENO_REWIND_TO(dst) \
461: do {\
462: const char *p;\
463: for ( p = yy_cp-1; p >= (dst); --p)\
464: if ( *p == '\n' )\
465: --yylineno;\
466: }while(0)
467:
468: /* Return all but the first "n" matched characters back to the input stream. */
469: #define yyless(n) \
470: do \
471: { \
472: /* Undo effects of setting up yytext. */ \
473: int yyless_macro_arg = (n); \
474: YY_LESS_LINENO(yyless_macro_arg);\
475: *yy_cp = yyg->yy_hold_char; \
476: YY_RESTORE_YY_MORE_OFFSET \
477: yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
478: YY_DO_BEFORE_ACTION; /* set up yytext again */ \
479: } \
480: while ( 0 )
481: #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
482:
483: #ifndef YY_STRUCT_YY_BUFFER_STATE
484: #define YY_STRUCT_YY_BUFFER_STATE
485: struct yy_buffer_state
486: {
487: /* %if-c-only */
488: FILE *yy_input_file;
489: /* %endif */
490:
491: /* %if-c++-only */
492: /* %endif */
493:
494: char *yy_ch_buf; /* input buffer */
495: char *yy_buf_pos; /* current position in input buffer */
496:
497: /* Size of input buffer in bytes, not including room for EOB
498: * characters.
499: */
500: int yy_buf_size;
501:
502: /* Number of characters read into yy_ch_buf, not including EOB
503: * characters.
504: */
505: int yy_n_chars;
506:
507: /* Whether we "own" the buffer - i.e., we know we created it,
508: * and can realloc() it to grow it, and should free() it to
509: * delete it.
510: */
511: int yy_is_our_buffer;
512:
513: /* Whether this is an "interactive" input source; if so, and
514: * if we're using stdio for input, then we want to use getc()
515: * instead of fread(), to make sure we stop fetching input after
516: * each newline.
517: */
518: int yy_is_interactive;
519:
520: /* Whether we're considered to be at the beginning of a line.
521: * If so, '^' rules will be active on the next match, otherwise
522: * not.
523: */
524: int yy_at_bol;
525:
526: int yy_bs_lineno; /**< The line count. */
527: int yy_bs_column; /**< The column count. */
528:
529: /* Whether to try to fill the input buffer when we reach the
530: * end of it.
531: */
532: int yy_fill_buffer;
533:
534: int yy_buffer_status;
535:
536: #define YY_BUFFER_NEW 0
537: #define YY_BUFFER_NORMAL 1
538: /* When an EOF's been seen but there's still some text to process
539: * then we mark the buffer as YY_EOF_PENDING, to indicate that we
540: * shouldn't try reading from the input source any more. We might
541: * still have a bunch of tokens to match, though, because of
542: * possible backing-up.
543: *
544: * When we actually see the EOF, we change the status to "new"
545: * (via yyrestart()), so that the user can continue scanning by
546: * just pointing yyin at a new input file.
547: */
548: #define YY_BUFFER_EOF_PENDING 2
549:
550: };
551: #endif /* !YY_STRUCT_YY_BUFFER_STATE */
552:
553: /* %if-c-only Standard (non-C++) definition */
554: /* %not-for-header */
555: /* %if-not-reentrant */
556: /* %endif */
557: /* %ok-for-header */
558:
559: /* %endif */
560:
561: /* We provide macros for accessing buffer states in case in the
562: * future we want to put the buffer states in a more general
563: * "scanner state".
564: *
565: * Returns the top of the stack, or NULL.
566: */
567: #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
568: ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
569: : NULL)
570: /* Same as previous macro, but useful when we know that the buffer stack is not
571: * NULL or when we need an lvalue. For internal use only.
572: */
573: #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
574:
575: /* %if-c-only Standard (non-C++) definition */
576:
577: /* %if-not-reentrant */
578: /* %not-for-header */
579: /* %ok-for-header */
580:
581: /* %endif */
582:
583: void yyrestart ( FILE *input_file , yyscan_t yyscanner );
584: void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
585: YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
586: void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
587: void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
588: void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
589: void yypop_buffer_state ( yyscan_t yyscanner );
590:
591: static void yyensure_buffer_stack ( yyscan_t yyscanner );
592: static void yy_load_buffer_state ( yyscan_t yyscanner );
593: static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
594: #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
595:
596: YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
597: YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
598: YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
599:
600: /* %endif */
601:
602: void *yyalloc ( yy_size_t , yyscan_t yyscanner );
603: void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
604: void yyfree ( void * , yyscan_t yyscanner );
605:
606: #define yy_new_buffer yy_create_buffer
607: #define yy_set_interactive(is_interactive) \
608: { \
609: if ( ! YY_CURRENT_BUFFER ){ \
610: yyensure_buffer_stack (yyscanner); \
611: YY_CURRENT_BUFFER_LVALUE = \
612: yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
613: } \
614: YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
615: }
616: #define yy_set_bol(at_bol) \
617: { \
618: if ( ! YY_CURRENT_BUFFER ){\
619: yyensure_buffer_stack (yyscanner); \
620: YY_CURRENT_BUFFER_LVALUE = \
621: yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
622: } \
623: YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
624: }
625: #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
626:
627: /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
628: /* Begin user sect3 */
629:
630: #define settings_parser_wrap(yyscanner) (/*CONSTCOND*/1)
631: #define YY_SKIP_YYWRAP
632:
633: #define FLEX_DEBUG
634: typedef flex_uint8_t YY_CHAR;
635:
636: typedef int yy_state_type;
637:
638: #define yytext_ptr yytext_r
639:
640: /* %% [1.5] DFA */
641:
642: /* %if-c-only Standard (non-C++) definition */
643:
644: static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
645: static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner);
646: static int yy_get_next_buffer ( yyscan_t yyscanner );
647: static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
648:
649: /* %endif */
650:
651: /* Done after the current pattern has been matched and before the
652: * corresponding action - sets up yytext.
653: */
654: #define YY_DO_BEFORE_ACTION \
655: yyg->yytext_ptr = yy_bp; \
656: /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
657: yyleng = (int) (yy_cp - yy_bp); \
658: yyg->yy_hold_char = *yy_cp; \
659: *yy_cp = '\0'; \
660: /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
661: yyg->yy_c_buf_p = yy_cp;
662: /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
663: #define YY_NUM_RULES 39
664: #define YY_END_OF_BUFFER 40
665: /* This struct is not used in this scanner,
666: but its presence is necessary. */
667: struct yy_trans_info
668: {
669: flex_int32_t yy_verify;
670: flex_int32_t yy_nxt;
671: };
672: static const flex_int16_t yy_accept[85] =
673: { 0,
674: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675: 40, 12, 2, 3, 2, 11, 1, 7, 6, 8,
676: 9, 12, 4, 5, 17, 14, 15, 14, 18, 13,
677: 16, 23, 20, 21, 19, 22, 29, 25, 24, 26,
678: 27, 38, 30, 31, 32, 12, 2, 2, 1, 1,
679: 3, 0, 12, 17, 0, 14, 14, 13, 13, 15,
680: 0, 23, 20, 29, 28, 38, 37, 36, 37, 33,
681: 34, 35, 1, 12, 17, 13, 12, 12, 12, 12,
682: 0, 10, 10, 0
683: } ;
684:
685: static const YY_CHAR yy_ec[256] =
686: { 0,
687: 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
688: 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
689: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690: 1, 5, 1, 6, 7, 1, 1, 1, 1, 1,
691: 1, 1, 1, 8, 1, 9, 1, 1, 1, 1,
692: 1, 1, 1, 1, 1, 1, 1, 10, 1, 1,
693: 11, 1, 1, 1, 1, 1, 1, 1, 1, 1,
694: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
695: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
696: 1, 12, 1, 1, 1, 1, 1, 1, 13, 14,
697:
698: 15, 1, 1, 1, 16, 1, 1, 17, 1, 18,
699: 1, 1, 1, 19, 1, 20, 21, 1, 1, 1,
700: 1, 1, 22, 1, 23, 1, 1, 1, 1, 1,
701: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
702: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
703: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
704: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
705: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
706: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
707: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
708:
709: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
710: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
711: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
712: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
713: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
714: 1, 1, 1, 1, 1
715: } ;
716:
717: static const YY_CHAR yy_meta[24] =
718: { 0,
719: 1, 2, 3, 4, 5, 6, 5, 7, 8, 7,
720: 9, 10, 1, 1, 1, 1, 1, 1, 1, 1,
721: 1, 7, 5
722: } ;
723:
724: static const flex_int16_t yy_base[103] =
725: { 0,
726: 0, 0, 23, 0, 45, 67, 89, 111, 49, 50,
727: 124, 0, 133, 335, 55, 335, 60, 335, 335, 335,
728: 335, 104, 335, 335, 112, 139, 335, 73, 335, 62,
729: 335, 0, 74, 335, 335, 335, 0, 335, 335, 335,
730: 0, 0, 335, 335, 144, 0, 0, 78, 0, 81,
731: 335, 117, 106, 102, 0, 0, 84, 0, 94, 335,
732: 107, 0, 97, 0, 335, 0, 335, 335, 106, 335,
733: 335, 335, 0, 89, 78, 0, 60, 53, 43, 98,
734: 102, 335, 103, 335, 164, 174, 184, 194, 204, 214,
735: 224, 234, 244, 249, 255, 264, 274, 284, 294, 304,
736:
737: 314, 324
738: } ;
739:
740: static const flex_int16_t yy_def[103] =
741: { 0,
742: 84, 1, 84, 3, 85, 85, 86, 86, 87, 87,
743: 84, 88, 84, 84, 84, 84, 89, 84, 84, 84,
744: 84, 88, 84, 84, 90, 84, 84, 84, 84, 91,
745: 84, 92, 84, 84, 84, 84, 93, 84, 84, 84,
746: 94, 95, 84, 84, 96, 88, 13, 84, 97, 89,
747: 84, 98, 88, 90, 99, 26, 84, 100, 91, 84,
748: 101, 92, 84, 93, 84, 95, 84, 84, 84, 84,
749: 84, 84, 97, 88, 99, 100, 88, 88, 88, 88,
750: 102, 84, 102, 0, 84, 84, 84, 84, 84, 84,
751: 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
752:
753: 84, 84
754: } ;
755:
756: static const flex_int16_t yy_nxt[359] =
757: { 0,
758: 12, 13, 14, 15, 13, 16, 17, 18, 19, 20,
759: 21, 12, 12, 12, 12, 22, 12, 12, 12, 12,
760: 12, 23, 24, 25, 26, 27, 28, 26, 29, 30,
761: 31, 29, 29, 29, 25, 25, 25, 25, 25, 25,
762: 25, 25, 25, 25, 29, 29, 33, 34, 35, 33,
763: 36, 34, 43, 43, 44, 44, 48, 80, 48, 48,
764: 45, 45, 51, 52, 60, 61, 79, 34, 33, 34,
765: 35, 33, 36, 34, 57, 63, 57, 57, 63, 48,
766: 78, 48, 48, 51, 52, 57, 55, 57, 57, 34,
767: 38, 38, 39, 38, 40, 38, 60, 61, 63, 81,
768:
769: 41, 63, 81, 83, 83, 77, 83, 83, 68, 60,
770: 55, 38, 38, 38, 39, 38, 40, 38, 74, 51,
771: 55, 53, 41, 84, 84, 84, 84, 84, 84, 84,
772: 84, 84, 84, 38, 47, 84, 48, 47, 84, 49,
773: 56, 84, 57, 56, 84, 58, 68, 69, 84, 84,
774: 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
775: 84, 70, 71, 72, 32, 32, 32, 32, 32, 32,
776: 32, 32, 32, 32, 37, 37, 37, 37, 37, 37,
777: 37, 37, 37, 37, 42, 42, 42, 42, 42, 42,
778: 42, 42, 42, 42, 46, 84, 84, 84, 84, 84,
779:
780: 84, 84, 84, 46, 50, 50, 50, 50, 50, 50,
781: 50, 50, 50, 50, 54, 84, 84, 84, 84, 84,
782: 84, 54, 84, 54, 59, 59, 59, 59, 59, 59,
783: 59, 59, 59, 59, 62, 84, 84, 84, 84, 84,
784: 62, 62, 62, 62, 64, 84, 84, 84, 84, 84,
785: 64, 64, 64, 65, 65, 66, 66, 66, 84, 66,
786: 84, 66, 66, 66, 67, 67, 67, 67, 67, 67,
787: 67, 67, 67, 67, 73, 73, 84, 84, 73, 73,
788: 73, 73, 73, 73, 52, 52, 52, 52, 52, 52,
789: 52, 52, 52, 52, 75, 84, 84, 84, 84, 84,
790:
791: 84, 84, 84, 75, 76, 76, 84, 84, 76, 76,
792: 76, 76, 76, 76, 61, 61, 61, 61, 61, 61,
793: 61, 61, 61, 61, 82, 82, 82, 82, 82, 82,
794: 82, 82, 84, 82, 11, 84, 84, 84, 84, 84,
795: 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
796: 84, 84, 84, 84, 84, 84, 84, 84
797: } ;
798:
799: static const flex_int16_t yy_chk[359] =
800: { 0,
801: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
802: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
803: 1, 1, 1, 3, 3, 3, 3, 3, 3, 3,
804: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
805: 3, 3, 3, 3, 3, 3, 5, 5, 5, 5,
806: 5, 5, 9, 10, 9, 10, 15, 79, 15, 15,
807: 9, 10, 17, 17, 30, 30, 78, 5, 6, 6,
808: 6, 6, 6, 6, 28, 33, 28, 28, 33, 48,
809: 77, 48, 48, 50, 50, 57, 75, 57, 57, 6,
810: 7, 7, 7, 7, 7, 7, 59, 59, 63, 80,
811:
812: 7, 63, 80, 81, 83, 74, 81, 83, 69, 61,
813: 54, 7, 8, 8, 8, 8, 8, 8, 53, 52,
814: 25, 22, 8, 11, 0, 0, 0, 0, 0, 0,
815: 0, 0, 0, 8, 13, 0, 13, 13, 0, 13,
816: 26, 0, 26, 26, 0, 26, 45, 45, 0, 0,
817: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818: 0, 45, 45, 45, 85, 85, 85, 85, 85, 85,
819: 85, 85, 85, 85, 86, 86, 86, 86, 86, 86,
820: 86, 86, 86, 86, 87, 87, 87, 87, 87, 87,
821: 87, 87, 87, 87, 88, 0, 0, 0, 0, 0,
822:
823: 0, 0, 0, 88, 89, 89, 89, 89, 89, 89,
824: 89, 89, 89, 89, 90, 0, 0, 0, 0, 0,
825: 0, 90, 0, 90, 91, 91, 91, 91, 91, 91,
826: 91, 91, 91, 91, 92, 0, 0, 0, 0, 0,
827: 92, 92, 92, 92, 93, 0, 0, 0, 0, 0,
828: 93, 93, 93, 94, 94, 95, 95, 95, 0, 95,
829: 0, 95, 95, 95, 96, 96, 96, 96, 96, 96,
830: 96, 96, 96, 96, 97, 97, 0, 0, 97, 97,
831: 97, 97, 97, 97, 98, 98, 98, 98, 98, 98,
832: 98, 98, 98, 98, 99, 0, 0, 0, 0, 0,
833:
834: 0, 0, 0, 99, 100, 100, 0, 0, 100, 100,
835: 100, 100, 100, 100, 101, 101, 101, 101, 101, 101,
836: 101, 101, 101, 101, 102, 102, 102, 102, 102, 102,
837: 102, 102, 0, 102, 84, 84, 84, 84, 84, 84,
838: 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
839: 84, 84, 84, 84, 84, 84, 84, 84
840: } ;
841:
842: /* Table of booleans, true if rule could match eol. */
843: static const flex_int32_t yy_rule_can_match_eol[40] =
844: { 0,
845: 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
846: 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
847: };
848:
849: static const flex_int16_t yy_rule_linenum[39] =
850: { 0,
851: 71, 72, 73, 75, 76, 78, 79, 81, 86, 91,
852: 96, 101, 107, 108, 109, 111, 113, 118, 125, 126,
853: 128, 149, 155, 162, 165, 185, 188, 191, 194, 200,
854: 201, 203, 223, 224, 225, 226, 227, 228
855: } ;
856:
857: /* The intent behind this definition is that it'll catch
858: * any uses of REJECT which flex missed.
859: */
860: #define REJECT reject_used_but_not_detected
861: #define yymore() yymore_used_but_not_detected
862: #define YY_MORE_ADJ 0
863: #define YY_RESTORE_YY_MORE_OFFSET
864: #line 1 "settings/settings_lexer.l"
865: #line 2 "settings/settings_lexer.l"
866: /*
867: * Copyright (C) 2014-2018 Tobias Brunner
868: * HSR Hochschule fuer Technik Rapperswil
869: *
870: * This program is free software; you can redistribute it and/or modify it
871: * under the terms of the GNU General Public License as published by the
872: * Free Software Foundation; either version 2 of the License, or (at your
873: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
874: *
875: * This program is distributed in the hope that it will be useful, but
876: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
877: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
878: * for more details.
879: */
880:
881: #include <utils/parser_helper.h>
882:
883: #include "settings_parser.h"
884:
885: bool settings_parser_open_next_file(parser_helper_t *ctx);
886:
887: static void include_files(parser_helper_t *ctx);
888:
889: #line 890 "settings/settings_lexer.c"
890: /* use start conditions stack */
891: /* do not declare unneeded functions */
892: #define YY_NO_INPUT 1
893: /* do not include unistd.h as it might conflict with our scanner states */
894: #define YY_NO_UNISTD_H 1
895: /* due to that disable interactive mode, which requires isatty() */
896: /* don't use global variables, and interact properly with bison */
897: /* maintain the line number */
898: /* don't generate a default rule */
899: /* prefix function/variable declarations */
900: /* don't change the name of the output file otherwise autotools has issues */
901: /* type of our extra data */
902: /* state used to scan references */
903:
904: /* state used to scan values */
905:
906: /* state used to scan include file patterns */
907:
908: /* state used to scan quoted strings */
909:
910: /* pattern for section/key names */
911: #line 912 "settings/settings_lexer.c"
912:
913: #define INITIAL 0
914: #define ref 1
915: #define val 2
916: #define inc 3
917: #define str 4
918:
919: #ifndef YY_NO_UNISTD_H
920: /* Special case for "unistd.h", since it is non-ANSI. We include it way
921: * down here because we want the user's section 1 to have been scanned first.
922: * The user has a chance to override it with an option.
923: */
924: /* %if-c-only */
925: #include <unistd.h>
926: /* %endif */
927: /* %if-c++-only */
928: /* %endif */
929: #endif
930:
931: #define YY_EXTRA_TYPE parser_helper_t*
932:
933: /* %if-c-only Reentrant structure and macros (non-C++). */
934: /* %if-reentrant */
935:
936: /* Holds the entire state of the reentrant scanner. */
937: struct yyguts_t
938: {
939:
940: /* User-defined. Not touched by flex. */
941: YY_EXTRA_TYPE yyextra_r;
942:
943: /* The rest are the same as the globals declared in the non-reentrant scanner. */
944: FILE *yyin_r, *yyout_r;
945: size_t yy_buffer_stack_top; /**< index of top of stack. */
946: size_t yy_buffer_stack_max; /**< capacity of stack. */
947: YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
948: char yy_hold_char;
949: int yy_n_chars;
950: int yyleng_r;
951: char *yy_c_buf_p;
952: int yy_init;
953: int yy_start;
954: int yy_did_buffer_switch_on_eof;
955: int yy_start_stack_ptr;
956: int yy_start_stack_depth;
957: int *yy_start_stack;
958: yy_state_type yy_last_accepting_state;
959: char* yy_last_accepting_cpos;
960:
961: int yylineno_r;
962: int yy_flex_debug_r;
963:
964: char *yytext_r;
965: int yy_more_flag;
966: int yy_more_len;
967:
968: YYSTYPE * yylval_r;
969:
970: }; /* end struct yyguts_t */
971:
972: /* %if-c-only */
973:
974: static int yy_init_globals ( yyscan_t yyscanner );
975:
976: /* %endif */
977:
978: /* %if-reentrant */
979:
980: /* This must go here because YYSTYPE and YYLTYPE are included
981: * from bison output in section 1.*/
982: # define yylval yyg->yylval_r
983:
984: int yylex_init (yyscan_t* scanner);
985:
986: int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
987:
988: /* %endif */
989:
990: /* %endif End reentrant structures and macros. */
991:
992: /* Accessor methods to globals.
993: These are made visible to non-reentrant scanners for convenience. */
994:
995: int yylex_destroy ( yyscan_t yyscanner );
996:
997: int yyget_debug ( yyscan_t yyscanner );
998:
999: void yyset_debug ( int debug_flag , yyscan_t yyscanner );
1000:
1001: YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
1002:
1003: void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
1004:
1005: FILE *yyget_in ( yyscan_t yyscanner );
1006:
1007: void yyset_in ( FILE * _in_str , yyscan_t yyscanner );
1008:
1009: FILE *yyget_out ( yyscan_t yyscanner );
1010:
1011: void yyset_out ( FILE * _out_str , yyscan_t yyscanner );
1012:
1013: int yyget_leng ( yyscan_t yyscanner );
1014:
1015: char *yyget_text ( yyscan_t yyscanner );
1016:
1017: int yyget_lineno ( yyscan_t yyscanner );
1018:
1019: void yyset_lineno ( int _line_number , yyscan_t yyscanner );
1020:
1021: int yyget_column ( yyscan_t yyscanner );
1022:
1023: void yyset_column ( int _column_no , yyscan_t yyscanner );
1024:
1025: /* %if-bison-bridge */
1026:
1027: YYSTYPE * yyget_lval ( yyscan_t yyscanner );
1028:
1029: void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
1030:
1031: /* %endif */
1032:
1033: /* Macros after this point can all be overridden by user definitions in
1034: * section 1.
1035: */
1036:
1037: #ifndef YY_SKIP_YYWRAP
1038: #ifdef __cplusplus
1039: extern "C" int yywrap ( yyscan_t yyscanner );
1040: #else
1041: extern int yywrap ( yyscan_t yyscanner );
1042: #endif
1043: #endif
1044:
1045: /* %not-for-header */
1046: #ifndef YY_NO_UNPUT
1047:
1048: static void yyunput ( int c, char *buf_ptr , yyscan_t yyscanner);
1049:
1050: #endif
1051: /* %ok-for-header */
1052:
1053: /* %endif */
1054:
1055: #ifndef yytext_ptr
1056: static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
1057: #endif
1058:
1059: #ifdef YY_NEED_STRLEN
1060: static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
1061: #endif
1062:
1063: #ifndef YY_NO_INPUT
1064: /* %if-c-only Standard (non-C++) definition */
1065: /* %not-for-header */
1066: #ifdef __cplusplus
1067: static int yyinput ( yyscan_t yyscanner );
1068: #else
1069: static int input ( yyscan_t yyscanner );
1070: #endif
1071: /* %ok-for-header */
1072:
1073: /* %endif */
1074: #endif
1075:
1076: /* %if-c-only */
1077:
1078: static void yy_push_state ( int _new_state , yyscan_t yyscanner);
1079:
1080: static void yy_pop_state ( yyscan_t yyscanner );
1081:
1082: static int yy_top_state ( yyscan_t yyscanner );
1083:
1084: /* %endif */
1085:
1086: /* Amount of stuff to slurp up with each read. */
1087: #ifndef YY_READ_BUF_SIZE
1088: #ifdef __ia64__
1089: /* On IA-64, the buffer size is 16k, not 8k */
1090: #define YY_READ_BUF_SIZE 16384
1091: #else
1092: #define YY_READ_BUF_SIZE 8192
1093: #endif /* __ia64__ */
1094: #endif
1095:
1096: /* Copy whatever the last rule matched to the standard output. */
1097: #ifndef ECHO
1098: /* %if-c-only Standard (non-C++) definition */
1099: /* This used to be an fputs(), but since the string might contain NUL's,
1100: * we now use fwrite().
1101: */
1102: #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1103: /* %endif */
1104: /* %if-c++-only C++ definition */
1105: /* %endif */
1106: #endif
1107:
1108: /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1109: * is returned in "result".
1110: */
1111: #ifndef YY_INPUT
1112: #define YY_INPUT(buf,result,max_size) \
1113: /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1114: if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1115: { \
1116: int c = '*'; \
1117: int n; \
1118: for ( n = 0; n < max_size && \
1119: (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1120: buf[n] = (char) c; \
1121: if ( c == '\n' ) \
1122: buf[n++] = (char) c; \
1123: if ( c == EOF && ferror( yyin ) ) \
1124: YY_FATAL_ERROR( "input in flex scanner failed" ); \
1125: result = n; \
1126: } \
1127: else \
1128: { \
1129: errno=0; \
1130: while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1131: { \
1132: if( errno != EINTR) \
1133: { \
1134: YY_FATAL_ERROR( "input in flex scanner failed" ); \
1135: break; \
1136: } \
1137: errno=0; \
1138: clearerr(yyin); \
1139: } \
1140: }\
1141: \
1142: /* %if-c++-only C++ definition \ */\
1143: /* %endif */
1144:
1145: #endif
1146:
1147: /* No semi-colon after return; correct usage is to write "yyterminate();" -
1148: * we don't want an extra ';' after the "return" because that will cause
1149: * some compilers to complain about unreachable statements.
1150: */
1151: #ifndef yyterminate
1152: #define yyterminate() return YY_NULL
1153: #endif
1154:
1155: /* Number of entries by which start-condition stack grows. */
1156: #ifndef YY_START_STACK_INCR
1157: #define YY_START_STACK_INCR 25
1158: #endif
1159:
1160: /* Report a fatal error. */
1161: #ifndef YY_FATAL_ERROR
1162: /* %if-c-only */
1163: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1164: /* %endif */
1165: /* %if-c++-only */
1166: /* %endif */
1167: #endif
1168:
1169: /* %if-tables-serialization structures and prototypes */
1170: /* %not-for-header */
1171: /* %ok-for-header */
1172:
1173: /* %not-for-header */
1174: /* %tables-yydmap generated elements */
1175: /* %endif */
1176: /* end tables serialization structures and prototypes */
1177:
1178: /* %ok-for-header */
1179:
1180: /* Default declaration of generated scanner - a define so the user can
1181: * easily add parameters.
1182: */
1183: #ifndef YY_DECL
1184: #define YY_DECL_IS_OURS 1
1185: /* %if-c-only Standard (non-C++) definition */
1186:
1187: extern int yylex \
1188: (YYSTYPE * yylval_param , yyscan_t yyscanner);
1189:
1190: #define YY_DECL int yylex \
1191: (YYSTYPE * yylval_param , yyscan_t yyscanner)
1192: /* %endif */
1193: /* %if-c++-only C++ definition */
1194: /* %endif */
1195: #endif /* !YY_DECL */
1196:
1197: /* Code executed at the beginning of each rule, after yytext and yyleng
1198: * have been set up.
1199: */
1200: #ifndef YY_USER_ACTION
1201: #define YY_USER_ACTION
1202: #endif
1203:
1204: /* Code executed at the end of each rule. */
1205: #ifndef YY_BREAK
1206: #define YY_BREAK /*LINTED*/break;
1207: #endif
1208:
1209: /* %% [6.0] YY_RULE_SETUP definition goes here */
1210: #define YY_RULE_SETUP \
1211: YY_USER_ACTION
1212:
1213: /* %not-for-header */
1214: /** The main scanner function which does all the work.
1215: */
1216: YY_DECL
1217: {
1218: yy_state_type yy_current_state;
1219: char *yy_cp, *yy_bp;
1220: int yy_act;
1221: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1222:
1223: yylval = yylval_param;
1224:
1225: if ( !yyg->yy_init )
1226: {
1227: yyg->yy_init = 1;
1228:
1229: #ifdef YY_USER_INIT
1230: YY_USER_INIT;
1231: #endif
1232:
1233: if ( ! yyg->yy_start )
1234: yyg->yy_start = 1; /* first start state */
1235:
1236: if ( ! yyin )
1237: /* %if-c-only */
1238: yyin = stdin;
1239: /* %endif */
1240: /* %if-c++-only */
1241: /* %endif */
1242:
1243: if ( ! yyout )
1244: /* %if-c-only */
1245: yyout = stdout;
1246: /* %endif */
1247: /* %if-c++-only */
1248: /* %endif */
1249:
1250: if ( ! YY_CURRENT_BUFFER ) {
1251: yyensure_buffer_stack (yyscanner);
1252: YY_CURRENT_BUFFER_LVALUE =
1253: yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
1254: }
1255:
1256: yy_load_buffer_state( yyscanner );
1257: }
1258:
1259: {
1260: /* %% [7.0] user's declarations go here */
1261: #line 69 "settings/settings_lexer.l"
1262:
1263:
1264: #line 1265 "settings/settings_lexer.c"
1265:
1266: while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1267: {
1268: /* %% [8.0] yymore()-related code goes here */
1269: yy_cp = yyg->yy_c_buf_p;
1270:
1271: /* Support of yytext. */
1272: *yy_cp = yyg->yy_hold_char;
1273:
1274: /* yy_bp points to the position in yy_ch_buf of the start of
1275: * the current run.
1276: */
1277: yy_bp = yy_cp;
1278:
1279: /* %% [9.0] code to set up and find next match goes here */
1280: yy_current_state = yyg->yy_start;
1281: yy_match:
1282: do
1283: {
1284: YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1285: if ( yy_accept[yy_current_state] )
1286: {
1287: yyg->yy_last_accepting_state = yy_current_state;
1288: yyg->yy_last_accepting_cpos = yy_cp;
1289: }
1290: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1291: {
1292: yy_current_state = (int) yy_def[yy_current_state];
1293: if ( yy_current_state >= 85 )
1294: yy_c = yy_meta[yy_c];
1295: }
1296: yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1297: ++yy_cp;
1298: }
1299: while ( yy_current_state != 84 );
1300: yy_cp = yyg->yy_last_accepting_cpos;
1301: yy_current_state = yyg->yy_last_accepting_state;
1302:
1303: yy_find_action:
1304: /* %% [10.0] code to find the action number goes here */
1305: yy_act = yy_accept[yy_current_state];
1306:
1307: YY_DO_BEFORE_ACTION;
1308:
1309: /* %% [11.0] code for yylineno update goes here */
1310:
1311: if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
1312: {
1313: int yyl;
1314: for ( yyl = 0; yyl < yyleng; ++yyl )
1315: if ( yytext[yyl] == '\n' )
1316:
1317: do{ yylineno++;
1318: yycolumn=0;
1319: }while(0)
1320: ;
1321: }
1322:
1323: do_action: /* This label is used only to access EOF actions. */
1324:
1325: /* %% [12.0] debug code goes here */
1326: if ( yy_flex_debug )
1327: {
1328: if ( yy_act == 0 )
1329: fprintf( stderr, "--scanner backing up\n" );
1330: else if ( yy_act < 39 )
1331: fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1332: (long)yy_rule_linenum[yy_act], yytext );
1333: else if ( yy_act == 39 )
1334: fprintf( stderr, "--accepting default rule (\"%s\")\n",
1335: yytext );
1336: else if ( yy_act == 40 )
1337: fprintf( stderr, "--(end of buffer or a NUL)\n" );
1338: else
1339: fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1340: }
1341:
1342: switch ( yy_act )
1343: { /* beginning of action switch */
1344: /* %% [13.0] actions go here */
1345: case 0: /* must back up */
1346: /* undo the effects of YY_DO_BEFORE_ACTION */
1347: *yy_cp = yyg->yy_hold_char;
1348: yy_cp = yyg->yy_last_accepting_cpos;
1349: yy_current_state = yyg->yy_last_accepting_state;
1350: goto yy_find_action;
1351:
1352: case 1:
1353: YY_RULE_SETUP
1354: #line 71 "settings/settings_lexer.l"
1355: /* eat comments */
1356: YY_BREAK
1357: case 2:
1358: YY_RULE_SETUP
1359: #line 72 "settings/settings_lexer.l"
1360: /* eat whitespace */
1361: YY_BREAK
1362: case 3:
1363: /* rule 3 can match eol */
1364: YY_RULE_SETUP
1365: #line 73 "settings/settings_lexer.l"
1366: /* eat newlines and comments at the end of a line */
1367: YY_BREAK
1368: case 4:
1369: #line 76 "settings/settings_lexer.l"
1370: case 5:
1371: YY_RULE_SETUP
1372: #line 76 "settings/settings_lexer.l"
1373: return yytext[0];
1374: YY_BREAK
1375: case 6:
1376: YY_RULE_SETUP
1377: #line 78 "settings/settings_lexer.l"
1378: return DOT;
1379: YY_BREAK
1380: case 7:
1381: YY_RULE_SETUP
1382: #line 79 "settings/settings_lexer.l"
1383: return COMMA;
1384: YY_BREAK
1385: case 8:
1386: YY_RULE_SETUP
1387: #line 81 "settings/settings_lexer.l"
1388: {
1389: yy_push_state(ref, yyscanner);
1390: return COLON;
1391: }
1392: YY_BREAK
1393: case 9:
1394: YY_RULE_SETUP
1395: #line 86 "settings/settings_lexer.l"
1396: {
1397: yy_push_state(val, yyscanner);
1398: return yytext[0];
1399: }
1400: YY_BREAK
1401: case 10:
1402: /* rule 10 can match eol */
1403: *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1404: YY_LINENO_REWIND_TO(yy_cp - 1);
1405: yyg->yy_c_buf_p = yy_cp -= 1;
1406: YY_DO_BEFORE_ACTION; /* set up yytext again */
1407: YY_RULE_SETUP
1408: #line 91 "settings/settings_lexer.l"
1409: {
1410: yyextra->string_init(yyextra);
1411: yy_push_state(inc, yyscanner);
1412: }
1413: YY_BREAK
1414: case 11:
1415: YY_RULE_SETUP
1416: #line 96 "settings/settings_lexer.l"
1417: {
1418: PARSER_DBG1(yyextra, "unexpected string detected");
1419: return STRING_ERROR;
1420: }
1421: YY_BREAK
1422: case 12:
1423: YY_RULE_SETUP
1424: #line 101 "settings/settings_lexer.l"
1425: {
1426: yylval->s = strdup(yytext);
1427: return NAME;
1428: }
1429: YY_BREAK
1430:
1431: case 13:
1432: YY_RULE_SETUP
1433: #line 107 "settings/settings_lexer.l"
1434: /* eat comments */
1435: YY_BREAK
1436: case 14:
1437: YY_RULE_SETUP
1438: #line 108 "settings/settings_lexer.l"
1439: /* eat whitespace */
1440: YY_BREAK
1441: case 15:
1442: /* rule 15 can match eol */
1443: YY_RULE_SETUP
1444: #line 109 "settings/settings_lexer.l"
1445: /* eat newlines and comments at the end of a line */
1446: YY_BREAK
1447: case 16:
1448: YY_RULE_SETUP
1449: #line 111 "settings/settings_lexer.l"
1450: return COMMA;
1451: YY_BREAK
1452: case 17:
1453: YY_RULE_SETUP
1454: #line 113 "settings/settings_lexer.l"
1455: {
1456: yylval->s = strdup(yytext);
1457: return NAME;
1458: }
1459: YY_BREAK
1460: case 18:
1461: YY_RULE_SETUP
1462: #line 118 "settings/settings_lexer.l"
1463: {
1464: unput(yytext[0]);
1465: yy_pop_state(yyscanner);
1466: }
1467: YY_BREAK
1468:
1469:
1470: case 19:
1471: YY_RULE_SETUP
1472: #line 125 "settings/settings_lexer.l"
1473: /* just ignore these */
1474: YY_BREAK
1475: case 20:
1476: YY_RULE_SETUP
1477: #line 126 "settings/settings_lexer.l"
1478:
1479: YY_BREAK
1480: case YY_STATE_EOF(val):
1481: #line 127 "settings/settings_lexer.l"
1482: case 21:
1483: /* rule 21 can match eol */
1484: YY_RULE_SETUP
1485: #line 128 "settings/settings_lexer.l"
1486: {
1487: if (*yytext)
1488: {
1489: switch (yytext[0])
1490: {
1491: case '\n':
1492: /* put the newline back to fix the line numbers */
1493: unput('\n');
1494: yy_set_bol(0);
1495: break;
1496: case '#':
1497: case '}':
1498: /* these are parsed outside of this start condition */
1499: unput(yytext[0]);
1500: break;
1501: }
1502: }
1503: yy_pop_state(yyscanner);
1504: return NEWLINE;
1505: }
1506: YY_BREAK
1507: case 22:
1508: YY_RULE_SETUP
1509: #line 149 "settings/settings_lexer.l"
1510: {
1511: yyextra->string_init(yyextra);
1512: yy_push_state(str, yyscanner);
1513: }
1514: YY_BREAK
1515: /* same as above, but allow more characters */
1516: case 23:
1517: YY_RULE_SETUP
1518: #line 155 "settings/settings_lexer.l"
1519: {
1520: yylval->s = strdup(yytext);
1521: return NAME;
1522: }
1523: YY_BREAK
1524:
1525:
1526: case 24:
1527: YY_RULE_SETUP
1528: #line 162 "settings/settings_lexer.l"
1529: /* just ignore these */
1530: YY_BREAK
1531: /* we allow all characters except #, } and spaces, they can be escaped */
1532: case YY_STATE_EOF(inc):
1533: #line 164 "settings/settings_lexer.l"
1534: case 25:
1535: /* rule 25 can match eol */
1536: YY_RULE_SETUP
1537: #line 165 "settings/settings_lexer.l"
1538: {
1539: if (*yytext)
1540: {
1541: switch (yytext[0])
1542: {
1543: case '\n':
1544: /* put the newline back to fix the line numbers */
1545: unput('\n');
1546: yy_set_bol(0);
1547: break;
1548: case '#':
1549: case '}':
1550: /* these are parsed outside of this start condition */
1551: unput(yytext[0]);
1552: break;
1553: }
1554: }
1555: include_files(yyextra);
1556: yy_pop_state(yyscanner);
1557: }
1558: YY_BREAK
1559: case 26:
1560: YY_RULE_SETUP
1561: #line 185 "settings/settings_lexer.l"
1562: { /* string include */
1563: yy_push_state(str, yyscanner);
1564: }
1565: YY_BREAK
1566: case 27:
1567: YY_RULE_SETUP
1568: #line 188 "settings/settings_lexer.l"
1569: {
1570: yyextra->string_add(yyextra, yytext);
1571: }
1572: YY_BREAK
1573: case 28:
1574: YY_RULE_SETUP
1575: #line 191 "settings/settings_lexer.l"
1576: {
1577: yyextra->string_add(yyextra, yytext+1);
1578: }
1579: YY_BREAK
1580: case 29:
1581: YY_RULE_SETUP
1582: #line 194 "settings/settings_lexer.l"
1583: {
1584: yyextra->string_add(yyextra, yytext);
1585: }
1586: YY_BREAK
1587:
1588:
1589: case 30:
1590: YY_RULE_SETUP
1591: #line 200 "settings/settings_lexer.l"
1592: /* just ignore these */
1593: YY_BREAK
1594: case 31:
1595: #line 202 "settings/settings_lexer.l"
1596: YY_RULE_SETUP
1597: case YY_STATE_EOF(str):
1598: #line 202 "settings/settings_lexer.l"
1599: case 32:
1600: YY_RULE_SETUP
1601: #line 203 "settings/settings_lexer.l"
1602: {
1603: if (!streq(yytext, "\""))
1604: {
1605: PARSER_DBG1(yyextra, "unterminated string detected");
1606: return STRING_ERROR;
1607: }
1608: if (yy_top_state(yyscanner) == inc)
1609: { /* string include */
1610: include_files(yyextra);
1611: yy_pop_state(yyscanner);
1612: yy_pop_state(yyscanner);
1613: }
1614: else
1615: {
1616: yy_pop_state(yyscanner);
1617: yylval->s = yyextra->string_get(yyextra);
1618: return STRING;
1619: }
1620: }
1621: YY_BREAK
1622: case 33:
1623: YY_RULE_SETUP
1624: #line 223 "settings/settings_lexer.l"
1625: yyextra->string_add(yyextra, "\n");
1626: YY_BREAK
1627: case 34:
1628: YY_RULE_SETUP
1629: #line 224 "settings/settings_lexer.l"
1630: yyextra->string_add(yyextra, "\r");
1631: YY_BREAK
1632: case 35:
1633: YY_RULE_SETUP
1634: #line 225 "settings/settings_lexer.l"
1635: yyextra->string_add(yyextra, "\t");
1636: YY_BREAK
1637: case 36:
1638: /* rule 36 can match eol */
1639: YY_RULE_SETUP
1640: #line 226 "settings/settings_lexer.l"
1641: /* merge lines that end with escaped EOL characters */
1642: YY_BREAK
1643: case 37:
1644: YY_RULE_SETUP
1645: #line 227 "settings/settings_lexer.l"
1646: yyextra->string_add(yyextra, yytext+1);
1647: YY_BREAK
1648: case 38:
1649: /* rule 38 can match eol */
1650: YY_RULE_SETUP
1651: #line 228 "settings/settings_lexer.l"
1652: {
1653: yyextra->string_add(yyextra, yytext);
1654: }
1655: YY_BREAK
1656:
1657: case YY_STATE_EOF(INITIAL):
1658: case YY_STATE_EOF(ref):
1659: #line 233 "settings/settings_lexer.l"
1660: {
1661: settings_parser_pop_buffer_state(yyscanner);
1662: if (!settings_parser_open_next_file(yyextra) && !YY_CURRENT_BUFFER)
1663: {
1664: yyterminate();
1665: }
1666: }
1667: YY_BREAK
1668: case 39:
1669: YY_RULE_SETUP
1670: #line 241 "settings/settings_lexer.l"
1671: YY_FATAL_ERROR( "flex scanner jammed" );
1672: YY_BREAK
1673: #line 1674 "settings/settings_lexer.c"
1674:
1675: case YY_END_OF_BUFFER:
1676: {
1677: /* Amount of text matched not including the EOB char. */
1678: int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1679:
1680: /* Undo the effects of YY_DO_BEFORE_ACTION. */
1681: *yy_cp = yyg->yy_hold_char;
1682: YY_RESTORE_YY_MORE_OFFSET
1683:
1684: if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1685: {
1686: /* We're scanning a new file or input source. It's
1687: * possible that this happened because the user
1688: * just pointed yyin at a new source and called
1689: * yylex(). If so, then we have to assure
1690: * consistency between YY_CURRENT_BUFFER and our
1691: * globals. Here is the right place to do so, because
1692: * this is the first action (other than possibly a
1693: * back-up) that will match for the new input source.
1694: */
1695: yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1696: /* %if-c-only */
1697: YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1698: /* %endif */
1699: /* %if-c++-only */
1700: /* %endif */
1701: YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1702: }
1703:
1704: /* Note that here we test for yy_c_buf_p "<=" to the position
1705: * of the first EOB in the buffer, since yy_c_buf_p will
1706: * already have been incremented past the NUL character
1707: * (since all states make transitions on EOB to the
1708: * end-of-buffer state). Contrast this with the test
1709: * in input().
1710: */
1711: if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1712: { /* This was really a NUL. */
1713: yy_state_type yy_next_state;
1714:
1715: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1716:
1717: yy_current_state = yy_get_previous_state( yyscanner );
1718:
1719: /* Okay, we're now positioned to make the NUL
1720: * transition. We couldn't have
1721: * yy_get_previous_state() go ahead and do it
1722: * for us because it doesn't know how to deal
1723: * with the possibility of jamming (and we don't
1724: * want to build jamming into it because then it
1725: * will run more slowly).
1726: */
1727:
1728: yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1729:
1730: yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1731:
1732: if ( yy_next_state )
1733: {
1734: /* Consume the NUL. */
1735: yy_cp = ++yyg->yy_c_buf_p;
1736: yy_current_state = yy_next_state;
1737: goto yy_match;
1738: }
1739:
1740: else
1741: {
1742: /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
1743: yy_cp = yyg->yy_last_accepting_cpos;
1744: yy_current_state = yyg->yy_last_accepting_state;
1745: goto yy_find_action;
1746: }
1747: }
1748:
1749: else switch ( yy_get_next_buffer( yyscanner ) )
1750: {
1751: case EOB_ACT_END_OF_FILE:
1752: {
1753: yyg->yy_did_buffer_switch_on_eof = 0;
1754:
1755: if ( yywrap( yyscanner ) )
1756: {
1757: /* Note: because we've taken care in
1758: * yy_get_next_buffer() to have set up
1759: * yytext, we can now set up
1760: * yy_c_buf_p so that if some total
1761: * hoser (like flex itself) wants to
1762: * call the scanner after we return the
1763: * YY_NULL, it'll still work - another
1764: * YY_NULL will get returned.
1765: */
1766: yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1767:
1768: yy_act = YY_STATE_EOF(YY_START);
1769: goto do_action;
1770: }
1771:
1772: else
1773: {
1774: if ( ! yyg->yy_did_buffer_switch_on_eof )
1775: YY_NEW_FILE;
1776: }
1777: break;
1778: }
1779:
1780: case EOB_ACT_CONTINUE_SCAN:
1781: yyg->yy_c_buf_p =
1782: yyg->yytext_ptr + yy_amount_of_matched_text;
1783:
1784: yy_current_state = yy_get_previous_state( yyscanner );
1785:
1786: yy_cp = yyg->yy_c_buf_p;
1787: yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1788: goto yy_match;
1789:
1790: case EOB_ACT_LAST_MATCH:
1791: yyg->yy_c_buf_p =
1792: &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1793:
1794: yy_current_state = yy_get_previous_state( yyscanner );
1795:
1796: yy_cp = yyg->yy_c_buf_p;
1797: yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1798: goto yy_find_action;
1799: }
1800: break;
1801: }
1802:
1803: default:
1804: YY_FATAL_ERROR(
1805: "fatal flex scanner internal error--no action found" );
1806: } /* end of action switch */
1807: } /* end of scanning one token */
1808: } /* end of user's declarations */
1809: } /* end of yylex */
1810: /* %ok-for-header */
1811:
1812: /* %if-c++-only */
1813: /* %not-for-header */
1814: /* %ok-for-header */
1815:
1816: /* %endif */
1817:
1818: /* yy_get_next_buffer - try to read in a new buffer
1819: *
1820: * Returns a code representing an action:
1821: * EOB_ACT_LAST_MATCH -
1822: * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1823: * EOB_ACT_END_OF_FILE - end of file
1824: */
1825: /* %if-c-only */
1826: static int yy_get_next_buffer (yyscan_t yyscanner)
1827: /* %endif */
1828: /* %if-c++-only */
1829: /* %endif */
1830: {
1831: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1832: char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1833: char *source = yyg->yytext_ptr;
1834: int number_to_move, i;
1835: int ret_val;
1836:
1837: if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1838: YY_FATAL_ERROR(
1839: "fatal flex scanner internal error--end of buffer missed" );
1840:
1841: if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1842: { /* Don't try to fill the buffer, so this is an EOF. */
1843: if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1844: {
1845: /* We matched a single character, the EOB, so
1846: * treat this as a final EOF.
1847: */
1848: return EOB_ACT_END_OF_FILE;
1849: }
1850:
1851: else
1852: {
1853: /* We matched some text prior to the EOB, first
1854: * process it.
1855: */
1856: return EOB_ACT_LAST_MATCH;
1857: }
1858: }
1859:
1860: /* Try to read more data. */
1861:
1862: /* First move last chars to start of buffer. */
1863: number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
1864:
1865: for ( i = 0; i < number_to_move; ++i )
1866: *(dest++) = *(source++);
1867:
1868: if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1869: /* don't do the read, it's not guaranteed to return an EOF,
1870: * just force an EOF
1871: */
1872: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1873:
1874: else
1875: {
1876: int num_to_read =
1877: YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1878:
1879: while ( num_to_read <= 0 )
1880: { /* Not enough room in the buffer - grow it. */
1881:
1882: /* just a shorter name for the current buffer */
1883: YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1884:
1885: int yy_c_buf_p_offset =
1886: (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1887:
1888: if ( b->yy_is_our_buffer )
1889: {
1890: int new_size = b->yy_buf_size * 2;
1891:
1892: if ( new_size <= 0 )
1893: b->yy_buf_size += b->yy_buf_size / 8;
1894: else
1895: b->yy_buf_size *= 2;
1896:
1897: b->yy_ch_buf = (char *)
1898: /* Include room in for 2 EOB chars. */
1899: yyrealloc( (void *) b->yy_ch_buf,
1900: (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
1901: }
1902: else
1903: /* Can't grow it, we don't own it. */
1904: b->yy_ch_buf = NULL;
1905:
1906: if ( ! b->yy_ch_buf )
1907: YY_FATAL_ERROR(
1908: "fatal error - scanner input buffer overflow" );
1909:
1910: yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1911:
1912: num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1913: number_to_move - 1;
1914:
1915: }
1916:
1917: if ( num_to_read > YY_READ_BUF_SIZE )
1918: num_to_read = YY_READ_BUF_SIZE;
1919:
1920: /* Read in more data. */
1921: YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1922: yyg->yy_n_chars, num_to_read );
1923:
1924: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1925: }
1926:
1927: if ( yyg->yy_n_chars == 0 )
1928: {
1929: if ( number_to_move == YY_MORE_ADJ )
1930: {
1931: ret_val = EOB_ACT_END_OF_FILE;
1932: yyrestart( yyin , yyscanner);
1933: }
1934:
1935: else
1936: {
1937: ret_val = EOB_ACT_LAST_MATCH;
1938: YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1939: YY_BUFFER_EOF_PENDING;
1940: }
1941: }
1942:
1943: else
1944: ret_val = EOB_ACT_CONTINUE_SCAN;
1945:
1946: if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1947: /* Extend the array by 50%, plus the number we really need. */
1948: int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1949: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
1950: (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
1951: if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1952: YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1953: /* "- 2" to take care of EOB's */
1954: YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
1955: }
1956:
1957: yyg->yy_n_chars += number_to_move;
1958: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1959: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1960:
1961: yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1962:
1963: return ret_val;
1964: }
1965:
1966: /* yy_get_previous_state - get the state just before the EOB char was reached */
1967:
1968: /* %if-c-only */
1969: /* %not-for-header */
1970: static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1971: /* %endif */
1972: /* %if-c++-only */
1973: /* %endif */
1974: {
1975: yy_state_type yy_current_state;
1976: char *yy_cp;
1977: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1978:
1979: /* %% [15.0] code to get the start state into yy_current_state goes here */
1980: yy_current_state = yyg->yy_start;
1981:
1982: for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1983: {
1984: /* %% [16.0] code to find the next state goes here */
1985: YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1986: if ( yy_accept[yy_current_state] )
1987: {
1988: yyg->yy_last_accepting_state = yy_current_state;
1989: yyg->yy_last_accepting_cpos = yy_cp;
1990: }
1991: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1992: {
1993: yy_current_state = (int) yy_def[yy_current_state];
1994: if ( yy_current_state >= 85 )
1995: yy_c = yy_meta[yy_c];
1996: }
1997: yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1998: }
1999:
2000: return yy_current_state;
2001: }
2002:
2003: /* yy_try_NUL_trans - try to make a transition on the NUL character
2004: *
2005: * synopsis
2006: * next_state = yy_try_NUL_trans( current_state );
2007: */
2008: /* %if-c-only */
2009: static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2010: /* %endif */
2011: /* %if-c++-only */
2012: /* %endif */
2013: {
2014: int yy_is_jam;
2015: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2016: /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2017: char *yy_cp = yyg->yy_c_buf_p;
2018:
2019: YY_CHAR yy_c = 1;
2020: if ( yy_accept[yy_current_state] )
2021: {
2022: yyg->yy_last_accepting_state = yy_current_state;
2023: yyg->yy_last_accepting_cpos = yy_cp;
2024: }
2025: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2026: {
2027: yy_current_state = (int) yy_def[yy_current_state];
2028: if ( yy_current_state >= 85 )
2029: yy_c = yy_meta[yy_c];
2030: }
2031: yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2032: yy_is_jam = (yy_current_state == 84);
2033:
2034: (void)yyg;
2035: return yy_is_jam ? 0 : yy_current_state;
2036: }
2037:
2038: #ifndef YY_NO_UNPUT
2039: /* %if-c-only */
2040:
2041: static void yyunput (int c, char * yy_bp , yyscan_t yyscanner)
2042: /* %endif */
2043: /* %if-c++-only */
2044: /* %endif */
2045: {
2046: char *yy_cp;
2047: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2048:
2049: yy_cp = yyg->yy_c_buf_p;
2050:
2051: /* undo effects of setting up yytext */
2052: *yy_cp = yyg->yy_hold_char;
2053:
2054: if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2055: { /* need to shift things up to make room */
2056: /* +2 for EOB chars. */
2057: int number_to_move = yyg->yy_n_chars + 2;
2058: char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2059: YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2060: char *source =
2061: &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2062:
2063: while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2064: *--dest = *--source;
2065:
2066: yy_cp += (int) (dest - source);
2067: yy_bp += (int) (dest - source);
2068: YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2069: yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2070:
2071: if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2072: YY_FATAL_ERROR( "flex scanner push-back overflow" );
2073: }
2074:
2075: *--yy_cp = (char) c;
2076:
2077: /* %% [18.0] update yylineno here */
2078:
2079: if ( c == '\n' ){
2080: --yylineno;
2081: }
2082:
2083: yyg->yytext_ptr = yy_bp;
2084: yyg->yy_hold_char = *yy_cp;
2085: yyg->yy_c_buf_p = yy_cp;
2086: }
2087: /* %if-c-only */
2088:
2089: /* %endif */
2090: #endif
2091:
2092: /* %if-c-only */
2093: #ifndef YY_NO_INPUT
2094: #ifdef __cplusplus
2095: static int yyinput (yyscan_t yyscanner)
2096: #else
2097: static int input (yyscan_t yyscanner)
2098: #endif
2099:
2100: /* %endif */
2101: /* %if-c++-only */
2102: /* %endif */
2103: {
2104: int c;
2105: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2106:
2107: *yyg->yy_c_buf_p = yyg->yy_hold_char;
2108:
2109: if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2110: {
2111: /* yy_c_buf_p now points to the character we want to return.
2112: * If this occurs *before* the EOB characters, then it's a
2113: * valid NUL; if not, then we've hit the end of the buffer.
2114: */
2115: if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2116: /* This was really a NUL. */
2117: *yyg->yy_c_buf_p = '\0';
2118:
2119: else
2120: { /* need more input */
2121: int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
2122: ++yyg->yy_c_buf_p;
2123:
2124: switch ( yy_get_next_buffer( yyscanner ) )
2125: {
2126: case EOB_ACT_LAST_MATCH:
2127: /* This happens because yy_g_n_b()
2128: * sees that we've accumulated a
2129: * token and flags that we need to
2130: * try matching the token before
2131: * proceeding. But for input(),
2132: * there's no matching to consider.
2133: * So convert the EOB_ACT_LAST_MATCH
2134: * to EOB_ACT_END_OF_FILE.
2135: */
2136:
2137: /* Reset buffer status. */
2138: yyrestart( yyin , yyscanner);
2139:
2140: /*FALLTHROUGH*/
2141:
2142: case EOB_ACT_END_OF_FILE:
2143: {
2144: if ( yywrap( yyscanner ) )
2145: return 0;
2146:
2147: if ( ! yyg->yy_did_buffer_switch_on_eof )
2148: YY_NEW_FILE;
2149: #ifdef __cplusplus
2150: return yyinput(yyscanner);
2151: #else
2152: return input(yyscanner);
2153: #endif
2154: }
2155:
2156: case EOB_ACT_CONTINUE_SCAN:
2157: yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2158: break;
2159: }
2160: }
2161: }
2162:
2163: c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2164: *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2165: yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2166:
2167: /* %% [19.0] update BOL and yylineno */
2168: if ( c == '\n' )
2169:
2170: do{ yylineno++;
2171: yycolumn=0;
2172: }while(0)
2173: ;
2174:
2175: return c;
2176: }
2177: /* %if-c-only */
2178: #endif /* ifndef YY_NO_INPUT */
2179: /* %endif */
2180:
2181: /** Immediately switch to a different input stream.
2182: * @param input_file A readable stream.
2183: * @param yyscanner The scanner object.
2184: * @note This function does not reset the start condition to @c INITIAL .
2185: */
2186: /* %if-c-only */
2187: void yyrestart (FILE * input_file , yyscan_t yyscanner)
2188: /* %endif */
2189: /* %if-c++-only */
2190: /* %endif */
2191: {
2192: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2193:
2194: if ( ! YY_CURRENT_BUFFER ){
2195: yyensure_buffer_stack (yyscanner);
2196: YY_CURRENT_BUFFER_LVALUE =
2197: yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
2198: }
2199:
2200: yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
2201: yy_load_buffer_state( yyscanner );
2202: }
2203:
2204: /* %if-c++-only */
2205: /* %endif */
2206:
2207: /** Switch to a different input buffer.
2208: * @param new_buffer The new input buffer.
2209: * @param yyscanner The scanner object.
2210: */
2211: /* %if-c-only */
2212: void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2213: /* %endif */
2214: /* %if-c++-only */
2215: /* %endif */
2216: {
2217: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2218:
2219: /* TODO. We should be able to replace this entire function body
2220: * with
2221: * yypop_buffer_state();
2222: * yypush_buffer_state(new_buffer);
2223: */
2224: yyensure_buffer_stack (yyscanner);
2225: if ( YY_CURRENT_BUFFER == new_buffer )
2226: return;
2227:
2228: if ( YY_CURRENT_BUFFER )
2229: {
2230: /* Flush out information for old buffer. */
2231: *yyg->yy_c_buf_p = yyg->yy_hold_char;
2232: YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2233: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2234: }
2235:
2236: YY_CURRENT_BUFFER_LVALUE = new_buffer;
2237: yy_load_buffer_state( yyscanner );
2238:
2239: /* We don't actually know whether we did this switch during
2240: * EOF (yywrap()) processing, but the only time this flag
2241: * is looked at is after yywrap() is called, so it's safe
2242: * to go ahead and always set it.
2243: */
2244: yyg->yy_did_buffer_switch_on_eof = 1;
2245: }
2246:
2247: /* %if-c-only */
2248: static void yy_load_buffer_state (yyscan_t yyscanner)
2249: /* %endif */
2250: /* %if-c++-only */
2251: /* %endif */
2252: {
2253: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2254: yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2255: yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2256: /* %if-c-only */
2257: yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2258: /* %endif */
2259: /* %if-c++-only */
2260: /* %endif */
2261: yyg->yy_hold_char = *yyg->yy_c_buf_p;
2262: }
2263:
2264: /** Allocate and initialize an input buffer state.
2265: * @param file A readable stream.
2266: * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2267: * @param yyscanner The scanner object.
2268: * @return the allocated buffer state.
2269: */
2270: /* %if-c-only */
2271: YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
2272: /* %endif */
2273: /* %if-c++-only */
2274: /* %endif */
2275: {
2276: YY_BUFFER_STATE b;
2277:
2278: b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
2279: if ( ! b )
2280: YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2281:
2282: b->yy_buf_size = size;
2283:
2284: /* yy_ch_buf has to be 2 characters longer than the size given because
2285: * we need to put in 2 end-of-buffer characters.
2286: */
2287: b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
2288: if ( ! b->yy_ch_buf )
2289: YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2290:
2291: b->yy_is_our_buffer = 1;
2292:
2293: yy_init_buffer( b, file , yyscanner);
2294:
2295: return b;
2296: }
2297:
2298: /* %if-c++-only */
2299: /* %endif */
2300:
2301: /** Destroy the buffer.
2302: * @param b a buffer created with yy_create_buffer()
2303: * @param yyscanner The scanner object.
2304: */
2305: /* %if-c-only */
2306: void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2307: /* %endif */
2308: /* %if-c++-only */
2309: /* %endif */
2310: {
2311: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2312:
2313: if ( ! b )
2314: return;
2315:
2316: if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2317: YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2318:
2319: if ( b->yy_is_our_buffer )
2320: yyfree( (void *) b->yy_ch_buf , yyscanner );
2321:
2322: yyfree( (void *) b , yyscanner );
2323: }
2324:
2325: /* Initializes or reinitializes a buffer.
2326: * This function is sometimes called more than once on the same buffer,
2327: * such as during a yyrestart() or at EOF.
2328: */
2329: /* %if-c-only */
2330: static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
2331: /* %endif */
2332: /* %if-c++-only */
2333: /* %endif */
2334:
2335: {
2336: int oerrno = errno;
2337: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2338:
2339: yy_flush_buffer( b , yyscanner);
2340:
2341: /* %if-c-only */
2342: b->yy_input_file = file;
2343: /* %endif */
2344: /* %if-c++-only */
2345: /* %endif */
2346: b->yy_fill_buffer = 1;
2347:
2348: /* If b is the current buffer, then yy_init_buffer was _probably_
2349: * called from yyrestart() or through yy_get_next_buffer.
2350: * In that case, we don't want to reset the lineno or column.
2351: */
2352: if (b != YY_CURRENT_BUFFER){
2353: b->yy_bs_lineno = 1;
2354: b->yy_bs_column = 0;
2355: }
2356:
2357: /* %if-c-only */
2358:
2359: b->yy_is_interactive = 0;
2360:
2361: /* %endif */
2362: /* %if-c++-only */
2363: /* %endif */
2364: errno = oerrno;
2365: }
2366:
2367: /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2368: * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2369: * @param yyscanner The scanner object.
2370: */
2371: /* %if-c-only */
2372: void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2373: /* %endif */
2374: /* %if-c++-only */
2375: /* %endif */
2376: {
2377: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2378: if ( ! b )
2379: return;
2380:
2381: b->yy_n_chars = 0;
2382:
2383: /* We always need two end-of-buffer characters. The first causes
2384: * a transition to the end-of-buffer state. The second causes
2385: * a jam in that state.
2386: */
2387: b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2388: b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2389:
2390: b->yy_buf_pos = &b->yy_ch_buf[0];
2391:
2392: b->yy_at_bol = 1;
2393: b->yy_buffer_status = YY_BUFFER_NEW;
2394:
2395: if ( b == YY_CURRENT_BUFFER )
2396: yy_load_buffer_state( yyscanner );
2397: }
2398:
2399: /* %if-c-or-c++ */
2400: /** Pushes the new state onto the stack. The new state becomes
2401: * the current state. This function will allocate the stack
2402: * if necessary.
2403: * @param new_buffer The new state.
2404: * @param yyscanner The scanner object.
2405: */
2406: /* %if-c-only */
2407: void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2408: /* %endif */
2409: /* %if-c++-only */
2410: /* %endif */
2411: {
2412: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2413: if (new_buffer == NULL)
2414: return;
2415:
2416: yyensure_buffer_stack(yyscanner);
2417:
2418: /* This block is copied from yy_switch_to_buffer. */
2419: if ( YY_CURRENT_BUFFER )
2420: {
2421: /* Flush out information for old buffer. */
2422: *yyg->yy_c_buf_p = yyg->yy_hold_char;
2423: YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2424: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2425: }
2426:
2427: /* Only push if top exists. Otherwise, replace top. */
2428: if (YY_CURRENT_BUFFER)
2429: yyg->yy_buffer_stack_top++;
2430: YY_CURRENT_BUFFER_LVALUE = new_buffer;
2431:
2432: /* copied from yy_switch_to_buffer. */
2433: yy_load_buffer_state( yyscanner );
2434: yyg->yy_did_buffer_switch_on_eof = 1;
2435: }
2436: /* %endif */
2437:
2438: /* %if-c-or-c++ */
2439: /** Removes and deletes the top of the stack, if present.
2440: * The next element becomes the new top.
2441: * @param yyscanner The scanner object.
2442: */
2443: /* %if-c-only */
2444: void yypop_buffer_state (yyscan_t yyscanner)
2445: /* %endif */
2446: /* %if-c++-only */
2447: /* %endif */
2448: {
2449: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2450: if (!YY_CURRENT_BUFFER)
2451: return;
2452:
2453: yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
2454: YY_CURRENT_BUFFER_LVALUE = NULL;
2455: if (yyg->yy_buffer_stack_top > 0)
2456: --yyg->yy_buffer_stack_top;
2457:
2458: if (YY_CURRENT_BUFFER) {
2459: yy_load_buffer_state( yyscanner );
2460: yyg->yy_did_buffer_switch_on_eof = 1;
2461: }
2462: }
2463: /* %endif */
2464:
2465: /* %if-c-or-c++ */
2466: /* Allocates the stack if it does not exist.
2467: * Guarantees space for at least one push.
2468: */
2469: /* %if-c-only */
2470: static void yyensure_buffer_stack (yyscan_t yyscanner)
2471: /* %endif */
2472: /* %if-c++-only */
2473: /* %endif */
2474: {
2475: yy_size_t num_to_alloc;
2476: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2477:
2478: if (!yyg->yy_buffer_stack) {
2479:
2480: /* First allocation is just for 2 elements, since we don't know if this
2481: * scanner will even need a stack. We use 2 instead of 1 to avoid an
2482: * immediate realloc on the next call.
2483: */
2484: num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2485: yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
2486: (num_to_alloc * sizeof(struct yy_buffer_state*)
2487: , yyscanner);
2488: if ( ! yyg->yy_buffer_stack )
2489: YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2490:
2491: memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2492:
2493: yyg->yy_buffer_stack_max = num_to_alloc;
2494: yyg->yy_buffer_stack_top = 0;
2495: return;
2496: }
2497:
2498: if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2499:
2500: /* Increase the buffer to prepare for a possible push. */
2501: yy_size_t grow_size = 8 /* arbitrary grow size */;
2502:
2503: num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2504: yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
2505: (yyg->yy_buffer_stack,
2506: num_to_alloc * sizeof(struct yy_buffer_state*)
2507: , yyscanner);
2508: if ( ! yyg->yy_buffer_stack )
2509: YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2510:
2511: /* zero only the new slots.*/
2512: memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2513: yyg->yy_buffer_stack_max = num_to_alloc;
2514: }
2515: }
2516: /* %endif */
2517:
2518: /* %if-c-only */
2519: /** Setup the input buffer state to scan directly from a user-specified character buffer.
2520: * @param base the character buffer
2521: * @param size the size in bytes of the character buffer
2522: * @param yyscanner The scanner object.
2523: * @return the newly allocated buffer state object.
2524: */
2525: YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
2526: {
2527: YY_BUFFER_STATE b;
2528:
2529: if ( size < 2 ||
2530: base[size-2] != YY_END_OF_BUFFER_CHAR ||
2531: base[size-1] != YY_END_OF_BUFFER_CHAR )
2532: /* They forgot to leave room for the EOB's. */
2533: return NULL;
2534:
2535: b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
2536: if ( ! b )
2537: YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2538:
2539: b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
2540: b->yy_buf_pos = b->yy_ch_buf = base;
2541: b->yy_is_our_buffer = 0;
2542: b->yy_input_file = NULL;
2543: b->yy_n_chars = b->yy_buf_size;
2544: b->yy_is_interactive = 0;
2545: b->yy_at_bol = 1;
2546: b->yy_fill_buffer = 0;
2547: b->yy_buffer_status = YY_BUFFER_NEW;
2548:
2549: yy_switch_to_buffer( b , yyscanner );
2550:
2551: return b;
2552: }
2553: /* %endif */
2554:
2555: /* %if-c-only */
2556: /** Setup the input buffer state to scan a string. The next call to yylex() will
2557: * scan from a @e copy of @a str.
2558: * @param yystr a NUL-terminated string to scan
2559: * @param yyscanner The scanner object.
2560: * @return the newly allocated buffer state object.
2561: * @note If you want to scan bytes that may contain NUL values, then use
2562: * yy_scan_bytes() instead.
2563: */
2564: YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
2565: {
2566:
2567: return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
2568: }
2569: /* %endif */
2570:
2571: /* %if-c-only */
2572: /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2573: * scan from a @e copy of @a bytes.
2574: * @param yybytes the byte buffer to scan
2575: * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2576: * @param yyscanner The scanner object.
2577: * @return the newly allocated buffer state object.
2578: */
2579: YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner)
2580: {
2581: YY_BUFFER_STATE b;
2582: char *buf;
2583: yy_size_t n;
2584: int i;
2585:
2586: /* Get memory for full buffer, including space for trailing EOB's. */
2587: n = (yy_size_t) (_yybytes_len + 2);
2588: buf = (char *) yyalloc( n , yyscanner );
2589: if ( ! buf )
2590: YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2591:
2592: for ( i = 0; i < _yybytes_len; ++i )
2593: buf[i] = yybytes[i];
2594:
2595: buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2596:
2597: b = yy_scan_buffer( buf, n , yyscanner);
2598: if ( ! b )
2599: YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2600:
2601: /* It's okay to grow etc. this buffer, and we should throw it
2602: * away when we're done.
2603: */
2604: b->yy_is_our_buffer = 1;
2605:
2606: return b;
2607: }
2608: /* %endif */
2609:
2610: /* %if-c-only */
2611: static void yy_push_state (int _new_state , yyscan_t yyscanner)
2612: /* %endif */
2613: /* %if-c++-only */
2614: /* %endif */
2615: {
2616: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2617: if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
2618: {
2619: yy_size_t new_size;
2620:
2621: yyg->yy_start_stack_depth += YY_START_STACK_INCR;
2622: new_size = (yy_size_t) yyg->yy_start_stack_depth * sizeof( int );
2623:
2624: if ( ! yyg->yy_start_stack )
2625: yyg->yy_start_stack = (int *) yyalloc( new_size , yyscanner );
2626:
2627: else
2628: yyg->yy_start_stack = (int *) yyrealloc(
2629: (void *) yyg->yy_start_stack, new_size , yyscanner );
2630:
2631: if ( ! yyg->yy_start_stack )
2632: YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
2633: }
2634:
2635: yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
2636:
2637: BEGIN(_new_state);
2638: }
2639:
2640: /* %if-c-only */
2641: static void yy_pop_state (yyscan_t yyscanner)
2642: /* %endif */
2643: /* %if-c++-only */
2644: /* %endif */
2645: {
2646: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2647: if ( --yyg->yy_start_stack_ptr < 0 )
2648: YY_FATAL_ERROR( "start-condition stack underflow" );
2649:
2650: BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
2651: }
2652:
2653: /* %if-c-only */
2654: static int yy_top_state (yyscan_t yyscanner)
2655: /* %endif */
2656: /* %if-c++-only */
2657: /* %endif */
2658: {
2659: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2660: return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
2661: }
2662:
2663: #ifndef YY_EXIT_FAILURE
2664: #define YY_EXIT_FAILURE 2
2665: #endif
2666:
2667: /* %if-c-only */
2668: static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
2669: {
2670: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2671: (void)yyg;
2672: fprintf( stderr, "%s\n", msg );
2673: exit( YY_EXIT_FAILURE );
2674: }
2675: /* %endif */
2676: /* %if-c++-only */
2677: /* %endif */
2678:
2679: /* Redefine yyless() so it works in section 3 code. */
2680:
2681: #undef yyless
2682: #define yyless(n) \
2683: do \
2684: { \
2685: /* Undo effects of setting up yytext. */ \
2686: int yyless_macro_arg = (n); \
2687: YY_LESS_LINENO(yyless_macro_arg);\
2688: yytext[yyleng] = yyg->yy_hold_char; \
2689: yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2690: yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2691: *yyg->yy_c_buf_p = '\0'; \
2692: yyleng = yyless_macro_arg; \
2693: } \
2694: while ( 0 )
2695:
2696: /* Accessor methods (get/set functions) to struct members. */
2697:
2698: /* %if-c-only */
2699: /* %if-reentrant */
2700:
2701: /** Get the user-defined data for this scanner.
2702: * @param yyscanner The scanner object.
2703: */
2704: YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
2705: {
2706: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2707: return yyextra;
2708: }
2709:
2710: /* %endif */
2711:
2712: /** Get the current line number.
2713: * @param yyscanner The scanner object.
2714: */
2715: int yyget_lineno (yyscan_t yyscanner)
2716: {
2717: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2718:
2719: if (! YY_CURRENT_BUFFER)
2720: return 0;
2721:
2722: return yylineno;
2723: }
2724:
2725: /** Get the current column number.
2726: * @param yyscanner The scanner object.
2727: */
2728: int yyget_column (yyscan_t yyscanner)
2729: {
2730: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2731:
2732: if (! YY_CURRENT_BUFFER)
2733: return 0;
2734:
2735: return yycolumn;
2736: }
2737:
2738: /** Get the input stream.
2739: * @param yyscanner The scanner object.
2740: */
2741: FILE *yyget_in (yyscan_t yyscanner)
2742: {
2743: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2744: return yyin;
2745: }
2746:
2747: /** Get the output stream.
2748: * @param yyscanner The scanner object.
2749: */
2750: FILE *yyget_out (yyscan_t yyscanner)
2751: {
2752: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2753: return yyout;
2754: }
2755:
2756: /** Get the length of the current token.
2757: * @param yyscanner The scanner object.
2758: */
2759: int yyget_leng (yyscan_t yyscanner)
2760: {
2761: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2762: return yyleng;
2763: }
2764:
2765: /** Get the current token.
2766: * @param yyscanner The scanner object.
2767: */
2768:
2769: char *yyget_text (yyscan_t yyscanner)
2770: {
2771: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2772: return yytext;
2773: }
2774:
2775: /* %if-reentrant */
2776:
2777: /** Set the user-defined data. This data is never touched by the scanner.
2778: * @param user_defined The data to be associated with this scanner.
2779: * @param yyscanner The scanner object.
2780: */
2781: void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
2782: {
2783: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2784: yyextra = user_defined ;
2785: }
2786:
2787: /* %endif */
2788:
2789: /** Set the current line number.
2790: * @param _line_number line number
2791: * @param yyscanner The scanner object.
2792: */
2793: void yyset_lineno (int _line_number , yyscan_t yyscanner)
2794: {
2795: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2796:
2797: /* lineno is only valid if an input buffer exists. */
2798: if (! YY_CURRENT_BUFFER )
2799: YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
2800:
2801: yylineno = _line_number;
2802: }
2803:
2804: /** Set the current column.
2805: * @param _column_no column number
2806: * @param yyscanner The scanner object.
2807: */
2808: void yyset_column (int _column_no , yyscan_t yyscanner)
2809: {
2810: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2811:
2812: /* column is only valid if an input buffer exists. */
2813: if (! YY_CURRENT_BUFFER )
2814: YY_FATAL_ERROR( "yyset_column called with no buffer" );
2815:
2816: yycolumn = _column_no;
2817: }
2818:
2819: /** Set the input stream. This does not discard the current
2820: * input buffer.
2821: * @param _in_str A readable stream.
2822: * @param yyscanner The scanner object.
2823: * @see yy_switch_to_buffer
2824: */
2825: void yyset_in (FILE * _in_str , yyscan_t yyscanner)
2826: {
2827: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2828: yyin = _in_str ;
2829: }
2830:
2831: void yyset_out (FILE * _out_str , yyscan_t yyscanner)
2832: {
2833: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2834: yyout = _out_str ;
2835: }
2836:
2837: int yyget_debug (yyscan_t yyscanner)
2838: {
2839: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2840: return yy_flex_debug;
2841: }
2842:
2843: void yyset_debug (int _bdebug , yyscan_t yyscanner)
2844: {
2845: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2846: yy_flex_debug = _bdebug ;
2847: }
2848:
2849: /* %endif */
2850:
2851: /* %if-reentrant */
2852: /* Accessor methods for yylval and yylloc */
2853:
2854: /* %if-bison-bridge */
2855:
2856: YYSTYPE * yyget_lval (yyscan_t yyscanner)
2857: {
2858: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2859: return yylval;
2860: }
2861:
2862: void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
2863: {
2864: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2865: yylval = yylval_param;
2866: }
2867:
2868: /* %endif */
2869:
2870: /* User-visible API */
2871:
2872: /* yylex_init is special because it creates the scanner itself, so it is
2873: * the ONLY reentrant function that doesn't take the scanner as the last argument.
2874: * That's why we explicitly handle the declaration, instead of using our macros.
2875: */
2876: int yylex_init(yyscan_t* ptr_yy_globals)
2877: {
2878: if (ptr_yy_globals == NULL){
2879: errno = EINVAL;
2880: return 1;
2881: }
2882:
2883: *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
2884:
2885: if (*ptr_yy_globals == NULL){
2886: errno = ENOMEM;
2887: return 1;
2888: }
2889:
2890: /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2891: memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2892:
2893: return yy_init_globals ( *ptr_yy_globals );
2894: }
2895:
2896: /* yylex_init_extra has the same functionality as yylex_init, but follows the
2897: * convention of taking the scanner as the last argument. Note however, that
2898: * this is a *pointer* to a scanner, as it will be allocated by this call (and
2899: * is the reason, too, why this function also must handle its own declaration).
2900: * The user defined value in the first argument will be available to yyalloc in
2901: * the yyextra field.
2902: */
2903: int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
2904: {
2905: struct yyguts_t dummy_yyguts;
2906:
2907: yyset_extra (yy_user_defined, &dummy_yyguts);
2908:
2909: if (ptr_yy_globals == NULL){
2910: errno = EINVAL;
2911: return 1;
2912: }
2913:
2914: *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2915:
2916: if (*ptr_yy_globals == NULL){
2917: errno = ENOMEM;
2918: return 1;
2919: }
2920:
2921: /* By setting to 0xAA, we expose bugs in
2922: yy_init_globals. Leave at 0x00 for releases. */
2923: memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2924:
2925: yyset_extra (yy_user_defined, *ptr_yy_globals);
2926:
2927: return yy_init_globals ( *ptr_yy_globals );
2928: }
2929:
2930: /* %endif if-c-only */
2931:
2932: /* %if-c-only */
2933: static int yy_init_globals (yyscan_t yyscanner)
2934: {
2935: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2936: /* Initialization is the same as for the non-reentrant scanner.
2937: * This function is called from yylex_destroy(), so don't allocate here.
2938: */
2939:
2940: yyg->yy_buffer_stack = NULL;
2941: yyg->yy_buffer_stack_top = 0;
2942: yyg->yy_buffer_stack_max = 0;
2943: yyg->yy_c_buf_p = NULL;
2944: yyg->yy_init = 0;
2945: yyg->yy_start = 0;
2946:
2947: yyg->yy_start_stack_ptr = 0;
2948: yyg->yy_start_stack_depth = 0;
2949: yyg->yy_start_stack = NULL;
2950:
2951: /* Defined in main.c */
2952: #ifdef YY_STDINIT
2953: yyin = stdin;
2954: yyout = stdout;
2955: #else
2956: yyin = NULL;
2957: yyout = NULL;
2958: #endif
2959:
2960: /* For future reference: Set errno on error, since we are called by
2961: * yylex_init()
2962: */
2963: return 0;
2964: }
2965: /* %endif */
2966:
2967: /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
2968: /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2969: int yylex_destroy (yyscan_t yyscanner)
2970: {
2971: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2972:
2973: /* Pop the buffer stack, destroying each element. */
2974: while(YY_CURRENT_BUFFER){
2975: yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
2976: YY_CURRENT_BUFFER_LVALUE = NULL;
2977: yypop_buffer_state(yyscanner);
2978: }
2979:
2980: /* Destroy the stack itself. */
2981: yyfree(yyg->yy_buffer_stack , yyscanner);
2982: yyg->yy_buffer_stack = NULL;
2983:
2984: /* Destroy the start condition stack. */
2985: yyfree( yyg->yy_start_stack , yyscanner );
2986: yyg->yy_start_stack = NULL;
2987:
2988: /* Reset the globals. This is important in a non-reentrant scanner so the next time
2989: * yylex() is called, initialization will occur. */
2990: yy_init_globals( yyscanner);
2991:
2992: /* %if-reentrant */
2993: /* Destroy the main struct (reentrant only). */
2994: yyfree ( yyscanner , yyscanner );
2995: yyscanner = NULL;
2996: /* %endif */
2997: return 0;
2998: }
2999: /* %endif */
3000:
3001: /*
3002: * Internal utility routines.
3003: */
3004:
3005: #ifndef yytext_ptr
3006: static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
3007: {
3008: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3009: (void)yyg;
3010:
3011: int i;
3012: for ( i = 0; i < n; ++i )
3013: s1[i] = s2[i];
3014: }
3015: #endif
3016:
3017: #ifdef YY_NEED_STRLEN
3018: static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
3019: {
3020: int n;
3021: for ( n = 0; s[n]; ++n )
3022: ;
3023:
3024: return n;
3025: }
3026: #endif
3027:
3028: void *yyalloc (yy_size_t size , yyscan_t yyscanner)
3029: {
3030: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3031: (void)yyg;
3032: return malloc(size);
3033: }
3034:
3035: void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
3036: {
3037: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3038: (void)yyg;
3039:
3040: /* The cast to (char *) in the following accommodates both
3041: * implementations that use char* generic pointers, and those
3042: * that use void* generic pointers. It works with the latter
3043: * because both ANSI C and C++ allow castless assignment from
3044: * any pointer type to void*, and deal with argument conversions
3045: * as though doing an assignment.
3046: */
3047: return realloc(ptr, size);
3048: }
3049:
3050: void yyfree (void * ptr , yyscan_t yyscanner)
3051: {
3052: struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3053: (void)yyg;
3054: free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3055: }
3056:
3057: /* %if-tables-serialization definitions */
3058: /* %define-yytables The name for this specific scanner's tables. */
3059: #define YYTABLES_NAME "yytables"
3060: /* %endif */
3061:
3062: /* %ok-for-header */
3063:
3064: #line 241 "settings/settings_lexer.l"
3065:
3066:
3067: /**
3068: * Open the next file, if any is queued and readable, otherwise returns FALSE.
3069: */
3070: bool settings_parser_open_next_file(parser_helper_t *ctx)
3071: {
3072: FILE *file;
3073:
3074: file = ctx->file_next(ctx);
3075: if (!file)
3076: {
3077: return FALSE;
3078: }
3079:
3080: settings_parser_set_in(file, ctx->scanner);
3081: settings_parser_push_buffer_state(
3082: settings_parser__create_buffer(file, YY_BUF_SIZE,
3083: ctx->scanner), ctx->scanner);
3084: return TRUE;
3085: }
3086:
3087: /**
3088: * Assumes that the file pattern to include is currently stored as string on
3089: * the helper object.
3090: */
3091: static void include_files(parser_helper_t *ctx)
3092: {
3093: char *pattern = ctx->string_get(ctx);
3094:
3095: ctx->file_include(ctx, pattern);
3096: free(pattern);
3097:
3098: settings_parser_open_next_file(ctx);
3099: }
3100:
3101: /**
3102: * Load the given string to be parsed next
3103: */
3104: void settings_parser_load_string(parser_helper_t *ctx, const char *content)
3105: {
3106: settings_parser__scan_string(content, ctx->scanner);
3107: }
3108:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>