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