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