1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
15 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
27 /* Use prototypes in function declarations. */
30 /* The "const" storage-class-modifier is valid. */
33 #else /* ! __cplusplus */
41 #endif /* ! __cplusplus */
60 #define YY_PROTO(proto) proto
62 #define YY_PROTO(proto) ()
65 /* Returned upon end-of-file. */
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index. If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
75 /* Enter a start condition. This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
79 #define BEGIN yy_start = 1 + 2 *
81 /* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state. The YYSTATE alias is for lex
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
94 #define YY_END_OF_BUFFER_CHAR 0
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
102 extern FILE *yyin, *yyout;
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
108 /* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator). This
110 * avoids problems with code like:
112 * if ( condition_holds )
115 * do_something_else();
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
122 /* Return all but the first 'n' matched characters back to the input stream. */
127 /* Undo effects of setting up yytext. */ \
128 *yy_cp = yy_hold_char; \
129 YY_RESTORE_YY_MORE_OFFSET \
130 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135 #define unput(c) yyunput( c, yytext_ptr )
137 /* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
141 typedef unsigned int yy_size_t;
144 struct yy_buffer_state
148 char *yy_ch_buf; /* input buffer */
149 char *yy_buf_pos; /* current position in input buffer */
151 /* Size of input buffer in bytes, not including room for EOB
154 yy_size_t yy_buf_size;
156 /* Number of characters read into yy_ch_buf, not including EOB
161 /* Whether we "own" the buffer - i.e., we know we created it,
162 * and can realloc() it to grow it, and should free() it to
165 int yy_is_our_buffer;
167 /* Whether this is an "interactive" input source; if so, and
168 * if we're using stdio for input, then we want to use getc()
169 * instead of fread(), to make sure we stop fetching input after
172 int yy_is_interactive;
174 /* Whether we're considered to be at the beginning of a line.
175 * If so, '^' rules will be active on the next match, otherwise
180 /* Whether to try to fill the input buffer when we reach the
185 int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188 /* When an EOF's been seen but there's still some text to process
189 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190 * shouldn't try reading from the input source any more. We might
191 * still have a bunch of tokens to match, though, because of
192 * possible backing-up.
194 * When we actually see the EOF, we change the status to "new"
195 * (via yyrestart()), so that the user can continue scanning by
196 * just pointing yyin at a new input file.
198 #define YY_BUFFER_EOF_PENDING 2
201 static YY_BUFFER_STATE yy_current_buffer = 0;
203 /* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
207 #define YY_CURRENT_BUFFER yy_current_buffer
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
213 static int yy_n_chars; /* number of characters read into yy_ch_buf */
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1; /* whether we need to initialize */
221 static int yy_start = 0; /* start state number */
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin. A bit of a hack ...
226 static int yy_did_buffer_switch_on_eof;
228 void yyrestart YY_PROTO(( FILE *input_file ));
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
246 #define yy_new_buffer yy_create_buffer
248 #define yy_set_interactive(is_interactive) \
250 if ( ! yy_current_buffer ) \
251 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252 yy_current_buffer->yy_is_interactive = is_interactive; \
255 #define yy_set_bol(at_bol) \
257 if ( ! yy_current_buffer ) \
258 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259 yy_current_buffer->yy_at_bol = at_bol; \
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
264 typedef unsigned char YY_CHAR;
265 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
266 typedef int yy_state_type;
268 #define yytext_ptr yytext
270 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
271 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
272 static int yy_get_next_buffer YY_PROTO(( void ));
273 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
275 /* Done after the current pattern has been matched and before the
276 * corresponding action - sets up yytext.
278 #define YY_DO_BEFORE_ACTION \
279 yytext_ptr = yy_bp; \
280 yyleng = (int) (yy_cp - yy_bp); \
281 yy_hold_char = *yy_cp; \
285 #define YY_NUM_RULES 95
286 #define YY_END_OF_BUFFER 96
287 static yyconst short int yy_accept[568] =
289 0, 0, 96, 94, 90, 91, 87, 81, 81, 94,
290 94, 88, 88, 94, 89, 89, 89, 89, 89, 89,
291 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
292 89, 89, 89, 82, 83, 85, 88, 88, 93, 86,
293 0, 0, 89, 89, 89, 89, 89, 89, 89, 89,
294 89, 10, 89, 89, 89, 89, 89, 89, 89, 89,
295 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
296 89, 89, 89, 89, 51, 89, 89, 89, 89, 89,
297 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
298 89, 89, 89, 89, 89, 89, 89, 92, 88, 84,
300 89, 3, 89, 89, 89, 7, 89, 89, 89, 89,
301 89, 89, 89, 89, 89, 89, 22, 89, 89, 89,
302 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
303 89, 89, 44, 45, 89, 89, 89, 89, 89, 89,
304 89, 55, 89, 89, 89, 89, 89, 89, 89, 63,
305 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
306 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
307 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
308 89, 89, 89, 89, 89, 89, 89, 89, 30, 89,
309 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
311 47, 89, 89, 89, 89, 89, 89, 89, 89, 89,
312 89, 60, 89, 89, 64, 89, 89, 89, 68, 69,
313 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
314 80, 89, 89, 89, 89, 6, 89, 89, 89, 89,
315 13, 89, 89, 89, 89, 89, 89, 89, 89, 89,
316 89, 89, 89, 89, 29, 89, 89, 89, 89, 89,
317 89, 89, 89, 89, 89, 89, 89, 89, 89, 50,
318 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
319 89, 89, 89, 89, 72, 89, 89, 89, 89, 89,
320 89, 89, 1, 89, 89, 89, 89, 89, 89, 12,
322 89, 89, 89, 89, 89, 89, 89, 89, 24, 89,
323 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
324 89, 89, 89, 89, 89, 89, 89, 49, 89, 89,
325 89, 89, 89, 89, 89, 89, 89, 65, 66, 89,
326 89, 89, 73, 89, 89, 89, 89, 89, 89, 89,
327 89, 89, 89, 9, 89, 89, 89, 89, 18, 89,
328 89, 21, 89, 89, 26, 89, 89, 89, 89, 89,
329 89, 89, 37, 38, 89, 89, 41, 89, 89, 89,
330 89, 89, 89, 54, 89, 57, 58, 89, 89, 89,
331 89, 89, 89, 89, 75, 89, 89, 89, 89, 89,
333 89, 89, 89, 89, 89, 89, 89, 89, 20, 89,
334 25, 89, 28, 89, 89, 89, 89, 89, 36, 39,
335 40, 89, 89, 89, 89, 52, 89, 89, 89, 89,
336 62, 89, 89, 89, 89, 89, 89, 89, 89, 89,
337 89, 5, 8, 11, 14, 89, 89, 89, 89, 89,
338 89, 89, 89, 34, 89, 89, 89, 89, 89, 89,
339 89, 89, 89, 67, 89, 89, 74, 89, 89, 89,
340 89, 89, 89, 15, 89, 17, 89, 23, 89, 89,
341 89, 89, 35, 89, 89, 89, 89, 89, 89, 89,
342 89, 89, 89, 76, 89, 89, 89, 89, 4, 16,
344 19, 89, 89, 89, 89, 89, 89, 89, 89, 89,
345 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
346 89, 89, 89, 42, 43, 89, 89, 89, 89, 89,
347 61, 89, 89, 89, 89, 89, 89, 27, 31, 89,
348 33, 89, 48, 89, 56, 89, 89, 71, 89, 89,
349 79, 89, 89, 46, 89, 89, 89, 89, 78, 2,
350 32, 89, 59, 70, 77, 53, 0
353 static yyconst int yy_ec[256] =
355 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
356 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
357 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
358 1, 2, 1, 4, 1, 1, 1, 1, 1, 5,
359 5, 6, 1, 5, 7, 8, 9, 10, 11, 12,
360 12, 13, 14, 15, 12, 16, 12, 17, 5, 1,
361 18, 1, 1, 1, 19, 20, 21, 22, 23, 24,
362 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
363 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
364 45, 1, 46, 1, 47, 1, 48, 49, 50, 51,
366 52, 53, 54, 55, 56, 57, 29, 58, 59, 60,
367 61, 62, 29, 63, 64, 65, 66, 67, 29, 68,
368 29, 69, 5, 5, 5, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 static yyconst int yy_meta[70] =
387 1, 1, 1, 1, 1, 1, 2, 1, 1, 3,
388 3, 3, 3, 3, 3, 3, 1, 1, 3, 3,
389 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
391 2, 2, 2, 2, 1, 1, 2, 3, 3, 3,
392 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,
393 2, 2, 2, 2, 2, 2, 2, 2, 2
396 static yyconst short int yy_base[570] =
398 0, 0, 636, 637, 637, 637, 637, 637, 63, 627,
399 628, 70, 77, 616, 74, 72, 76, 609, 65, 81,
400 49, 0, 92, 91, 32, 101, 97, 608, 103, 113,
401 99, 574, 602, 637, 637, 637, 156, 163, 620, 637,
402 0, 609, 0, 589, 595, 590, 585, 597, 583, 586,
403 586, 0, 101, 599, 108, 593, 596, 122, 124, 585,
404 581, 553, 564, 597, 587, 575, 115, 575, 565, 574,
405 575, 545, 575, 564, 0, 563, 543, 561, 558, 558,
406 124, 540, 161, 119, 551, 558, 561, 581, 566, 551,
407 555, 530, 560, 160, 530, 91, 547, 637, 0, 637,
409 125, 0, 554, 550, 555, 0, 544, 550, 543, 551,
410 540, 542, 145, 166, 552, 541, 0, 542, 549, 156,
411 548, 533, 538, 516, 505, 529, 533, 157, 534, 525,
412 539, 546, 0, 521, 529, 506, 534, 533, 528, 502,
413 515, 0, 515, 514, 510, 489, 518, 528, 507, 0,
414 522, 517, 505, 505, 504, 517, 516, 486, 159, 499,
415 520, 468, 482, 477, 506, 499, 494, 502, 497, 495,
416 461, 502, 505, 502, 485, 488, 482, 500, 479, 485,
417 494, 493, 491, 479, 485, 475, 164, 487, 0, 446,
418 453, 442, 468, 478, 468, 464, 483, 170, 488, 463,
420 0, 436, 477, 459, 463, 445, 471, 486, 469, 472,
421 425, 0, 451, 465, 0, 455, 467, 420, 0, 0,
422 477, 418, 450, 442, 457, 423, 441, 425, 415, 426,
423 0, 436, 454, 451, 452, 0, 407, 450, 447, 444,
424 0, 434, 429, 437, 433, 435, 439, 437, 423, 420,
425 436, 418, 418, 422, 0, 405, 396, 388, 423, 180,
426 411, 426, 415, 423, 408, 429, 436, 386, 403, 0,
427 408, 374, 402, 410, 404, 397, 386, 406, 400, 406,
428 388, 366, 401, 375, 0, 403, 389, 365, 358, 359,
429 356, 362, 0, 398, 399, 379, 360, 383, 376, 0,
431 390, 393, 379, 372, 371, 385, 385, 387, 0, 378,
432 367, 376, 383, 343, 350, 343, 374, 370, 374, 358,
433 371, 372, 356, 368, 353, 362, 338, 0, 368, 364,
434 353, 352, 345, 359, 332, 340, 358, 0, 0, 322,
435 355, 308, 0, 338, 322, 310, 308, 319, 318, 331,
436 330, 340, 306, 0, 342, 332, 336, 335, 0, 334,
437 338, 0, 321, 320, 0, 337, 326, 151, 318, 294,
438 326, 314, 0, 0, 314, 327, 0, 328, 283, 315,
439 309, 315, 292, 0, 319, 0, 0, 284, 318, 317,
440 279, 315, 300, 317, 0, 279, 286, 265, 295, 324,
442 303, 308, 274, 291, 288, 293, 292, 290, 0, 299,
443 0, 294, 0, 255, 250, 253, 263, 293, 0, 0,
444 0, 277, 251, 289, 247, 0, 247, 283, 257, 261,
445 0, 253, 274, 240, 274, 243, 244, 264, 235, 262,
446 265, 0, 0, 0, 260, 273, 270, 262, 271, 262,
447 228, 238, 226, 0, 252, 260, 230, 258, 221, 233,
448 250, 244, 247, 0, 241, 215, 0, 223, 239, 210,
449 211, 230, 240, 0, 249, 0, 233, 0, 242, 212,
450 216, 210, 0, 232, 204, 231, 206, 198, 233, 194,
451 231, 230, 200, 0, 190, 191, 197, 220, 0, 0,
453 0, 213, 190, 211, 188, 215, 192, 218, 184, 187,
454 204, 178, 218, 215, 178, 174, 180, 175, 196, 190,
455 178, 175, 176, 0, 0, 191, 174, 165, 180, 166,
456 0, 194, 166, 163, 158, 163, 197, 0, 0, 156,
457 0, 171, 0, 148, 0, 152, 188, 0, 150, 155,
458 0, 166, 153, 0, 143, 148, 162, 143, 0, 0,
459 0, 101, 0, 0, 0, 0, 637, 223, 69
462 static yyconst short int yy_def[570] =
464 567, 1, 567, 567, 567, 567, 567, 567, 567, 567,
465 567, 567, 567, 567, 568, 568, 568, 568, 568, 568,
466 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
467 568, 568, 568, 567, 567, 567, 567, 567, 567, 567,
468 569, 567, 568, 568, 568, 568, 568, 568, 568, 568,
469 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
470 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
471 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
472 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
473 568, 568, 568, 568, 568, 568, 568, 567, 569, 567,
475 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
476 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
477 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
478 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
479 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
480 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
481 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
482 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
483 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
484 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
486 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
487 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
488 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
489 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
490 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
491 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
492 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
493 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
494 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
495 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
497 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
498 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
499 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
500 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
501 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
502 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
503 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
504 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
505 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
506 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
508 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
509 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
510 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
511 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
512 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
513 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
514 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
515 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
516 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
517 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
519 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
520 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
521 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
522 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
523 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
524 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
525 568, 568, 568, 568, 568, 568, 0, 567, 567
528 static yyconst short int yy_nxt[707] =
530 4, 5, 6, 7, 8, 4, 9, 10, 11, 12,
531 13, 13, 13, 13, 13, 13, 14, 4, 15, 16,
532 17, 18, 19, 20, 21, 22, 23, 22, 22, 22,
533 24, 25, 26, 27, 22, 28, 29, 30, 31, 32,
534 33, 22, 22, 22, 34, 35, 4, 22, 22, 22,
535 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
536 22, 22, 22, 22, 22, 22, 22, 22, 22, 36,
537 71, 99, 37, 38, 38, 38, 38, 38, 38, 38,
538 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
539 38, 38, 38, 44, 48, 57, 58, 72, 49, 60,
541 62, 53, 50, 45, 51, 54, 59, 46, 55, 69,
542 64, 63, 47, 65, 52, 78, 61, 70, 79, 109,
543 73, 74, 66, 67, 75, 84, 80, 88, 68, 85,
544 93, 89, 81, 110, 76, 129, 94, 41, 112, 113,
545 86, 163, 116, 117, 119, 87, 144, 166, 90, 77,
546 145, 130, 131, 149, 164, 91, 150, 120, 95, 82,
547 118, 121, 167, 566, 92, 38, 38, 38, 38, 38,
548 38, 38, 38, 38, 38, 38, 38, 38, 38, 147,
549 160, 177, 178, 161, 179, 185, 194, 414, 186, 195,
550 148, 223, 180, 224, 264, 253, 565, 564, 225, 254,
552 318, 563, 319, 562, 561, 265, 415, 560, 559, 558,
553 557, 556, 555, 554, 553, 552, 551, 550, 549, 548,
554 547, 546, 545, 41, 43, 43, 544, 543, 542, 541,
555 540, 539, 538, 537, 536, 535, 534, 533, 532, 531,
556 530, 529, 528, 527, 526, 525, 524, 523, 522, 521,
557 520, 519, 518, 517, 516, 515, 514, 513, 512, 511,
558 510, 509, 508, 507, 506, 505, 504, 503, 502, 501,
559 500, 499, 498, 497, 496, 495, 494, 493, 492, 491,
560 490, 489, 488, 487, 486, 485, 484, 483, 482, 481,
561 480, 479, 478, 477, 476, 475, 474, 473, 472, 471,
563 470, 469, 468, 467, 466, 465, 464, 463, 462, 461,
564 460, 459, 458, 457, 456, 455, 454, 453, 452, 451,
565 450, 449, 448, 447, 446, 445, 444, 443, 442, 441,
566 440, 439, 438, 437, 436, 435, 434, 433, 432, 431,
567 430, 429, 428, 427, 426, 425, 424, 423, 422, 421,
568 420, 419, 418, 417, 416, 413, 412, 411, 410, 409,
569 408, 407, 406, 405, 404, 403, 402, 401, 400, 399,
570 398, 397, 396, 395, 394, 393, 392, 391, 390, 389,
571 388, 387, 386, 385, 384, 383, 382, 381, 380, 379,
572 378, 377, 376, 375, 374, 373, 372, 371, 370, 369,
574 368, 367, 366, 365, 364, 363, 362, 361, 360, 359,
575 358, 357, 356, 355, 354, 353, 352, 351, 350, 349,
576 348, 347, 346, 345, 344, 343, 342, 341, 340, 339,
577 338, 337, 336, 335, 334, 333, 332, 331, 330, 329,
578 328, 327, 326, 325, 324, 323, 322, 321, 320, 317,
579 316, 315, 314, 313, 312, 311, 310, 309, 308, 307,
580 306, 305, 304, 303, 302, 301, 300, 299, 298, 297,
581 296, 295, 294, 293, 292, 291, 290, 289, 288, 287,
582 286, 285, 284, 283, 282, 281, 280, 279, 278, 277,
583 276, 275, 274, 273, 272, 271, 270, 269, 268, 267,
585 266, 263, 262, 261, 260, 259, 258, 257, 256, 255,
586 252, 251, 250, 249, 248, 247, 246, 245, 244, 243,
587 242, 241, 240, 239, 238, 237, 236, 235, 234, 233,
588 232, 231, 230, 229, 228, 227, 226, 222, 221, 220,
589 219, 218, 217, 216, 215, 214, 213, 212, 211, 210,
590 209, 208, 207, 206, 205, 204, 203, 202, 201, 200,
591 199, 198, 197, 196, 193, 192, 191, 190, 189, 188,
592 187, 184, 183, 182, 181, 176, 175, 174, 173, 172,
593 171, 170, 169, 168, 165, 162, 159, 158, 157, 156,
594 155, 154, 153, 152, 151, 146, 143, 142, 141, 140,
596 139, 138, 137, 136, 135, 134, 133, 132, 128, 127,
597 126, 125, 124, 123, 122, 115, 114, 111, 108, 107,
598 106, 105, 104, 103, 102, 101, 100, 98, 97, 96,
599 83, 56, 42, 40, 39, 567, 3, 567, 567, 567,
600 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
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, 567,
604 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
605 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
607 567, 567, 567, 567, 567, 567
610 static yyconst short int yy_chk[707] =
612 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
613 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
614 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
615 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
616 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
617 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
618 1, 1, 1, 1, 1, 1, 1, 1, 1, 9,
619 25, 569, 9, 9, 9, 9, 9, 9, 9, 12,
620 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
621 13, 13, 13, 15, 16, 19, 19, 25, 16, 20,
623 21, 17, 16, 15, 16, 17, 19, 15, 17, 24,
624 23, 21, 15, 23, 16, 27, 20, 24, 27, 53,
625 26, 26, 23, 23, 26, 29, 27, 30, 23, 29,
626 31, 30, 27, 53, 26, 67, 31, 12, 55, 55,
627 29, 96, 58, 58, 59, 29, 81, 101, 30, 26,
628 81, 67, 67, 84, 96, 30, 84, 59, 31, 27,
629 58, 59, 101, 562, 30, 37, 37, 37, 37, 37,
630 37, 37, 38, 38, 38, 38, 38, 38, 38, 83,
631 94, 113, 113, 94, 114, 120, 128, 368, 120, 128,
632 83, 159, 114, 159, 198, 187, 558, 557, 159, 187,
634 260, 556, 260, 555, 553, 198, 368, 552, 550, 549,
635 547, 546, 544, 542, 540, 537, 536, 535, 534, 533,
636 532, 530, 529, 37, 568, 568, 528, 527, 526, 523,
637 522, 521, 520, 519, 518, 517, 516, 515, 514, 513,
638 512, 511, 510, 509, 508, 507, 506, 505, 504, 503,
639 502, 498, 497, 496, 495, 493, 492, 491, 490, 489,
640 488, 487, 486, 485, 484, 482, 481, 480, 479, 477,
641 475, 473, 472, 471, 470, 469, 468, 466, 465, 463,
642 462, 461, 460, 459, 458, 457, 456, 455, 453, 452,
643 451, 450, 449, 448, 447, 446, 445, 441, 440, 439,
645 438, 437, 436, 435, 434, 433, 432, 430, 429, 428,
646 427, 425, 424, 423, 422, 418, 417, 416, 415, 414,
647 412, 410, 408, 407, 406, 405, 404, 403, 402, 401,
648 400, 399, 398, 397, 396, 394, 393, 392, 391, 390,
649 389, 388, 385, 383, 382, 381, 380, 379, 378, 376,
650 375, 372, 371, 370, 369, 367, 366, 364, 363, 361,
651 360, 358, 357, 356, 355, 353, 352, 351, 350, 349,
652 348, 347, 346, 345, 344, 342, 341, 340, 337, 336,
653 335, 334, 333, 332, 331, 330, 329, 327, 326, 325,
654 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
656 314, 313, 312, 311, 310, 308, 307, 306, 305, 304,
657 303, 302, 301, 299, 298, 297, 296, 295, 294, 292,
658 291, 290, 289, 288, 287, 286, 284, 283, 282, 281,
659 280, 279, 278, 277, 276, 275, 274, 273, 272, 271,
660 269, 268, 267, 266, 265, 264, 263, 262, 261, 259,
661 258, 257, 256, 254, 253, 252, 251, 250, 249, 248,
662 247, 246, 245, 244, 243, 242, 240, 239, 238, 237,
663 235, 234, 233, 232, 230, 229, 228, 227, 226, 225,
664 224, 223, 222, 221, 218, 217, 216, 214, 213, 211,
665 210, 209, 208, 207, 206, 205, 204, 203, 202, 200,
667 199, 197, 196, 195, 194, 193, 192, 191, 190, 188,
668 186, 185, 184, 183, 182, 181, 180, 179, 178, 177,
669 176, 175, 174, 173, 172, 171, 170, 169, 168, 167,
670 166, 165, 164, 163, 162, 161, 160, 158, 157, 156,
671 155, 154, 153, 152, 151, 149, 148, 147, 146, 145,
672 144, 143, 141, 140, 139, 138, 137, 136, 135, 134,
673 132, 131, 130, 129, 127, 126, 125, 124, 123, 122,
674 121, 119, 118, 116, 115, 112, 111, 110, 109, 108,
675 107, 105, 104, 103, 97, 95, 93, 92, 91, 90,
676 89, 88, 87, 86, 85, 82, 80, 79, 78, 77,
678 76, 74, 73, 72, 71, 70, 69, 68, 66, 65,
679 64, 63, 62, 61, 60, 57, 56, 54, 51, 50,
680 49, 48, 47, 46, 45, 44, 42, 39, 33, 32,
681 28, 18, 14, 11, 10, 3, 567, 567, 567, 567,
682 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
683 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
684 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
685 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
686 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
687 567, 567, 567, 567, 567, 567, 567, 567, 567, 567,
689 567, 567, 567, 567, 567, 567
692 static yy_state_type yy_last_accepting_state;
693 static char *yy_last_accepting_cpos;
695 /* The intent behind this definition is that it'll catch
696 * any uses of REJECT which flex missed.
698 #define REJECT reject_used_but_not_detected
699 #define yymore() yymore_used_but_not_detected
700 #define YY_MORE_ADJ 0
701 #define YY_RESTORE_YY_MORE_OFFSET
707 * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan
708 * (Royal Institute of Technology, Stockholm, Sweden).
709 * All rights reserved.
711 * Redistribution and use in source and binary forms, with or without
712 * modification, are permitted provided that the following conditions
715 * 1. Redistributions of source code must retain the above copyright
716 * notice, this list of conditions and the following disclaimer.
718 * 2. Redistributions in binary form must reproduce the above copyright
719 * notice, this list of conditions and the following disclaimer in the
720 * documentation and/or other materials provided with the distribution.
722 * 3. Neither the name of the Institute nor the names of its contributors
723 * may be used to endorse or promote products derived from this software
724 * without specific prior written permission.
726 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
727 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
728 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
729 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
730 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
731 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
732 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
733 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
734 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
735 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
739 /* $Id: lex.l,v 1.27 2005/09/13 18:17:16 lha Exp $ */
755 #include "gen_locl.h"
757 static unsigned lineno = 1;
761 static void unterminated(const char *, unsigned);
765 /* Macros after this point can all be overridden by user definitions in
769 #ifndef YY_SKIP_YYWRAP
771 extern "C" int yywrap YY_PROTO(( void ));
773 extern int yywrap YY_PROTO(( void ));
778 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
782 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
785 #ifdef YY_NEED_STRLEN
786 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
791 static int yyinput YY_PROTO(( void ));
793 static int input YY_PROTO(( void ));
798 static int yy_start_stack_ptr = 0;
799 static int yy_start_stack_depth = 0;
800 static int *yy_start_stack = 0;
801 #ifndef YY_NO_PUSH_STATE
802 static void yy_push_state YY_PROTO(( int new_state ));
804 #ifndef YY_NO_POP_STATE
805 static void yy_pop_state YY_PROTO(( void ));
807 #ifndef YY_NO_TOP_STATE
808 static int yy_top_state YY_PROTO(( void ));
812 #define YY_NO_PUSH_STATE 1
813 #define YY_NO_POP_STATE 1
814 #define YY_NO_TOP_STATE 1
817 #ifdef YY_MALLOC_DECL
825 /* Just try to get by without declaring the routines. This will fail
826 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
827 * or sizeof(void*) != sizeof(int).
832 /* Amount of stuff to slurp up with each read. */
833 #ifndef YY_READ_BUF_SIZE
834 #define YY_READ_BUF_SIZE 8192
837 /* Copy whatever the last rule matched to the standard output. */
840 /* This used to be an fputs(), but since the string might contain NUL's,
841 * we now use fwrite().
843 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
846 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
847 * is returned in "result".
850 #define YY_INPUT(buf,result,max_size) \
851 if ( yy_current_buffer->yy_is_interactive ) \
854 for ( n = 0; n < max_size && \
855 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
858 buf[n++] = (char) c; \
859 if ( c == EOF && ferror( yyin ) ) \
860 YY_FATAL_ERROR( "input in flex scanner failed" ); \
863 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
864 && ferror( yyin ) ) \
865 YY_FATAL_ERROR( "input in flex scanner failed" );
868 /* No semi-colon after return; correct usage is to write "yyterminate();" -
869 * we don't want an extra ';' after the "return" because that will cause
870 * some compilers to complain about unreachable statements.
873 #define yyterminate() return YY_NULL
876 /* Number of entries by which start-condition stack grows. */
877 #ifndef YY_START_STACK_INCR
878 #define YY_START_STACK_INCR 25
881 /* Report a fatal error. */
882 #ifndef YY_FATAL_ERROR
883 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
886 /* Default declaration of generated scanner - a define so the user can
887 * easily add parameters.
890 #define YY_DECL int yylex YY_PROTO(( void ))
893 /* Code executed at the beginning of each rule, after yytext and yyleng
896 #ifndef YY_USER_ACTION
897 #define YY_USER_ACTION
900 /* Code executed at the end of each rule. */
902 #define YY_BREAK break;
905 #define YY_RULE_SETUP \
910 register yy_state_type yy_current_state;
911 register char *yy_cp = NULL, *yy_bp = NULL;
927 yy_start = 1; /* first start state */
935 if ( ! yy_current_buffer )
937 yy_create_buffer( yyin, YY_BUF_SIZE );
939 yy_load_buffer_state();
942 while ( 1 ) /* loops until end-of-file is reached */
946 /* Support of yytext. */
947 *yy_cp = yy_hold_char;
949 /* yy_bp points to the position in yy_ch_buf of the start of
954 yy_current_state = yy_start;
958 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
959 if ( yy_accept[yy_current_state] )
961 yy_last_accepting_state = yy_current_state;
962 yy_last_accepting_cpos = yy_cp;
964 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
966 yy_current_state = (int) yy_def[yy_current_state];
967 if ( yy_current_state >= 568 )
968 yy_c = yy_meta[(unsigned int) yy_c];
970 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
973 while ( yy_base[yy_current_state] != 637 );
976 yy_act = yy_accept[yy_current_state];
978 { /* have to back up */
979 yy_cp = yy_last_accepting_cpos;
980 yy_current_state = yy_last_accepting_state;
981 yy_act = yy_accept[yy_current_state];
987 do_action: /* This label is used only to access EOF actions. */
991 { /* beginning of action switch */
992 case 0: /* must back up */
993 /* undo the effects of YY_DO_BEFORE_ACTION */
994 *yy_cp = yy_hold_char;
995 yy_cp = yy_last_accepting_cpos;
996 yy_current_state = yy_last_accepting_state;
1002 { return kw_ABSENT; }
1007 { return kw_ABSTRACT_SYNTAX; }
1017 { return kw_APPLICATION; }
1022 { return kw_AUTOMATIC; }
1027 { return kw_BEGIN; }
1037 { return kw_BMPString; }
1042 { return kw_BOOLEAN; }
1052 { return kw_CHARACTER; }
1057 { return kw_CHOICE; }
1062 { return kw_CLASS; }
1067 { return kw_COMPONENT; }
1072 { return kw_COMPONENTS; }
1077 { return kw_CONSTRAINED; }
1082 { return kw_CONTAINING; }
1087 { return kw_DEFAULT; }
1092 { return kw_DEFINITIONS; }
1097 { return kw_EMBEDDED; }
1102 { return kw_ENCODED; }
1112 { return kw_ENUMERATED; }
1117 { return kw_EXCEPT; }
1122 { return kw_EXPLICIT; }
1127 { return kw_EXPORTS; }
1132 { return kw_EXTENSIBILITY; }
1137 { return kw_EXTERNAL; }
1142 { return kw_FALSE; }
1152 { return kw_GeneralString; }
1157 { return kw_GeneralizedTime; }
1162 { return kw_GraphicString; }
1167 { return kw_IA5String; }
1172 { return kw_IDENTIFIER; }
1177 { return kw_IMPLICIT; }
1182 { return kw_IMPLIED; }
1187 { return kw_IMPORTS; }
1192 { return kw_INCLUDES; }
1197 { return kw_INSTANCE; }
1202 { return kw_INTEGER; }
1207 { return kw_INTERSECTION; }
1212 { return kw_ISO646String; }
1227 { return kw_MINUS_INFINITY; }
1237 { return kw_NumericString; }
1242 { return kw_OBJECT; }
1247 { return kw_OCTET; }
1257 { return kw_OPTIONAL; }
1262 { return kw_ObjectDescriptor; }
1267 { return kw_PATTERN; }
1277 { return kw_PLUS_INFINITY; }
1282 { return kw_PRESENT; }
1287 { return kw_PRIVATE; }
1292 { return kw_PrintableString; }
1302 { return kw_RELATIVE_OID; }
1307 { return kw_SEQUENCE; }
1322 { return kw_STRING; }
1327 { return kw_SYNTAX; }
1332 { return kw_T61String; }
1347 { return kw_TYPE_IDENTIFIER; }
1352 { return kw_TeletexString; }
1357 { return kw_UNION; }
1362 { return kw_UNIQUE; }
1367 { return kw_UNIVERSAL; }
1372 { return kw_UTCTime; }
1377 { return kw_UTF8String; }
1382 { return kw_UniversalString; }
1387 { return kw_VideotexString; }
1392 { return kw_VisibleString; }
1423 int c, start_lineno = lineno;
1425 while((c = input()) != EOF) {
1439 unterminated("comment", start_lineno);
1446 int c, start_lineno = lineno;
1450 while((c = input()) != EOF) {
1461 if(seen_star && c == '/') {
1470 seen_star = seen_slash = 0;
1476 seen_star = seen_slash = 0;
1483 unterminated("comment", start_lineno);
1490 int start_lineno = lineno;
1497 while((c = input()) != EOF) {
1498 if(isspace(c) && skip_ws) {
1519 while(p > buf && isspace((unsigned char)p[-1]))
1527 unterminated("string", start_lineno);
1529 fprintf(stderr, "string -- %s\n", buf);
1530 yylval.name = estrdup(buf);
1537 { char *e, *y = yytext;
1538 yylval.constant = strtol((const char *)yytext,
1541 error_message("malformed constant (%s)", yytext);
1550 yylval.name = estrdup ((const char *)yytext);
1567 { return ELLIPSIS; }
1577 { error_message("Ignoring char(%c)\n", *yytext); }
1585 case YY_STATE_EOF(INITIAL):
1588 case YY_END_OF_BUFFER:
1590 /* Amount of text matched not including the EOB char. */
1591 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1593 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1594 *yy_cp = yy_hold_char;
1595 YY_RESTORE_YY_MORE_OFFSET
1597 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1599 /* We're scanning a new file or input source. It's
1600 * possible that this happened because the user
1601 * just pointed yyin at a new source and called
1602 * yylex(). If so, then we have to assure
1603 * consistency between yy_current_buffer and our
1604 * globals. Here is the right place to do so, because
1605 * this is the first action (other than possibly a
1606 * back-up) that will match for the new input source.
1608 yy_n_chars = yy_current_buffer->yy_n_chars;
1609 yy_current_buffer->yy_input_file = yyin;
1610 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1613 /* Note that here we test for yy_c_buf_p "<=" to the position
1614 * of the first EOB in the buffer, since yy_c_buf_p will
1615 * already have been incremented past the NUL character
1616 * (since all states make transitions on EOB to the
1617 * end-of-buffer state). Contrast this with the test
1620 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1621 { /* This was really a NUL. */
1622 yy_state_type yy_next_state;
1624 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1626 yy_current_state = yy_get_previous_state();
1628 /* Okay, we're now positioned to make the NUL
1629 * transition. We couldn't have
1630 * yy_get_previous_state() go ahead and do it
1631 * for us because it doesn't know how to deal
1632 * with the possibility of jamming (and we don't
1633 * want to build jamming into it because then it
1634 * will run more slowly).
1637 yy_next_state = yy_try_NUL_trans( yy_current_state );
1639 yy_bp = yytext_ptr + YY_MORE_ADJ;
1641 if ( yy_next_state )
1643 /* Consume the NUL. */
1644 yy_cp = ++yy_c_buf_p;
1645 yy_current_state = yy_next_state;
1652 goto yy_find_action;
1656 else switch ( yy_get_next_buffer() )
1658 case EOB_ACT_END_OF_FILE:
1660 yy_did_buffer_switch_on_eof = 0;
1664 /* Note: because we've taken care in
1665 * yy_get_next_buffer() to have set up
1666 * yytext, we can now set up
1667 * yy_c_buf_p so that if some total
1668 * hoser (like flex itself) wants to
1669 * call the scanner after we return the
1670 * YY_NULL, it'll still work - another
1671 * YY_NULL will get returned.
1673 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1675 yy_act = YY_STATE_EOF(YY_START);
1681 if ( ! yy_did_buffer_switch_on_eof )
1687 case EOB_ACT_CONTINUE_SCAN:
1689 yytext_ptr + yy_amount_of_matched_text;
1691 yy_current_state = yy_get_previous_state();
1694 yy_bp = yytext_ptr + YY_MORE_ADJ;
1697 case EOB_ACT_LAST_MATCH:
1699 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1701 yy_current_state = yy_get_previous_state();
1704 yy_bp = yytext_ptr + YY_MORE_ADJ;
1705 goto yy_find_action;
1712 "fatal flex scanner internal error--no action found" );
1713 } /* end of action switch */
1714 } /* end of scanning one token */
1715 } /* end of yylex */
1718 /* yy_get_next_buffer - try to read in a new buffer
1720 * Returns a code representing an action:
1721 * EOB_ACT_LAST_MATCH -
1722 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1723 * EOB_ACT_END_OF_FILE - end of file
1726 static int yy_get_next_buffer()
1728 register char *dest = yy_current_buffer->yy_ch_buf;
1729 register char *source = yytext_ptr;
1730 register int number_to_move, i;
1733 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1735 "fatal flex scanner internal error--end of buffer missed" );
1737 if ( yy_current_buffer->yy_fill_buffer == 0 )
1738 { /* Don't try to fill the buffer, so this is an EOF. */
1739 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1741 /* We matched a single character, the EOB, so
1742 * treat this as a final EOF.
1744 return EOB_ACT_END_OF_FILE;
1749 /* We matched some text prior to the EOB, first
1752 return EOB_ACT_LAST_MATCH;
1756 /* Try to read more data. */
1758 /* First move last chars to start of buffer. */
1759 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1761 for ( i = 0; i < number_to_move; ++i )
1762 *(dest++) = *(source++);
1764 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1765 /* don't do the read, it's not guaranteed to return an EOF,
1768 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1773 yy_current_buffer->yy_buf_size - number_to_move - 1;
1775 while ( num_to_read <= 0 )
1776 { /* Not enough room in the buffer - grow it. */
1777 #ifdef YY_USES_REJECT
1779 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1782 /* just a shorter name for the current buffer */
1783 YY_BUFFER_STATE b = yy_current_buffer;
1785 int yy_c_buf_p_offset =
1786 (int) (yy_c_buf_p - b->yy_ch_buf);
1788 if ( b->yy_is_our_buffer )
1790 int new_size = b->yy_buf_size * 2;
1792 if ( new_size <= 0 )
1793 b->yy_buf_size += b->yy_buf_size / 8;
1795 b->yy_buf_size *= 2;
1797 b->yy_ch_buf = (char *)
1798 /* Include room in for 2 EOB chars. */
1799 yy_flex_realloc( (void *) b->yy_ch_buf,
1800 b->yy_buf_size + 2 );
1803 /* Can't grow it, we don't own it. */
1806 if ( ! b->yy_ch_buf )
1808 "fatal error - scanner input buffer overflow" );
1810 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1812 num_to_read = yy_current_buffer->yy_buf_size -
1817 if ( num_to_read > YY_READ_BUF_SIZE )
1818 num_to_read = YY_READ_BUF_SIZE;
1820 /* Read in more data. */
1821 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1822 yy_n_chars, num_to_read );
1824 yy_current_buffer->yy_n_chars = yy_n_chars;
1827 if ( yy_n_chars == 0 )
1829 if ( number_to_move == YY_MORE_ADJ )
1831 ret_val = EOB_ACT_END_OF_FILE;
1837 ret_val = EOB_ACT_LAST_MATCH;
1838 yy_current_buffer->yy_buffer_status =
1839 YY_BUFFER_EOF_PENDING;
1844 ret_val = EOB_ACT_CONTINUE_SCAN;
1846 yy_n_chars += number_to_move;
1847 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1848 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1850 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1856 /* yy_get_previous_state - get the state just before the EOB char was reached */
1858 static yy_state_type yy_get_previous_state()
1860 register yy_state_type yy_current_state;
1861 register char *yy_cp;
1863 yy_current_state = yy_start;
1865 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1867 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1868 if ( yy_accept[yy_current_state] )
1870 yy_last_accepting_state = yy_current_state;
1871 yy_last_accepting_cpos = yy_cp;
1873 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1875 yy_current_state = (int) yy_def[yy_current_state];
1876 if ( yy_current_state >= 568 )
1877 yy_c = yy_meta[(unsigned int) yy_c];
1879 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1882 return yy_current_state;
1886 /* yy_try_NUL_trans - try to make a transition on the NUL character
1889 * next_state = yy_try_NUL_trans( current_state );
1892 #ifdef YY_USE_PROTOS
1893 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1895 static yy_state_type yy_try_NUL_trans( yy_current_state )
1896 yy_state_type yy_current_state;
1899 register int yy_is_jam;
1900 register char *yy_cp = yy_c_buf_p;
1902 register YY_CHAR yy_c = 1;
1903 if ( yy_accept[yy_current_state] )
1905 yy_last_accepting_state = yy_current_state;
1906 yy_last_accepting_cpos = yy_cp;
1908 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1910 yy_current_state = (int) yy_def[yy_current_state];
1911 if ( yy_current_state >= 568 )
1912 yy_c = yy_meta[(unsigned int) yy_c];
1914 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1915 yy_is_jam = (yy_current_state == 567);
1917 return yy_is_jam ? 0 : yy_current_state;
1922 #ifdef YY_USE_PROTOS
1923 static void yyunput( int c, register char *yy_bp )
1925 static void yyunput( c, yy_bp )
1927 register char *yy_bp;
1930 register char *yy_cp = yy_c_buf_p;
1932 /* undo effects of setting up yytext */
1933 *yy_cp = yy_hold_char;
1935 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1936 { /* need to shift things up to make room */
1937 /* +2 for EOB chars. */
1938 register int number_to_move = yy_n_chars + 2;
1939 register char *dest = &yy_current_buffer->yy_ch_buf[
1940 yy_current_buffer->yy_buf_size + 2];
1941 register char *source =
1942 &yy_current_buffer->yy_ch_buf[number_to_move];
1944 while ( source > yy_current_buffer->yy_ch_buf )
1945 *--dest = *--source;
1947 yy_cp += (int) (dest - source);
1948 yy_bp += (int) (dest - source);
1949 yy_current_buffer->yy_n_chars =
1950 yy_n_chars = yy_current_buffer->yy_buf_size;
1952 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1953 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1956 *--yy_cp = (char) c;
1960 yy_hold_char = *yy_cp;
1963 #endif /* ifndef YY_NO_UNPUT */
1968 static int yyinput()
1975 *yy_c_buf_p = yy_hold_char;
1977 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1979 /* yy_c_buf_p now points to the character we want to return.
1980 * If this occurs *before* the EOB characters, then it's a
1981 * valid NUL; if not, then we've hit the end of the buffer.
1983 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1984 /* This was really a NUL. */
1988 { /* need more input */
1989 int offset = yy_c_buf_p - yytext_ptr;
1992 switch ( yy_get_next_buffer() )
1994 case EOB_ACT_LAST_MATCH:
1995 /* This happens because yy_g_n_b()
1996 * sees that we've accumulated a
1997 * token and flags that we need to
1998 * try matching the token before
1999 * proceeding. But for input(),
2000 * there's no matching to consider.
2001 * So convert the EOB_ACT_LAST_MATCH
2002 * to EOB_ACT_END_OF_FILE.
2005 /* Reset buffer status. */
2010 case EOB_ACT_END_OF_FILE:
2015 if ( ! yy_did_buffer_switch_on_eof )
2024 case EOB_ACT_CONTINUE_SCAN:
2025 yy_c_buf_p = yytext_ptr + offset;
2031 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
2032 *yy_c_buf_p = '\0'; /* preserve yytext */
2033 yy_hold_char = *++yy_c_buf_p;
2038 #endif /* YY_NO_INPUT */
2040 #ifdef YY_USE_PROTOS
2041 void yyrestart( FILE *input_file )
2043 void yyrestart( input_file )
2047 if ( ! yy_current_buffer )
2048 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2050 yy_init_buffer( yy_current_buffer, input_file );
2051 yy_load_buffer_state();
2055 #ifdef YY_USE_PROTOS
2056 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2058 void yy_switch_to_buffer( new_buffer )
2059 YY_BUFFER_STATE new_buffer;
2062 if ( yy_current_buffer == new_buffer )
2065 if ( yy_current_buffer )
2067 /* Flush out information for old buffer. */
2068 *yy_c_buf_p = yy_hold_char;
2069 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2070 yy_current_buffer->yy_n_chars = yy_n_chars;
2073 yy_current_buffer = new_buffer;
2074 yy_load_buffer_state();
2076 /* We don't actually know whether we did this switch during
2077 * EOF (yywrap()) processing, but the only time this flag
2078 * is looked at is after yywrap() is called, so it's safe
2079 * to go ahead and always set it.
2081 yy_did_buffer_switch_on_eof = 1;
2085 #ifdef YY_USE_PROTOS
2086 void yy_load_buffer_state( void )
2088 void yy_load_buffer_state()
2091 yy_n_chars = yy_current_buffer->yy_n_chars;
2092 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2093 yyin = yy_current_buffer->yy_input_file;
2094 yy_hold_char = *yy_c_buf_p;
2098 #ifdef YY_USE_PROTOS
2099 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2101 YY_BUFFER_STATE yy_create_buffer( file, size )
2108 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2110 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2112 b->yy_buf_size = size;
2114 /* yy_ch_buf has to be 2 characters longer than the size given because
2115 * we need to put in 2 end-of-buffer characters.
2117 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2118 if ( ! b->yy_ch_buf )
2119 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2121 b->yy_is_our_buffer = 1;
2123 yy_init_buffer( b, file );
2129 #ifdef YY_USE_PROTOS
2130 void yy_delete_buffer( YY_BUFFER_STATE b )
2132 void yy_delete_buffer( b )
2139 if ( b == yy_current_buffer )
2140 yy_current_buffer = (YY_BUFFER_STATE) 0;
2142 if ( b->yy_is_our_buffer )
2143 yy_flex_free( (void *) b->yy_ch_buf );
2145 yy_flex_free( (void *) b );
2150 #ifdef YY_USE_PROTOS
2151 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2153 void yy_init_buffer( b, file )
2160 yy_flush_buffer( b );
2162 b->yy_input_file = file;
2163 b->yy_fill_buffer = 1;
2165 #if YY_ALWAYS_INTERACTIVE
2166 b->yy_is_interactive = 1;
2168 #if YY_NEVER_INTERACTIVE
2169 b->yy_is_interactive = 0;
2171 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2177 #ifdef YY_USE_PROTOS
2178 void yy_flush_buffer( YY_BUFFER_STATE b )
2180 void yy_flush_buffer( b )
2190 /* We always need two end-of-buffer characters. The first causes
2191 * a transition to the end-of-buffer state. The second causes
2192 * a jam in that state.
2194 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2195 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2197 b->yy_buf_pos = &b->yy_ch_buf[0];
2200 b->yy_buffer_status = YY_BUFFER_NEW;
2202 if ( b == yy_current_buffer )
2203 yy_load_buffer_state();
2207 #ifndef YY_NO_SCAN_BUFFER
2208 #ifdef YY_USE_PROTOS
2209 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2211 YY_BUFFER_STATE yy_scan_buffer( base, size )
2219 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2220 base[size-1] != YY_END_OF_BUFFER_CHAR )
2221 /* They forgot to leave room for the EOB's. */
2224 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2226 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2228 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2229 b->yy_buf_pos = b->yy_ch_buf = base;
2230 b->yy_is_our_buffer = 0;
2231 b->yy_input_file = 0;
2232 b->yy_n_chars = b->yy_buf_size;
2233 b->yy_is_interactive = 0;
2235 b->yy_fill_buffer = 0;
2236 b->yy_buffer_status = YY_BUFFER_NEW;
2238 yy_switch_to_buffer( b );
2245 #ifndef YY_NO_SCAN_STRING
2246 #ifdef YY_USE_PROTOS
2247 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2249 YY_BUFFER_STATE yy_scan_string( yy_str )
2250 yyconst char *yy_str;
2254 for ( len = 0; yy_str[len]; ++len )
2257 return yy_scan_bytes( yy_str, len );
2262 #ifndef YY_NO_SCAN_BYTES
2263 #ifdef YY_USE_PROTOS
2264 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2266 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2267 yyconst char *bytes;
2276 /* Get memory for full buffer, including space for trailing EOB's. */
2278 buf = (char *) yy_flex_alloc( n );
2280 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2282 for ( i = 0; i < len; ++i )
2285 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2287 b = yy_scan_buffer( buf, n );
2289 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2291 /* It's okay to grow etc. this buffer, and we should throw it
2292 * away when we're done.
2294 b->yy_is_our_buffer = 1;
2301 #ifndef YY_NO_PUSH_STATE
2302 #ifdef YY_USE_PROTOS
2303 static void yy_push_state( int new_state )
2305 static void yy_push_state( new_state )
2309 if ( yy_start_stack_ptr >= yy_start_stack_depth )
2313 yy_start_stack_depth += YY_START_STACK_INCR;
2314 new_size = yy_start_stack_depth * sizeof( int );
2316 if ( ! yy_start_stack )
2317 yy_start_stack = (int *) yy_flex_alloc( new_size );
2320 yy_start_stack = (int *) yy_flex_realloc(
2321 (void *) yy_start_stack, new_size );
2323 if ( ! yy_start_stack )
2325 "out of memory expanding start-condition stack" );
2328 yy_start_stack[yy_start_stack_ptr++] = YY_START;
2335 #ifndef YY_NO_POP_STATE
2336 static void yy_pop_state()
2338 if ( --yy_start_stack_ptr < 0 )
2339 YY_FATAL_ERROR( "start-condition stack underflow" );
2341 BEGIN(yy_start_stack[yy_start_stack_ptr]);
2346 #ifndef YY_NO_TOP_STATE
2347 static int yy_top_state()
2349 return yy_start_stack[yy_start_stack_ptr - 1];
2353 #ifndef YY_EXIT_FAILURE
2354 #define YY_EXIT_FAILURE 2
2357 #ifdef YY_USE_PROTOS
2358 static void yy_fatal_error( yyconst char msg[] )
2360 static void yy_fatal_error( msg )
2364 (void) fprintf( stderr, "%s\n", msg );
2365 exit( YY_EXIT_FAILURE );
2370 /* Redefine yyless() so it works in section 3 code. */
2376 /* Undo effects of setting up yytext. */ \
2377 yytext[yyleng] = yy_hold_char; \
2378 yy_c_buf_p = yytext + n; \
2379 yy_hold_char = *yy_c_buf_p; \
2380 *yy_c_buf_p = '\0'; \
2386 /* Internal utility routines. */
2389 #ifdef YY_USE_PROTOS
2390 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2392 static void yy_flex_strncpy( s1, s2, n )
2399 for ( i = 0; i < n; ++i )
2404 #ifdef YY_NEED_STRLEN
2405 #ifdef YY_USE_PROTOS
2406 static int yy_flex_strlen( yyconst char *s )
2408 static int yy_flex_strlen( s )
2413 for ( n = 0; s[n]; ++n )
2421 #ifdef YY_USE_PROTOS
2422 static void *yy_flex_alloc( yy_size_t size )
2424 static void *yy_flex_alloc( size )
2428 return (void *) malloc( size );
2431 #ifdef YY_USE_PROTOS
2432 static void *yy_flex_realloc( void *ptr, yy_size_t size )
2434 static void *yy_flex_realloc( ptr, size )
2439 /* The cast to (char *) in the following accommodates both
2440 * implementations that use char* generic pointers, and those
2441 * that use void* generic pointers. It works with the latter
2442 * because both ANSI C and C++ allow castless assignment from
2443 * any pointer type to void*, and deal with argument conversions
2444 * as though doing an assignment.
2446 return (void *) realloc( (char *) ptr, size );
2449 #ifdef YY_USE_PROTOS
2450 static void yy_flex_free( void *ptr )
2452 static void yy_flex_free( ptr )
2469 #ifndef yywrap /* XXX */
2478 error_message (const char *format, ...)
2482 va_start (args, format);
2483 fprintf (stderr, "%s:%d: ", get_filename(), lineno);
2484 vfprintf (stderr, format, args);
2490 unterminated(const char *type, unsigned start_lineno)
2492 error_message("unterminated %s, possibly started on line %d\n", type, start_lineno);