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.26 2005/07/12 06:27:33 lha Exp $ */
755 #include "gen_locl.h"
757 static unsigned lineno = 1;
761 static void handle_comment(int type);
762 static char *handle_string(void);
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; }
1422 { handle_comment(0); }
1427 { handle_comment(1); }
1432 { yylval.name = handle_string(); return STRING; }
1437 { char *e, *y = yytext;
1438 yylval.constant = strtol((const char *)yytext,
1441 error_message("malformed constant (%s)", yytext);
1450 yylval.name = estrdup ((const char *)yytext);
1467 { return ELLIPSIS; }
1477 { error_message("Ignoring char(%c)\n", *yytext); }
1484 #line 1485 "lex.yy.c"
1485 case YY_STATE_EOF(INITIAL):
1488 case YY_END_OF_BUFFER:
1490 /* Amount of text matched not including the EOB char. */
1491 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1493 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1494 *yy_cp = yy_hold_char;
1495 YY_RESTORE_YY_MORE_OFFSET
1497 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1499 /* We're scanning a new file or input source. It's
1500 * possible that this happened because the user
1501 * just pointed yyin at a new source and called
1502 * yylex(). If so, then we have to assure
1503 * consistency between yy_current_buffer and our
1504 * globals. Here is the right place to do so, because
1505 * this is the first action (other than possibly a
1506 * back-up) that will match for the new input source.
1508 yy_n_chars = yy_current_buffer->yy_n_chars;
1509 yy_current_buffer->yy_input_file = yyin;
1510 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1513 /* Note that here we test for yy_c_buf_p "<=" to the position
1514 * of the first EOB in the buffer, since yy_c_buf_p will
1515 * already have been incremented past the NUL character
1516 * (since all states make transitions on EOB to the
1517 * end-of-buffer state). Contrast this with the test
1520 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1521 { /* This was really a NUL. */
1522 yy_state_type yy_next_state;
1524 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1526 yy_current_state = yy_get_previous_state();
1528 /* Okay, we're now positioned to make the NUL
1529 * transition. We couldn't have
1530 * yy_get_previous_state() go ahead and do it
1531 * for us because it doesn't know how to deal
1532 * with the possibility of jamming (and we don't
1533 * want to build jamming into it because then it
1534 * will run more slowly).
1537 yy_next_state = yy_try_NUL_trans( yy_current_state );
1539 yy_bp = yytext_ptr + YY_MORE_ADJ;
1541 if ( yy_next_state )
1543 /* Consume the NUL. */
1544 yy_cp = ++yy_c_buf_p;
1545 yy_current_state = yy_next_state;
1552 goto yy_find_action;
1556 else switch ( yy_get_next_buffer() )
1558 case EOB_ACT_END_OF_FILE:
1560 yy_did_buffer_switch_on_eof = 0;
1564 /* Note: because we've taken care in
1565 * yy_get_next_buffer() to have set up
1566 * yytext, we can now set up
1567 * yy_c_buf_p so that if some total
1568 * hoser (like flex itself) wants to
1569 * call the scanner after we return the
1570 * YY_NULL, it'll still work - another
1571 * YY_NULL will get returned.
1573 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1575 yy_act = YY_STATE_EOF(YY_START);
1581 if ( ! yy_did_buffer_switch_on_eof )
1587 case EOB_ACT_CONTINUE_SCAN:
1589 yytext_ptr + yy_amount_of_matched_text;
1591 yy_current_state = yy_get_previous_state();
1594 yy_bp = yytext_ptr + YY_MORE_ADJ;
1597 case EOB_ACT_LAST_MATCH:
1599 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1601 yy_current_state = yy_get_previous_state();
1604 yy_bp = yytext_ptr + YY_MORE_ADJ;
1605 goto yy_find_action;
1612 "fatal flex scanner internal error--no action found" );
1613 } /* end of action switch */
1614 } /* end of scanning one token */
1615 } /* end of yylex */
1618 /* yy_get_next_buffer - try to read in a new buffer
1620 * Returns a code representing an action:
1621 * EOB_ACT_LAST_MATCH -
1622 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1623 * EOB_ACT_END_OF_FILE - end of file
1626 static int yy_get_next_buffer()
1628 register char *dest = yy_current_buffer->yy_ch_buf;
1629 register char *source = yytext_ptr;
1630 register int number_to_move, i;
1633 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1635 "fatal flex scanner internal error--end of buffer missed" );
1637 if ( yy_current_buffer->yy_fill_buffer == 0 )
1638 { /* Don't try to fill the buffer, so this is an EOF. */
1639 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1641 /* We matched a single character, the EOB, so
1642 * treat this as a final EOF.
1644 return EOB_ACT_END_OF_FILE;
1649 /* We matched some text prior to the EOB, first
1652 return EOB_ACT_LAST_MATCH;
1656 /* Try to read more data. */
1658 /* First move last chars to start of buffer. */
1659 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1661 for ( i = 0; i < number_to_move; ++i )
1662 *(dest++) = *(source++);
1664 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1665 /* don't do the read, it's not guaranteed to return an EOF,
1668 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1673 yy_current_buffer->yy_buf_size - number_to_move - 1;
1675 while ( num_to_read <= 0 )
1676 { /* Not enough room in the buffer - grow it. */
1677 #ifdef YY_USES_REJECT
1679 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1682 /* just a shorter name for the current buffer */
1683 YY_BUFFER_STATE b = yy_current_buffer;
1685 int yy_c_buf_p_offset =
1686 (int) (yy_c_buf_p - b->yy_ch_buf);
1688 if ( b->yy_is_our_buffer )
1690 int new_size = b->yy_buf_size * 2;
1692 if ( new_size <= 0 )
1693 b->yy_buf_size += b->yy_buf_size / 8;
1695 b->yy_buf_size *= 2;
1697 b->yy_ch_buf = (char *)
1698 /* Include room in for 2 EOB chars. */
1699 yy_flex_realloc( (void *) b->yy_ch_buf,
1700 b->yy_buf_size + 2 );
1703 /* Can't grow it, we don't own it. */
1706 if ( ! b->yy_ch_buf )
1708 "fatal error - scanner input buffer overflow" );
1710 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1712 num_to_read = yy_current_buffer->yy_buf_size -
1717 if ( num_to_read > YY_READ_BUF_SIZE )
1718 num_to_read = YY_READ_BUF_SIZE;
1720 /* Read in more data. */
1721 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1722 yy_n_chars, num_to_read );
1724 yy_current_buffer->yy_n_chars = yy_n_chars;
1727 if ( yy_n_chars == 0 )
1729 if ( number_to_move == YY_MORE_ADJ )
1731 ret_val = EOB_ACT_END_OF_FILE;
1737 ret_val = EOB_ACT_LAST_MATCH;
1738 yy_current_buffer->yy_buffer_status =
1739 YY_BUFFER_EOF_PENDING;
1744 ret_val = EOB_ACT_CONTINUE_SCAN;
1746 yy_n_chars += number_to_move;
1747 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1748 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1750 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1756 /* yy_get_previous_state - get the state just before the EOB char was reached */
1758 static yy_state_type yy_get_previous_state()
1760 register yy_state_type yy_current_state;
1761 register char *yy_cp;
1763 yy_current_state = yy_start;
1765 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1767 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1768 if ( yy_accept[yy_current_state] )
1770 yy_last_accepting_state = yy_current_state;
1771 yy_last_accepting_cpos = yy_cp;
1773 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1775 yy_current_state = (int) yy_def[yy_current_state];
1776 if ( yy_current_state >= 568 )
1777 yy_c = yy_meta[(unsigned int) yy_c];
1779 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1782 return yy_current_state;
1786 /* yy_try_NUL_trans - try to make a transition on the NUL character
1789 * next_state = yy_try_NUL_trans( current_state );
1792 #ifdef YY_USE_PROTOS
1793 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1795 static yy_state_type yy_try_NUL_trans( yy_current_state )
1796 yy_state_type yy_current_state;
1799 register int yy_is_jam;
1800 register char *yy_cp = yy_c_buf_p;
1802 register YY_CHAR yy_c = 1;
1803 if ( yy_accept[yy_current_state] )
1805 yy_last_accepting_state = yy_current_state;
1806 yy_last_accepting_cpos = yy_cp;
1808 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1810 yy_current_state = (int) yy_def[yy_current_state];
1811 if ( yy_current_state >= 568 )
1812 yy_c = yy_meta[(unsigned int) yy_c];
1814 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1815 yy_is_jam = (yy_current_state == 567);
1817 return yy_is_jam ? 0 : yy_current_state;
1822 #ifdef YY_USE_PROTOS
1823 static void yyunput( int c, register char *yy_bp )
1825 static void yyunput( c, yy_bp )
1827 register char *yy_bp;
1830 register char *yy_cp = yy_c_buf_p;
1832 /* undo effects of setting up yytext */
1833 *yy_cp = yy_hold_char;
1835 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1836 { /* need to shift things up to make room */
1837 /* +2 for EOB chars. */
1838 register int number_to_move = yy_n_chars + 2;
1839 register char *dest = &yy_current_buffer->yy_ch_buf[
1840 yy_current_buffer->yy_buf_size + 2];
1841 register char *source =
1842 &yy_current_buffer->yy_ch_buf[number_to_move];
1844 while ( source > yy_current_buffer->yy_ch_buf )
1845 *--dest = *--source;
1847 yy_cp += (int) (dest - source);
1848 yy_bp += (int) (dest - source);
1849 yy_current_buffer->yy_n_chars =
1850 yy_n_chars = yy_current_buffer->yy_buf_size;
1852 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1853 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1856 *--yy_cp = (char) c;
1860 yy_hold_char = *yy_cp;
1863 #endif /* ifndef YY_NO_UNPUT */
1868 static int yyinput()
1875 *yy_c_buf_p = yy_hold_char;
1877 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1879 /* yy_c_buf_p now points to the character we want to return.
1880 * If this occurs *before* the EOB characters, then it's a
1881 * valid NUL; if not, then we've hit the end of the buffer.
1883 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1884 /* This was really a NUL. */
1888 { /* need more input */
1889 int offset = yy_c_buf_p - yytext_ptr;
1892 switch ( yy_get_next_buffer() )
1894 case EOB_ACT_LAST_MATCH:
1895 /* This happens because yy_g_n_b()
1896 * sees that we've accumulated a
1897 * token and flags that we need to
1898 * try matching the token before
1899 * proceeding. But for input(),
1900 * there's no matching to consider.
1901 * So convert the EOB_ACT_LAST_MATCH
1902 * to EOB_ACT_END_OF_FILE.
1905 /* Reset buffer status. */
1910 case EOB_ACT_END_OF_FILE:
1915 if ( ! yy_did_buffer_switch_on_eof )
1924 case EOB_ACT_CONTINUE_SCAN:
1925 yy_c_buf_p = yytext_ptr + offset;
1931 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
1932 *yy_c_buf_p = '\0'; /* preserve yytext */
1933 yy_hold_char = *++yy_c_buf_p;
1938 #endif /* YY_NO_INPUT */
1940 #ifdef YY_USE_PROTOS
1941 void yyrestart( FILE *input_file )
1943 void yyrestart( input_file )
1947 if ( ! yy_current_buffer )
1948 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1950 yy_init_buffer( yy_current_buffer, input_file );
1951 yy_load_buffer_state();
1955 #ifdef YY_USE_PROTOS
1956 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1958 void yy_switch_to_buffer( new_buffer )
1959 YY_BUFFER_STATE new_buffer;
1962 if ( yy_current_buffer == new_buffer )
1965 if ( yy_current_buffer )
1967 /* Flush out information for old buffer. */
1968 *yy_c_buf_p = yy_hold_char;
1969 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1970 yy_current_buffer->yy_n_chars = yy_n_chars;
1973 yy_current_buffer = new_buffer;
1974 yy_load_buffer_state();
1976 /* We don't actually know whether we did this switch during
1977 * EOF (yywrap()) processing, but the only time this flag
1978 * is looked at is after yywrap() is called, so it's safe
1979 * to go ahead and always set it.
1981 yy_did_buffer_switch_on_eof = 1;
1985 #ifdef YY_USE_PROTOS
1986 void yy_load_buffer_state( void )
1988 void yy_load_buffer_state()
1991 yy_n_chars = yy_current_buffer->yy_n_chars;
1992 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1993 yyin = yy_current_buffer->yy_input_file;
1994 yy_hold_char = *yy_c_buf_p;
1998 #ifdef YY_USE_PROTOS
1999 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2001 YY_BUFFER_STATE yy_create_buffer( file, size )
2008 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2010 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2012 b->yy_buf_size = size;
2014 /* yy_ch_buf has to be 2 characters longer than the size given because
2015 * we need to put in 2 end-of-buffer characters.
2017 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2018 if ( ! b->yy_ch_buf )
2019 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2021 b->yy_is_our_buffer = 1;
2023 yy_init_buffer( b, file );
2029 #ifdef YY_USE_PROTOS
2030 void yy_delete_buffer( YY_BUFFER_STATE b )
2032 void yy_delete_buffer( b )
2039 if ( b == yy_current_buffer )
2040 yy_current_buffer = (YY_BUFFER_STATE) 0;
2042 if ( b->yy_is_our_buffer )
2043 yy_flex_free( (void *) b->yy_ch_buf );
2045 yy_flex_free( (void *) b );
2050 #ifdef YY_USE_PROTOS
2051 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2053 void yy_init_buffer( b, file )
2060 yy_flush_buffer( b );
2062 b->yy_input_file = file;
2063 b->yy_fill_buffer = 1;
2065 #if YY_ALWAYS_INTERACTIVE
2066 b->yy_is_interactive = 1;
2068 #if YY_NEVER_INTERACTIVE
2069 b->yy_is_interactive = 0;
2071 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2077 #ifdef YY_USE_PROTOS
2078 void yy_flush_buffer( YY_BUFFER_STATE b )
2080 void yy_flush_buffer( b )
2090 /* We always need two end-of-buffer characters. The first causes
2091 * a transition to the end-of-buffer state. The second causes
2092 * a jam in that state.
2094 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2095 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2097 b->yy_buf_pos = &b->yy_ch_buf[0];
2100 b->yy_buffer_status = YY_BUFFER_NEW;
2102 if ( b == yy_current_buffer )
2103 yy_load_buffer_state();
2107 #ifndef YY_NO_SCAN_BUFFER
2108 #ifdef YY_USE_PROTOS
2109 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2111 YY_BUFFER_STATE yy_scan_buffer( base, size )
2119 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2120 base[size-1] != YY_END_OF_BUFFER_CHAR )
2121 /* They forgot to leave room for the EOB's. */
2124 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2126 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2128 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2129 b->yy_buf_pos = b->yy_ch_buf = base;
2130 b->yy_is_our_buffer = 0;
2131 b->yy_input_file = 0;
2132 b->yy_n_chars = b->yy_buf_size;
2133 b->yy_is_interactive = 0;
2135 b->yy_fill_buffer = 0;
2136 b->yy_buffer_status = YY_BUFFER_NEW;
2138 yy_switch_to_buffer( b );
2145 #ifndef YY_NO_SCAN_STRING
2146 #ifdef YY_USE_PROTOS
2147 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2149 YY_BUFFER_STATE yy_scan_string( yy_str )
2150 yyconst char *yy_str;
2154 for ( len = 0; yy_str[len]; ++len )
2157 return yy_scan_bytes( yy_str, len );
2162 #ifndef YY_NO_SCAN_BYTES
2163 #ifdef YY_USE_PROTOS
2164 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2166 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2167 yyconst char *bytes;
2176 /* Get memory for full buffer, including space for trailing EOB's. */
2178 buf = (char *) yy_flex_alloc( n );
2180 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2182 for ( i = 0; i < len; ++i )
2185 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2187 b = yy_scan_buffer( buf, n );
2189 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2191 /* It's okay to grow etc. this buffer, and we should throw it
2192 * away when we're done.
2194 b->yy_is_our_buffer = 1;
2201 #ifndef YY_NO_PUSH_STATE
2202 #ifdef YY_USE_PROTOS
2203 static void yy_push_state( int new_state )
2205 static void yy_push_state( new_state )
2209 if ( yy_start_stack_ptr >= yy_start_stack_depth )
2213 yy_start_stack_depth += YY_START_STACK_INCR;
2214 new_size = yy_start_stack_depth * sizeof( int );
2216 if ( ! yy_start_stack )
2217 yy_start_stack = (int *) yy_flex_alloc( new_size );
2220 yy_start_stack = (int *) yy_flex_realloc(
2221 (void *) yy_start_stack, new_size );
2223 if ( ! yy_start_stack )
2225 "out of memory expanding start-condition stack" );
2228 yy_start_stack[yy_start_stack_ptr++] = YY_START;
2235 #ifndef YY_NO_POP_STATE
2236 static void yy_pop_state()
2238 if ( --yy_start_stack_ptr < 0 )
2239 YY_FATAL_ERROR( "start-condition stack underflow" );
2241 BEGIN(yy_start_stack[yy_start_stack_ptr]);
2246 #ifndef YY_NO_TOP_STATE
2247 static int yy_top_state()
2249 return yy_start_stack[yy_start_stack_ptr - 1];
2253 #ifndef YY_EXIT_FAILURE
2254 #define YY_EXIT_FAILURE 2
2257 #ifdef YY_USE_PROTOS
2258 static void yy_fatal_error( yyconst char msg[] )
2260 static void yy_fatal_error( msg )
2264 (void) fprintf( stderr, "%s\n", msg );
2265 exit( YY_EXIT_FAILURE );
2270 /* Redefine yyless() so it works in section 3 code. */
2276 /* Undo effects of setting up yytext. */ \
2277 yytext[yyleng] = yy_hold_char; \
2278 yy_c_buf_p = yytext + n; \
2279 yy_hold_char = *yy_c_buf_p; \
2280 *yy_c_buf_p = '\0'; \
2286 /* Internal utility routines. */
2289 #ifdef YY_USE_PROTOS
2290 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2292 static void yy_flex_strncpy( s1, s2, n )
2299 for ( i = 0; i < n; ++i )
2304 #ifdef YY_NEED_STRLEN
2305 #ifdef YY_USE_PROTOS
2306 static int yy_flex_strlen( yyconst char *s )
2308 static int yy_flex_strlen( s )
2313 for ( n = 0; s[n]; ++n )
2321 #ifdef YY_USE_PROTOS
2322 static void *yy_flex_alloc( yy_size_t size )
2324 static void *yy_flex_alloc( size )
2328 return (void *) malloc( size );
2331 #ifdef YY_USE_PROTOS
2332 static void *yy_flex_realloc( void *ptr, yy_size_t size )
2334 static void *yy_flex_realloc( ptr, size )
2339 /* The cast to (char *) in the following accommodates both
2340 * implementations that use char* generic pointers, and those
2341 * that use void* generic pointers. It works with the latter
2342 * because both ANSI C and C++ allow castless assignment from
2343 * any pointer type to void*, and deal with argument conversions
2344 * as though doing an assignment.
2346 return (void *) realloc( (char *) ptr, size );
2349 #ifdef YY_USE_PROTOS
2350 static void yy_flex_free( void *ptr )
2352 static void yy_flex_free( ptr )
2369 #ifndef yywrap /* XXX */
2378 error_message (const char *format, ...)
2382 va_start (args, format);
2383 fprintf (stderr, "%s:%d: ", get_filename(), lineno);
2384 vfprintf (stderr, format, args);
2390 handle_comment(int type)
2393 int start_lineno = lineno;
2396 while((c = input()) != EOF) {
2413 while((c = input()) != EOF) {
2424 if(seen_star && c == '/') {
2433 seen_star = seen_slash = 0;
2439 seen_star = seen_slash = 0;
2447 error_message("unterminated comment, possibly started on line %d\n", start_lineno);
2453 int start_lineno = lineno;
2460 while((c = input()) != EOF) {
2461 if(isspace(c) && skip_ws) {
2482 while(p > buf && isspace((unsigned char)p[-1]))
2490 error_message("unterminated string, possibly started on line %d\n", start_lineno);
2492 fprintf(stderr, "string -- %s\n", buf);
2493 return estrdup(buf);