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