scanner.cc
00001 #line 2 "scanner.cc" 00002 00003 #line 4 "scanner.cc" 00004 00005 #define YY_INT_ALIGNED short int 00006 00007 /* A lexical scanner generated by flex */ 00008 00009 #define FLEX_SCANNER 00010 #define YY_FLEX_MAJOR_VERSION 2 00011 #define YY_FLEX_MINOR_VERSION 5 00012 #define YY_FLEX_SUBMINOR_VERSION 35 00013 #if YY_FLEX_SUBMINOR_VERSION > 0 00014 #define FLEX_BETA 00015 #endif 00016 00017 /* First, we deal with platform-specific or compiler-specific issues. */ 00018 00019 /* begin standard C headers. */ 00020 #include <stdio.h> 00021 #include <string.h> 00022 #include <errno.h> 00023 #include <stdlib.h> 00024 00025 /* end standard C headers. */ 00026 00027 /* flex integer type definitions */ 00028 00029 #ifndef FLEXINT_H 00030 #define FLEXINT_H 00031 00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 00033 00034 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 00035 00036 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 00037 * if you want the limit (max/min) macros for int types. 00038 */ 00039 #ifndef __STDC_LIMIT_MACROS 00040 #define __STDC_LIMIT_MACROS 1 00041 #endif 00042 00043 #include <inttypes.h> 00044 typedef int8_t flex_int8_t; 00045 typedef uint8_t flex_uint8_t; 00046 typedef int16_t flex_int16_t; 00047 typedef uint16_t flex_uint16_t; 00048 typedef int32_t flex_int32_t; 00049 typedef uint32_t flex_uint32_t; 00050 #else 00051 typedef signed char flex_int8_t; 00052 typedef short int flex_int16_t; 00053 typedef int flex_int32_t; 00054 typedef unsigned char flex_uint8_t; 00055 typedef unsigned short int flex_uint16_t; 00056 typedef unsigned int flex_uint32_t; 00057 00058 /* Limits of integral types. */ 00059 #ifndef INT8_MIN 00060 #define INT8_MIN (-128) 00061 #endif 00062 #ifndef INT16_MIN 00063 #define INT16_MIN (-32767-1) 00064 #endif 00065 #ifndef INT32_MIN 00066 #define INT32_MIN (-2147483647-1) 00067 #endif 00068 #ifndef INT8_MAX 00069 #define INT8_MAX (127) 00070 #endif 00071 #ifndef INT16_MAX 00072 #define INT16_MAX (32767) 00073 #endif 00074 #ifndef INT32_MAX 00075 #define INT32_MAX (2147483647) 00076 #endif 00077 #ifndef UINT8_MAX 00078 #define UINT8_MAX (255U) 00079 #endif 00080 #ifndef UINT16_MAX 00081 #define UINT16_MAX (65535U) 00082 #endif 00083 #ifndef UINT32_MAX 00084 #define UINT32_MAX (4294967295U) 00085 #endif 00086 00087 #endif /* ! C99 */ 00088 00089 #endif /* ! FLEXINT_H */ 00090 00091 #ifdef __cplusplus 00092 00093 /* The "const" storage-class-modifier is valid. */ 00094 #define YY_USE_CONST 00095 00096 #else /* ! __cplusplus */ 00097 00098 /* C99 requires __STDC__ to be defined as 1. */ 00099 #if defined (__STDC__) 00100 00101 #define YY_USE_CONST 00102 00103 #endif /* defined (__STDC__) */ 00104 #endif /* ! __cplusplus */ 00105 00106 #ifdef YY_USE_CONST 00107 #define yyconst const 00108 #else 00109 #define yyconst 00110 #endif 00111 00112 /* Returned upon end-of-file. */ 00113 #define YY_NULL 0 00114 00115 /* Promotes a possibly negative, possibly signed char to an unsigned 00116 * integer for use as an array index. If the signed char is negative, 00117 * we want to instead treat it as an 8-bit unsigned char, hence the 00118 * double cast. 00119 */ 00120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 00121 00122 /* Enter a start condition. This macro really ought to take a parameter, 00123 * but we do it the disgusting crufty way forced on us by the ()-less 00124 * definition of BEGIN. 00125 */ 00126 #define BEGIN (yy_start) = 1 + 2 * 00127 00128 /* Translate the current start state into a value that can be later handed 00129 * to BEGIN to return to the state. The YYSTATE alias is for lex 00130 * compatibility. 00131 */ 00132 #define YY_START (((yy_start) - 1) / 2) 00133 #define YYSTATE YY_START 00134 00135 /* Action number for EOF rule of a given start state. */ 00136 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 00137 00138 /* Special action meaning "start processing a new file". */ 00139 #define YY_NEW_FILE yyrestart(yyin ) 00140 00141 #define YY_END_OF_BUFFER_CHAR 0 00142 00143 /* Size of default input buffer. */ 00144 #ifndef YY_BUF_SIZE 00145 #ifdef __ia64__ 00146 /* On IA-64, the buffer size is 16k, not 8k. 00147 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 00148 * Ditto for the __ia64__ case accordingly. 00149 */ 00150 #define YY_BUF_SIZE 32768 00151 #else 00152 #define YY_BUF_SIZE 16384 00153 #endif /* __ia64__ */ 00154 #endif 00155 00156 /* The state buf must be large enough to hold one state per character in the main buffer. 00157 */ 00158 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 00159 00160 #ifndef YY_TYPEDEF_YY_BUFFER_STATE 00161 #define YY_TYPEDEF_YY_BUFFER_STATE 00162 typedef struct yy_buffer_state *YY_BUFFER_STATE; 00163 #endif 00164 00165 extern int yyleng; 00166 00167 extern FILE *yyin, *yyout; 00168 00169 #define EOB_ACT_CONTINUE_SCAN 0 00170 #define EOB_ACT_END_OF_FILE 1 00171 #define EOB_ACT_LAST_MATCH 2 00172 00173 #define YY_LESS_LINENO(n) 00174 00175 /* Return all but the first "n" matched characters back to the input stream. */ 00176 #define yyless(n) \ 00177 do \ 00178 { \ 00179 /* Undo effects of setting up yytext. */ \ 00180 int yyless_macro_arg = (n); \ 00181 YY_LESS_LINENO(yyless_macro_arg);\ 00182 *yy_cp = (yy_hold_char); \ 00183 YY_RESTORE_YY_MORE_OFFSET \ 00184 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 00185 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 00186 } \ 00187 while ( 0 ) 00188 00189 #define unput(c) yyunput( c, (yytext_ptr) ) 00190 00191 #ifndef YY_TYPEDEF_YY_SIZE_T 00192 #define YY_TYPEDEF_YY_SIZE_T 00193 typedef size_t yy_size_t; 00194 #endif 00195 00196 #ifndef YY_STRUCT_YY_BUFFER_STATE 00197 #define YY_STRUCT_YY_BUFFER_STATE 00198 struct yy_buffer_state 00199 { 00200 FILE *yy_input_file; 00201 00202 char *yy_ch_buf; /* input buffer */ 00203 char *yy_buf_pos; /* current position in input buffer */ 00204 00205 /* Size of input buffer in bytes, not including room for EOB 00206 * characters. 00207 */ 00208 yy_size_t yy_buf_size; 00209 00210 /* Number of characters read into yy_ch_buf, not including EOB 00211 * characters. 00212 */ 00213 int yy_n_chars; 00214 00215 /* Whether we "own" the buffer - i.e., we know we created it, 00216 * and can realloc() it to grow it, and should free() it to 00217 * delete it. 00218 */ 00219 int yy_is_our_buffer; 00220 00221 /* Whether this is an "interactive" input source; if so, and 00222 * if we're using stdio for input, then we want to use getc() 00223 * instead of fread(), to make sure we stop fetching input after 00224 * each newline. 00225 */ 00226 int yy_is_interactive; 00227 00228 /* Whether we're considered to be at the beginning of a line. 00229 * If so, '^' rules will be active on the next match, otherwise 00230 * not. 00231 */ 00232 int yy_at_bol; 00233 00234 int yy_bs_lineno; 00235 int yy_bs_column; 00237 /* Whether to try to fill the input buffer when we reach the 00238 * end of it. 00239 */ 00240 int yy_fill_buffer; 00241 00242 int yy_buffer_status; 00243 00244 #define YY_BUFFER_NEW 0 00245 #define YY_BUFFER_NORMAL 1 00246 /* When an EOF's been seen but there's still some text to process 00247 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 00248 * shouldn't try reading from the input source any more. We might 00249 * still have a bunch of tokens to match, though, because of 00250 * possible backing-up. 00251 * 00252 * When we actually see the EOF, we change the status to "new" 00253 * (via yyrestart()), so that the user can continue scanning by 00254 * just pointing yyin at a new input file. 00255 */ 00256 #define YY_BUFFER_EOF_PENDING 2 00257 00258 }; 00259 #endif /* !YY_STRUCT_YY_BUFFER_STATE */ 00260 00261 /* Stack of input buffers. */ 00262 static size_t yy_buffer_stack_top = 0; 00263 static size_t yy_buffer_stack_max = 0; 00264 static YY_BUFFER_STATE * yy_buffer_stack = 0; 00266 /* We provide macros for accessing buffer states in case in the 00267 * future we want to put the buffer states in a more general 00268 * "scanner state". 00269 * 00270 * Returns the top of the stack, or NULL. 00271 */ 00272 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 00273 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 00274 : NULL) 00275 00276 /* Same as previous macro, but useful when we know that the buffer stack is not 00277 * NULL or when we need an lvalue. For internal use only. 00278 */ 00279 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 00280 00281 /* yy_hold_char holds the character lost when yytext is formed. */ 00282 static char yy_hold_char; 00283 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00284 int yyleng; 00285 00286 /* Points to current character in buffer. */ 00287 static char *yy_c_buf_p = (char *) 0; 00288 static int yy_init = 0; /* whether we need to initialize */ 00289 static int yy_start = 0; /* start state number */ 00290 00291 /* Flag which is used to allow yywrap()'s to do buffer switches 00292 * instead of setting up a fresh yyin. A bit of a hack ... 00293 */ 00294 static int yy_did_buffer_switch_on_eof; 00295 00296 void yyrestart (FILE *input_file ); 00297 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00298 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); 00299 void yy_delete_buffer (YY_BUFFER_STATE b ); 00300 void yy_flush_buffer (YY_BUFFER_STATE b ); 00301 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); 00302 void yypop_buffer_state (void ); 00303 00304 static void yyensure_buffer_stack (void ); 00305 static void yy_load_buffer_state (void ); 00306 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00307 00308 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) 00309 00310 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); 00311 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); 00312 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); 00313 00314 void *yyalloc (yy_size_t ); 00315 void *yyrealloc (void *,yy_size_t ); 00316 void yyfree (void * ); 00317 00318 #define yy_new_buffer yy_create_buffer 00319 00320 #define yy_set_interactive(is_interactive) \ 00321 { \ 00322 if ( ! YY_CURRENT_BUFFER ){ \ 00323 yyensure_buffer_stack (); \ 00324 YY_CURRENT_BUFFER_LVALUE = \ 00325 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 00326 } \ 00327 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 00328 } 00329 00330 #define yy_set_bol(at_bol) \ 00331 { \ 00332 if ( ! YY_CURRENT_BUFFER ){\ 00333 yyensure_buffer_stack (); \ 00334 YY_CURRENT_BUFFER_LVALUE = \ 00335 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 00336 } \ 00337 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 00338 } 00339 00340 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 00341 00342 /* Begin user sect3 */ 00343 00344 #define yywrap(n) 1 00345 #define YY_SKIP_YYWRAP 00346 00347 typedef unsigned char YY_CHAR; 00348 00349 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 00350 00351 typedef int yy_state_type; 00352 00353 extern int yylineno; 00354 00355 int yylineno = 1; 00356 00357 extern char *yytext; 00358 #define yytext_ptr yytext 00359 00360 static yy_state_type yy_get_previous_state (void ); 00361 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 00362 static int yy_get_next_buffer (void ); 00363 static void yy_fatal_error (yyconst char msg[] ); 00364 00365 /* Done after the current pattern has been matched and before the 00366 * corresponding action - sets up yytext. 00367 */ 00368 #define YY_DO_BEFORE_ACTION \ 00369 (yytext_ptr) = yy_bp; \ 00370 yyleng = (size_t) (yy_cp - yy_bp); \ 00371 (yy_hold_char) = *yy_cp; \ 00372 *yy_cp = '\0'; \ 00373 (yy_c_buf_p) = yy_cp; 00374 00375 #define YY_NUM_RULES 84 00376 #define YY_END_OF_BUFFER 85 00377 /* This struct is not used in this scanner, 00378 but its presence is necessary. */ 00379 struct yy_trans_info 00380 { 00381 flex_int32_t yy_verify; 00382 flex_int32_t yy_nxt; 00383 }; 00384 static yyconst flex_int16_t yy_acclist[672] = 00385 { 0, 00386 6, 6, 85, 6, 83, 84, 1, 6, 83, 84, 00387 2, 84, 6, 83, 84, 6, 83, 84, 6, 83, 00388 84, 6, 23, 83, 84, 6, 83, 84, 6, 14, 00389 83, 84, 6, 15, 83, 84, 7, 21, 83, 84, 00390 6, 17, 83, 84, 6, 20, 83, 84, 6, 18, 00391 83, 84, 6, 28, 83, 84, 6, 83, 84, 6, 00392 69, 79, 83, 84, 6, 78, 83, 84, 6, 16, 00393 83, 84, 6, 22, 83, 84, 6, 24, 83, 84, 00394 6, 27, 83, 84, 6, 25, 83, 84, 6, 72, 00395 83, 84, 6, 72, 83, 84, 6, 72, 83, 84, 00396 00397 6, 72, 83, 84, 6, 72, 83, 84, 6, 30, 00398 83, 84, 6, 31, 83, 84, 6, 72, 83, 84, 00399 6, 72, 83, 84, 6, 72, 83, 84, 6, 72, 00400 83, 84, 6, 72, 83, 84, 6, 72, 83, 84, 00401 6, 72, 83, 84, 6, 72, 83, 84, 6, 72, 00402 83, 84, 6, 72, 83, 84, 6, 72, 83, 84, 00403 6, 72, 83, 84, 6, 72, 83, 84, 6, 72, 00404 83, 84, 6, 72, 83, 84, 6, 12, 83, 84, 00405 5, 13, 83, 84, 6, 19, 83, 84, 6, 6, 00406 34, 6, 6, 82, 6, 6, 11, 6, 9, 6, 00407 00408 6, 6, 4, 6, 32, 6, 6, 76, 3, 6, 00409 8, 6, 6, 79, 6, 6, 6, 69, 6, 80, 00410 6, 78, 6, 78, 6, 26, 6, 33, 6, 72, 00411 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00412 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00413 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00414 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00415 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00416 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00417 82, 6, 6, 6, 9, 9, 6, 6, 81, 81, 00418 00419 6, 81, 6, 6, 6, 29, 6, 6, 8, 8, 00420 6, 75, 6, 6, 74, 6, 80, 6, 72, 6, 00421 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00422 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00423 72, 6, 72, 6, 58, 72, 6, 72, 6, 72, 00424 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00425 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00426 6, 72, 6, 72, 6, 72, 6, 72, 6, 72, 00427 6, 72, 6, 72, 6, 6, 6, 6, 6, 6, 00428 6, 77, 6, 6, 72, 6, 72, 6, 72, 6, 00429 00430 72, 6, 61, 72, 6, 59, 72, 6, 72, 6, 00431 72, 6, 36, 72, 6, 72, 6, 72, 6, 72, 00432 6, 72, 6, 72, 6, 50, 72, 6, 72, 6, 00433 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00434 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00435 72, 6, 57, 72, 6, 72, 6, 72, 6, 72, 00436 6, 72, 6, 6, 6, 6, 6, 6, 73, 6, 00437 62, 72, 6, 72, 6, 72, 6, 72, 6, 39, 00438 72, 6, 35, 72, 6, 72, 6, 60, 72, 6, 00439 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00440 00441 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00442 49, 72, 6, 72, 6, 72, 6, 56, 72, 6, 00443 72, 6, 72, 6, 72, 6, 72, 6, 38, 72, 00444 6, 72, 6, 6, 66, 72, 6, 72, 6, 72, 00445 6, 72, 6, 51, 72, 6, 44, 72, 6, 63, 00446 72, 6, 72, 6, 72, 6, 72, 6, 72, 6, 00447 72, 6, 43, 72, 6, 55, 72, 6, 72, 6, 00448 47, 72, 6, 45, 72, 6, 40, 72, 6, 72, 00449 6, 72, 6, 72, 6, 6, 72, 6, 72, 6, 00450 6, 72, 6, 46, 72, 6, 72, 6, 72, 6, 00451 00452 53, 72, 6, 72, 6, 54, 72, 6, 65, 72, 00453 6, 72, 6, 42, 72, 6, 6, 67, 72, 6, 00454 72, 6, 70, 6, 70, 6, 72, 6, 72, 6, 00455 41, 72, 6, 72, 6, 48, 72, 6, 6, 6, 00456 68, 72, 6, 6, 72, 6, 37, 72, 6, 52, 00457 72, 6, 11, 6, 6, 71, 6, 72, 10, 11, 00458 6, 6, 72, 10, 6, 72, 6, 72, 6, 64, 00459 72 00460 } ; 00461 00462 static yyconst flex_int16_t yy_accept[320] = 00463 { 0, 00464 1, 2, 3, 4, 7, 11, 13, 16, 19, 22, 00465 26, 29, 33, 37, 41, 45, 49, 53, 57, 60, 00466 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 00467 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 00468 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 00469 185, 189, 190, 192, 193, 195, 195, 196, 197, 198, 00470 200, 200, 201, 202, 202, 203, 204, 206, 207, 209, 00471 210, 212, 213, 215, 216, 217, 219, 221, 223, 225, 00472 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 00473 247, 249, 251, 253, 255, 257, 259, 261, 263, 265, 00474 00475 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 00476 287, 289, 291, 292, 292, 293, 294, 296, 297, 298, 00477 300, 301, 303, 304, 305, 307, 308, 310, 311, 313, 00478 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 00479 334, 336, 338, 340, 342, 344, 347, 349, 351, 353, 00480 355, 357, 359, 361, 363, 365, 367, 369, 371, 373, 00481 375, 377, 379, 381, 383, 385, 385, 385, 386, 387, 00482 388, 389, 390, 391, 393, 394, 396, 398, 400, 402, 00483 405, 408, 410, 412, 415, 417, 419, 421, 423, 425, 00484 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 00485 00486 448, 450, 452, 455, 457, 459, 461, 463, 463, 463, 00487 464, 465, 466, 467, 468, 470, 473, 475, 477, 479, 00488 482, 485, 487, 490, 492, 494, 496, 498, 500, 502, 00489 504, 506, 508, 510, 513, 515, 517, 520, 522, 524, 00490 526, 528, 531, 533, 533, 533, 534, 537, 539, 541, 00491 543, 546, 549, 552, 554, 556, 558, 560, 562, 565, 00492 568, 570, 573, 576, 579, 581, 583, 585, 586, 588, 00493 590, 591, 593, 596, 598, 600, 603, 605, 608, 611, 00494 613, 616, 617, 620, 622, 624, 625, 626, 628, 630, 00495 633, 635, 638, 639, 640, 643, 644, 646, 649, 652, 00496 00497 653, 654, 655, 655, 657, 659, 659, 659, 661, 662, 00498 662, 664, 665, 665, 665, 667, 669, 672, 672 00499 } ; 00500 00501 static yyconst flex_int32_t yy_ec[256] = 00502 { 0, 00503 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00506 1, 4, 5, 6, 7, 1, 1, 8, 9, 10, 00507 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 00508 19, 19, 19, 19, 19, 20, 20, 21, 22, 23, 00509 24, 25, 26, 1, 27, 28, 29, 30, 31, 32, 00510 33, 33, 33, 34, 35, 36, 33, 33, 37, 38, 00511 39, 40, 41, 42, 43, 33, 33, 44, 33, 33, 00512 45, 46, 47, 1, 48, 1, 49, 50, 51, 52, 00513 00514 53, 54, 55, 56, 57, 33, 58, 59, 60, 61, 00515 62, 63, 33, 64, 65, 66, 67, 68, 33, 69, 00516 70, 33, 71, 1, 72, 73, 1, 1, 1, 1, 00517 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00518 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00519 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00520 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00521 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00522 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00523 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00524 00525 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00526 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00527 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00528 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00529 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00530 1, 1, 1, 1, 1 00531 } ; 00532 00533 static yyconst flex_int32_t yy_meta[74] = 00534 { 0, 00535 1, 2, 3, 4, 1, 5, 1, 1, 5, 1, 00536 1, 6, 1, 1, 1, 1, 1, 7, 7, 8, 00537 1, 1, 1, 1, 1, 5, 8, 8, 8, 8, 00538 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 00539 4, 4, 4, 9, 1, 5, 1, 4, 7, 7, 00540 8, 8, 8, 7, 4, 4, 4, 4, 4, 4, 00541 9, 4, 4, 9, 4, 9, 4, 9, 9, 4, 00542 1, 10, 1 00543 } ; 00544 00545 static yyconst flex_int16_t yy_base[337] = 00546 { 0, 00547 0, 0, 923, 0, 0, 1107, 898, 72, 74, 0, 00548 73, 0, 0, 904, 0, 0, 894, 71, 64, 79, 00549 85, 894, 0, 69, 890, 82, 148, 221, 61, 69, 00550 73, 0, 0, 81, 53, 75, 67, 93, 98, 84, 00551 139, 115, 120, 148, 140, 141, 149, 150, 0, 1107, 00552 0, 0, 0, 206, 0, 174, 289, 178, 1107, 179, 00553 910, 197, 903, 902, 353, 1107, 0, 894, 243, 1107, 00554 114, 115, 257, 266, 286, 0, 405, 293, 0, 0, 00555 0, 882, 100, 162, 176, 156, 190, 175, 222, 226, 00556 188, 213, 230, 233, 264, 189, 232, 237, 212, 227, 00557 00558 275, 290, 254, 238, 287, 256, 299, 289, 298, 295, 00559 294, 300, 1107, 326, 372, 442, 370, 905, 377, 0, 00560 1107, 898, 357, 479, 0, 368, 322, 0, 432, 349, 00561 386, 0, 229, 320, 102, 304, 365, 301, 350, 366, 00562 325, 373, 374, 385, 383, 878, 402, 386, 371, 437, 00563 381, 400, 382, 384, 419, 403, 420, 438, 439, 448, 00564 449, 450, 455, 452, 451, 508, 0, 532, 603, 477, 00565 528, 667, 500, 503, 540, 456, 498, 514, 473, 877, 00566 876, 497, 513, 875, 512, 489, 516, 525, 518, 874, 00567 534, 529, 536, 538, 530, 539, 537, 540, 542, 543, 00568 00569 541, 546, 864, 547, 545, 548, 544, 601, 716, 612, 00570 634, 578, 881, 607, 619, 862, 555, 457, 583, 848, 00571 847, 601, 843, 561, 589, 585, 602, 614, 616, 617, 00572 637, 638, 632, 841, 633, 639, 840, 651, 624, 647, 00573 640, 839, 654, 662, 663, 660, 838, 644, 680, 700, 00574 837, 835, 678, 686, 688, 652, 696, 697, 834, 832, 00575 706, 830, 829, 823, 698, 701, 683, 726, 713, 724, 00576 798, 723, 814, 729, 714, 809, 704, 808, 800, 731, 00577 799, 770, 764, 733, 871, 701, 0, 732, 734, 643, 00578 750, 575, 826, 828, 565, 583, 737, 309, 158, 848, 00579 00580 173, 783, 791, 0, 757, 775, 351, 1107, 834, 782, 00581 790, 1107, 787, 793, 774, 798, 56, 1107, 944, 953, 00582 963, 973, 983, 992, 1002, 1012, 1022, 1028, 1037, 1047, 00583 1051, 1059, 1067, 1076, 1086, 1096 00584 } ; 00585 00586 static yyconst flex_int16_t yy_def[337] = 00587 { 0, 00588 318, 1, 318, 319, 319, 318, 319, 320, 321, 319, 00589 322, 319, 319, 318, 319, 319, 319, 319, 319, 319, 00590 319, 319, 319, 319, 319, 319, 323, 323, 28, 28, 00591 28, 319, 319, 28, 28, 28, 28, 28, 28, 28, 00592 28, 28, 28, 28, 28, 28, 28, 28, 319, 318, 00593 319, 319, 319, 320, 319, 324, 319, 321, 318, 325, 00594 326, 321, 319, 318, 319, 318, 319, 319, 319, 318, 00595 327, 319, 319, 319, 319, 319, 319, 319, 319, 319, 00596 319, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00597 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00598 00599 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00600 28, 28, 318, 328, 320, 319, 325, 329, 321, 319, 00601 318, 319, 319, 319, 319, 319, 327, 330, 319, 319, 00602 319, 77, 28, 28, 28, 28, 28, 28, 28, 28, 00603 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00604 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00605 28, 28, 28, 28, 28, 324, 331, 320, 320, 321, 00606 319, 319, 319, 319, 319, 28, 28, 28, 28, 28, 00607 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00608 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00609 00610 28, 28, 28, 28, 28, 28, 28, 324, 324, 320, 00611 320, 321, 319, 319, 319, 28, 28, 28, 28, 28, 00612 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00613 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00614 28, 28, 28, 324, 324, 321, 28, 28, 28, 28, 00615 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00616 28, 28, 28, 28, 28, 28, 28, 321, 28, 28, 00617 332, 28, 28, 28, 28, 28, 28, 28, 28, 28, 00618 28, 321, 28, 28, 332, 319, 333, 28, 28, 28, 00619 28, 28, 321, 334, 28, 319, 28, 28, 28, 334, 00620 00621 335, 321, 336, 319, 28, 335, 318, 318, 321, 326, 00622 28, 318, 318, 326, 28, 28, 28, 0, 318, 318, 00623 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00624 318, 318, 318, 318, 318, 318 00625 } ; 00626 00627 static yyconst flex_int16_t yy_nxt[1181] = 00628 { 0, 00629 4, 5, 6, 5, 7, 8, 9, 10, 11, 12, 00630 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 00631 22, 23, 24, 25, 26, 4, 27, 27, 27, 27, 00632 27, 28, 27, 27, 29, 27, 27, 27, 30, 27, 00633 27, 31, 27, 27, 32, 4, 33, 27, 27, 27, 00634 34, 27, 35, 36, 27, 27, 37, 38, 39, 40, 00635 41, 42, 43, 44, 45, 46, 47, 48, 27, 27, 00636 49, 50, 51, 52, 52, 70, 59, 55, 60, 82, 00637 71, 52, 82, 56, 64, 61, 68, 82, 69, 69, 00638 69, 81, 53, 82, 72, 82, 73, 73, 74, 82, 00639 00640 72, 82, 78, 78, 78, 53, 81, 82, 84, 75, 00641 82, 86, 87, 91, 76, 75, 85, 57, 65, 82, 00642 79, 92, 77, 93, 82, 128, 82, 95, 82, 178, 00643 62, 75, 129, 129, 129, 133, 88, 75, 94, 89, 00644 96, 82, 90, 56, 64, 61, 82, 77, 52, 52, 00645 98, 52, 52, 52, 52, 52, 52, 52, 52, 97, 00646 52, 52, 52, 52, 52, 82, 82, 82, 52, 52, 00647 52, 52, 52, 52, 82, 82, 82, 100, 307, 113, 00648 59, 59, 82, 101, 82, 128, 102, 99, 82, 61, 00649 118, 134, 52, 52, 52, 104, 105, 307, 106, 59, 00650 00651 103, 82, 82, 136, 108, 107, 112, 52, 61, 110, 00652 109, 55, 135, 111, 82, 82, 82, 56, 52, 114, 00653 52, 52, 52, 138, 52, 52, 52, 52, 52, 52, 00654 52, 52, 137, 52, 52, 52, 52, 52, 82, 82, 00655 147, 52, 52, 52, 52, 52, 52, 83, 82, 61, 00656 118, 57, 82, 82, 141, 82, 82, 119, 82, 82, 00657 69, 69, 69, 82, 82, 52, 52, 52, 61, 176, 00658 139, 150, 72, 126, 73, 73, 74, 56, 142, 151, 00659 82, 72, 82, 74, 74, 74, 140, 75, 143, 144, 00660 82, 52, 148, 52, 54, 126, 75, 54, 130, 156, 00661 00662 130, 82, 149, 131, 131, 131, 115, 115, 72, 75, 00663 78, 78, 78, 82, 54, 82, 82, 158, 75, 155, 00664 82, 82, 145, 75, 82, 82, 82, 82, 79, 146, 00665 82, 152, 116, 128, 54, 82, 153, 54, 54, 154, 00666 179, 157, 54, 166, 166, 75, 82, 159, 177, 54, 00667 164, 82, 54, 312, 54, 161, 54, 116, 63, 163, 00668 162, 122, 160, 165, 181, 120, 131, 131, 131, 167, 00669 123, 123, 59, 52, 171, 171, 82, 55, 63, 59, 00670 173, 118, 173, 56, 184, 174, 174, 174, 61, 168, 00671 168, 82, 82, 128, 167, 180, 124, 82, 63, 82, 00672 00673 82, 63, 63, 131, 131, 131, 63, 82, 82, 82, 00674 82, 82, 82, 63, 182, 313, 63, 57, 63, 191, 00675 63, 124, 132, 132, 132, 185, 82, 170, 82, 82, 00676 183, 132, 132, 132, 132, 132, 132, 187, 186, 188, 00677 190, 118, 196, 56, 193, 82, 82, 195, 61, 129, 00678 129, 129, 189, 132, 132, 132, 132, 132, 132, 169, 00679 169, 169, 175, 82, 82, 82, 198, 194, 169, 169, 00680 169, 169, 169, 169, 82, 82, 82, 82, 82, 59, 00681 199, 82, 82, 82, 175, 197, 216, 248, 61, 192, 00682 169, 169, 169, 169, 169, 169, 172, 172, 172, 82, 00683 00684 219, 203, 204, 200, 201, 172, 172, 172, 172, 172, 00685 172, 205, 206, 113, 202, 82, 207, 174, 174, 174, 00686 174, 174, 174, 82, 82, 208, 208, 172, 172, 172, 00687 172, 172, 172, 52, 217, 212, 120, 55, 82, 82, 00688 82, 223, 82, 56, 82, 63, 63, 218, 61, 210, 00689 210, 82, 214, 114, 214, 82, 82, 215, 215, 215, 00690 82, 220, 82, 82, 82, 82, 82, 82, 82, 82, 00691 82, 82, 82, 82, 82, 222, 224, 57, 221, 226, 00692 59, 82, 231, 227, 229, 225, 230, 82, 304, 61, 00693 235, 82, 247, 228, 236, 232, 239, 238, 240, 241, 00694 00695 233, 82, 242, 56, 52, 234, 113, 237, 55, 82, 00696 243, 82, 251, 52, 56, 82, 249, 55, 244, 244, 00697 211, 211, 211, 56, 215, 215, 215, 82, 82, 211, 00698 211, 211, 211, 211, 211, 52, 215, 215, 215, 55, 00699 82, 252, 82, 82, 246, 56, 114, 253, 57, 61, 00700 82, 211, 211, 211, 211, 211, 211, 57, 82, 82, 00701 254, 250, 59, 82, 82, 82, 82, 113, 113, 82, 00702 82, 61, 269, 82, 56, 120, 255, 82, 82, 57, 00703 82, 256, 257, 56, 213, 213, 213, 258, 259, 264, 00704 262, 261, 260, 213, 213, 213, 213, 213, 213, 265, 00705 00706 266, 263, 267, 271, 82, 56, 82, 114, 114, 82, 00707 270, 268, 82, 275, 82, 213, 213, 213, 213, 213, 00708 213, 113, 82, 82, 82, 272, 82, 82, 59, 296, 00709 82, 61, 82, 245, 245, 245, 274, 61, 273, 82, 00710 82, 281, 245, 245, 245, 245, 245, 245, 276, 82, 00711 82, 279, 284, 280, 283, 82, 291, 82, 82, 82, 00712 82, 114, 277, 82, 245, 245, 245, 245, 245, 245, 00713 278, 293, 59, 293, 295, 294, 82, 290, 282, 289, 00714 307, 61, 292, 82, 308, 308, 298, 288, 297, 312, 00715 82, 305, 294, 301, 61, 308, 310, 61, 52, 307, 00716 00717 82, 299, 52, 286, 52, 52, 52, 52, 52, 287, 00718 52, 52, 52, 52, 52, 310, 82, 311, 52, 52, 00719 52, 52, 52, 52, 82, 82, 82, 293, 59, 293, 00720 301, 294, 316, 302, 82, 82, 308, 61, 315, 303, 00721 82, 61, 52, 52, 52, 61, 314, 309, 294, 82, 00722 301, 313, 302, 302, 61, 82, 82, 314, 82, 303, 00723 82, 82, 317, 82, 82, 82, 82, 82, 52, 82, 00724 52, 52, 302, 82, 82, 52, 52, 52, 52, 52, 00725 52, 52, 287, 52, 52, 52, 52, 52, 82, 120, 00726 82, 52, 52, 52, 52, 52, 52, 61, 309, 303, 00727 00728 82, 82, 82, 82, 82, 61, 120, 59, 82, 125, 00729 121, 120, 59, 53, 80, 52, 52, 52, 67, 303, 00730 66, 53, 318, 318, 318, 318, 318, 318, 318, 318, 00731 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00732 318, 52, 318, 52, 52, 52, 318, 52, 52, 318, 00733 52, 52, 52, 54, 54, 318, 54, 54, 54, 54, 00734 54, 54, 54, 58, 58, 58, 58, 58, 58, 58, 00735 58, 58, 58, 63, 63, 318, 63, 63, 63, 63, 00736 63, 63, 63, 82, 82, 318, 82, 82, 318, 82, 00737 82, 82, 56, 318, 318, 56, 56, 56, 56, 56, 00738 00739 56, 56, 117, 117, 117, 117, 117, 117, 117, 117, 00740 117, 117, 61, 61, 61, 61, 61, 61, 61, 61, 00741 61, 61, 127, 127, 318, 127, 127, 127, 127, 127, 00742 127, 127, 56, 318, 56, 318, 56, 118, 118, 118, 00743 118, 118, 118, 118, 118, 118, 118, 128, 128, 318, 00744 128, 128, 128, 128, 128, 128, 128, 209, 209, 285, 00745 285, 318, 285, 285, 285, 285, 285, 285, 287, 318, 00746 287, 318, 287, 287, 287, 287, 300, 300, 300, 300, 00747 300, 300, 300, 300, 300, 300, 306, 306, 306, 306, 00748 306, 306, 306, 306, 306, 306, 303, 303, 303, 303, 00749 00750 303, 303, 303, 303, 303, 303, 3, 318, 318, 318, 00751 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00752 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00753 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00754 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00755 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00756 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00757 318, 318, 318, 318, 318, 318, 318, 318, 318, 318 00758 } ; 00759 00760 static yyconst flex_int16_t yy_chk[1181] = 00761 { 0, 00762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00763 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00767 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00769 1, 1, 1, 8, 11, 19, 9, 8, 9, 35, 00770 19, 11, 317, 8, 11, 9, 18, 29, 18, 18, 00771 18, 24, 24, 37, 20, 30, 20, 20, 20, 31, 00772 00773 21, 36, 21, 21, 21, 26, 26, 34, 29, 20, 00774 40, 31, 31, 35, 20, 21, 30, 8, 11, 38, 00775 21, 35, 20, 36, 39, 71, 83, 37, 135, 135, 00776 9, 20, 72, 72, 72, 83, 34, 21, 36, 34, 00777 38, 42, 34, 8, 11, 9, 43, 20, 27, 27, 00778 40, 27, 27, 27, 27, 27, 27, 27, 27, 39, 00779 27, 27, 27, 27, 27, 41, 45, 46, 27, 27, 00780 27, 27, 27, 27, 44, 47, 48, 42, 301, 56, 00781 58, 60, 86, 43, 299, 71, 43, 41, 84, 58, 00782 60, 84, 27, 27, 27, 45, 45, 301, 45, 62, 00783 00784 44, 88, 85, 86, 46, 45, 48, 54, 62, 47, 00785 46, 54, 85, 47, 91, 96, 87, 54, 27, 56, 00786 27, 28, 28, 88, 28, 28, 28, 28, 28, 28, 00787 28, 28, 87, 28, 28, 28, 28, 28, 99, 92, 00788 96, 28, 28, 28, 28, 28, 28, 28, 89, 58, 00789 60, 54, 90, 100, 91, 133, 93, 62, 97, 94, 00790 69, 69, 69, 98, 104, 28, 28, 28, 62, 133, 00791 89, 99, 73, 69, 73, 73, 73, 54, 92, 100, 00792 103, 74, 106, 74, 74, 74, 90, 73, 93, 94, 00793 95, 28, 97, 28, 57, 69, 74, 57, 75, 104, 00794 00795 75, 101, 98, 75, 75, 75, 57, 57, 78, 73, 00796 78, 78, 78, 105, 57, 108, 102, 106, 74, 103, 00797 111, 110, 95, 78, 109, 107, 112, 138, 78, 95, 00798 136, 101, 57, 127, 57, 298, 101, 57, 57, 102, 00799 136, 105, 57, 114, 114, 78, 134, 107, 134, 57, 00800 111, 141, 57, 307, 57, 108, 57, 57, 65, 110, 00801 109, 65, 107, 112, 138, 123, 130, 130, 130, 114, 00802 65, 65, 117, 115, 123, 123, 139, 115, 65, 119, 00803 126, 117, 126, 115, 141, 126, 126, 126, 119, 115, 00804 115, 137, 140, 127, 114, 137, 65, 149, 65, 142, 00805 00806 143, 65, 65, 131, 131, 131, 65, 151, 153, 145, 00807 154, 144, 148, 65, 139, 307, 65, 115, 65, 149, 00808 65, 65, 77, 77, 77, 142, 152, 119, 147, 156, 00809 140, 77, 77, 77, 77, 77, 77, 144, 143, 145, 00810 148, 117, 154, 115, 151, 155, 157, 153, 119, 129, 00811 129, 129, 147, 77, 77, 77, 77, 77, 77, 116, 00812 116, 116, 129, 150, 158, 159, 156, 152, 116, 116, 00813 116, 116, 116, 116, 160, 161, 162, 165, 164, 170, 00814 157, 163, 176, 218, 129, 155, 176, 218, 170, 150, 00815 116, 116, 116, 116, 116, 116, 124, 124, 124, 179, 00816 00817 179, 161, 162, 158, 159, 124, 124, 124, 124, 124, 00818 124, 163, 164, 166, 160, 186, 165, 173, 173, 173, 00819 174, 174, 174, 182, 177, 166, 166, 124, 124, 124, 00820 124, 124, 124, 168, 177, 170, 171, 168, 185, 183, 00821 178, 186, 187, 168, 189, 171, 171, 178, 170, 168, 00822 168, 188, 175, 166, 175, 192, 195, 175, 175, 175, 00823 191, 182, 193, 197, 194, 196, 198, 201, 199, 200, 00824 207, 205, 202, 204, 206, 185, 187, 168, 183, 189, 00825 212, 217, 195, 191, 193, 188, 194, 224, 296, 212, 00826 199, 295, 217, 192, 199, 196, 202, 201, 204, 205, 00827 00828 197, 292, 206, 168, 169, 198, 208, 200, 169, 219, 00829 207, 226, 224, 210, 169, 225, 219, 210, 208, 208, 00830 169, 169, 169, 210, 214, 214, 214, 222, 227, 169, 00831 169, 169, 169, 169, 169, 211, 215, 215, 215, 211, 00832 228, 225, 229, 230, 212, 211, 208, 226, 169, 212, 00833 239, 169, 169, 169, 169, 169, 169, 210, 233, 235, 00834 227, 222, 246, 231, 232, 236, 241, 244, 245, 290, 00835 248, 246, 248, 240, 169, 172, 228, 238, 256, 211, 00836 243, 229, 230, 210, 172, 172, 172, 231, 232, 239, 00837 236, 235, 233, 172, 172, 172, 172, 172, 172, 240, 00838 00839 241, 238, 243, 250, 253, 211, 249, 244, 245, 267, 00840 249, 246, 254, 256, 255, 172, 172, 172, 172, 172, 00841 172, 209, 257, 258, 265, 253, 250, 266, 268, 286, 00842 277, 246, 261, 209, 209, 209, 255, 268, 254, 269, 00843 275, 267, 209, 209, 209, 209, 209, 209, 257, 272, 00844 270, 265, 270, 266, 269, 274, 277, 280, 288, 284, 00845 289, 209, 258, 297, 209, 209, 209, 209, 209, 209, 00846 261, 282, 282, 282, 284, 282, 291, 275, 268, 274, 00847 306, 282, 280, 305, 310, 302, 289, 272, 288, 313, 00848 283, 297, 282, 303, 302, 314, 303, 268, 271, 306, 00849 00850 315, 291, 271, 271, 271, 271, 271, 271, 271, 271, 00851 271, 271, 271, 271, 271, 303, 311, 305, 271, 271, 00852 271, 271, 271, 271, 316, 281, 279, 293, 293, 293, 00853 294, 293, 315, 294, 278, 276, 309, 293, 311, 294, 00854 273, 282, 271, 271, 271, 309, 310, 302, 293, 264, 00855 300, 313, 294, 300, 302, 263, 262, 314, 260, 300, 00856 259, 252, 316, 251, 247, 242, 237, 234, 271, 223, 00857 271, 285, 300, 221, 220, 285, 285, 285, 285, 285, 00858 285, 285, 285, 285, 285, 285, 285, 285, 216, 213, 00859 203, 285, 285, 285, 285, 285, 285, 293, 309, 294, 00860 00861 190, 184, 181, 180, 146, 309, 122, 118, 82, 68, 00862 64, 63, 61, 25, 22, 285, 285, 285, 17, 300, 00863 14, 7, 3, 0, 0, 0, 0, 0, 0, 0, 00864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00865 0, 285, 0, 285, 319, 319, 0, 319, 319, 0, 00866 319, 319, 319, 320, 320, 0, 320, 320, 320, 320, 00867 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 00868 321, 321, 321, 322, 322, 0, 322, 322, 322, 322, 00869 322, 322, 322, 323, 323, 0, 323, 323, 0, 323, 00870 323, 323, 324, 0, 0, 324, 324, 324, 324, 324, 00871 00872 324, 324, 325, 325, 325, 325, 325, 325, 325, 325, 00873 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, 00874 326, 326, 327, 327, 0, 327, 327, 327, 327, 327, 00875 327, 327, 328, 0, 328, 0, 328, 329, 329, 329, 00876 329, 329, 329, 329, 329, 329, 329, 330, 330, 0, 00877 330, 330, 330, 330, 330, 330, 330, 331, 331, 332, 00878 332, 0, 332, 332, 332, 332, 332, 332, 333, 0, 00879 333, 0, 333, 333, 333, 333, 334, 334, 334, 334, 00880 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, 00881 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, 00882 00883 336, 336, 336, 336, 336, 336, 318, 318, 318, 318, 00884 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00885 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00886 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00887 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00888 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00889 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 00890 318, 318, 318, 318, 318, 318, 318, 318, 318, 318 00891 } ; 00892 00893 extern int yy_flex_debug; 00894 int yy_flex_debug = 0; 00895 00896 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; 00897 static char *yy_full_match; 00898 static int yy_lp; 00899 #define REJECT \ 00900 { \ 00901 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ 00902 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ 00903 ++(yy_lp); \ 00904 goto find_rule; \ 00905 } 00906 00907 #define yymore() yymore_used_but_not_detected 00908 #define YY_MORE_ADJ 0 00909 #define YY_RESTORE_YY_MORE_OFFSET 00910 char *yytext; 00911 #line 1 "scanner.ll" 00912 #line 2 "scanner.ll" 00913 /***************************************************************** 00914 Copyright (c) 1999 Torben Weis <weis@kde.org> 00915 Copyright (c) 2000 Matthias Ettrich <ettrich@kde.org> 00916 00917 Permission is hereby granted, free of charge, to any person obtaining a copy 00918 of this software and associated documentation files (the "Software"), to deal 00919 in the Software without restriction, including without limitation the rights 00920 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00921 copies of the Software, and to permit persons to whom the Software is 00922 furnished to do so, subject to the following conditions: 00923 00924 The above copyright notice and this permission notice shall be included in 00925 all copies or substantial portions of the Software. 00926 00927 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00928 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00929 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00930 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 00931 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 00932 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00933 00934 ******************************************************************/ 00935 00936 #define YY_NO_UNPUT 00937 #include <stdlib.h> 00938 #include <ctype.h> 00939 00940 class TQString; 00941 00942 #ifndef KDE_USE_FINAL 00943 #include "yacc.cc.h" 00944 #endif 00945 00946 extern int idl_line_no; 00947 int comment_mode; 00948 int function_mode = 0; 00949 00950 #include <tqstring.h> 00951 #include <tqregexp.h> 00952 00953 static long ascii_to_longlong( long base, const char *s ) 00954 { 00955 long ll = 0; 00956 while( *s != '\0' ) { 00957 char c = *s++; 00958 if( c >= 'a' ) 00959 c -= 'a' - 'A'; 00960 c -= '0'; 00961 if( c > 9 ) 00962 c -= 'A' - '0' - 10; 00963 ll = ll * base + c; 00964 } 00965 return ll; 00966 } 00967 00968 static double ascii_to_longdouble (const char *s) 00969 { 00970 double d; 00971 #ifdef HAVE_SCANF_LF 00972 sscanf (s, "%Lf", &d); 00973 #else 00974 /* 00975 * this is only an approximation and will probably break fixed<> 00976 * parameter calculation on systems where 00977 * sizeof(double) < sizeof(long double). but fortunately all 00978 * systems where scanf("%Lf") is known to be broken (Linux/Alpha 00979 * and HPUX) have sizeof(double) == sizeof(long double). 00980 */ 00981 d = strtod (s, NULL); 00982 #endif 00983 return d; 00984 } 00985 00986 static char translate_char( const char *s ) 00987 { 00988 char c = *s++; 00989 00990 if( c != '\\' ) 00991 return c; 00992 c = *s++; 00993 switch( c ) { 00994 case 'n': 00995 return '\n'; 00996 case 't': 00997 return '\t'; 00998 case 'v': 00999 return '\v'; 01000 case 'b': 01001 return '\b'; 01002 case 'r': 01003 return '\r'; 01004 case 'f': 01005 return '\f'; 01006 case 'a': 01007 return '\a'; 01008 case '\\': 01009 return '\\'; 01010 case '?': 01011 return '\?'; 01012 case '\'': 01013 return '\''; 01014 case '"': 01015 return '"'; 01016 case 'x': 01017 case 'X': 01018 return (char) ascii_to_longlong( 16, s ); 01019 default: 01020 // Gotta be an octal 01021 return (char) ascii_to_longlong( 8, s ); 01022 } 01023 } 01024 01025 01026 /*--------------------------------------------------------------------------*/ 01027 /*--------------------------------------------------------------------------*/ 01028 /*--------------------------------------------------------------------------*/ 01029 #line 1030 "scanner.cc" 01030 01031 #define INITIAL 0 01032 01033 #ifndef YY_NO_UNISTD_H 01034 /* Special case for "unistd.h", since it is non-ANSI. We include it way 01035 * down here because we want the user's section 1 to have been scanned first. 01036 * The user has a chance to override it with an option. 01037 */ 01038 #include <unistd.h> 01039 #endif 01040 01041 #ifndef YY_EXTRA_TYPE 01042 #define YY_EXTRA_TYPE void * 01043 #endif 01044 01045 static int yy_init_globals (void ); 01046 01047 /* Accessor methods to globals. 01048 These are made visible to non-reentrant scanners for convenience. */ 01049 01050 int yylex_destroy (void ); 01051 01052 int yyget_debug (void ); 01053 01054 void yyset_debug (int debug_flag ); 01055 01056 YY_EXTRA_TYPE yyget_extra (void ); 01057 01058 void yyset_extra (YY_EXTRA_TYPE user_defined ); 01059 01060 FILE *yyget_in (void ); 01061 01062 void yyset_in (FILE * in_str ); 01063 01064 FILE *yyget_out (void ); 01065 01066 void yyset_out (FILE * out_str ); 01067 01068 int yyget_leng (void ); 01069 01070 char *yyget_text (void ); 01071 01072 int yyget_lineno (void ); 01073 01074 void yyset_lineno (int line_number ); 01075 01076 /* Macros after this point can all be overridden by user definitions in 01077 * section 1. 01078 */ 01079 01080 #ifndef YY_SKIP_YYWRAP 01081 #ifdef __cplusplus 01082 extern "C" int yywrap (void ); 01083 #else 01084 extern int yywrap (void ); 01085 #endif 01086 #endif 01087 01088 static void yyunput (int c,char *buf_ptr ); 01089 01090 #ifndef yytext_ptr 01091 static void yy_flex_strncpy (char *,yyconst char *,int ); 01092 #endif 01093 01094 #ifdef YY_NEED_STRLEN 01095 static int yy_flex_strlen (yyconst char * ); 01096 #endif 01097 01098 #ifndef YY_NO_INPUT 01099 01100 #ifdef __cplusplus 01101 static int yyinput (void ); 01102 #else 01103 static int input (void ); 01104 #endif 01105 01106 #endif 01107 01108 /* Amount of stuff to slurp up with each read. */ 01109 #ifndef YY_READ_BUF_SIZE 01110 #ifdef __ia64__ 01111 /* On IA-64, the buffer size is 16k, not 8k */ 01112 #define YY_READ_BUF_SIZE 16384 01113 #else 01114 #define YY_READ_BUF_SIZE 8192 01115 #endif /* __ia64__ */ 01116 #endif 01117 01118 /* Copy whatever the last rule matched to the standard output. */ 01119 #ifndef ECHO 01120 /* This used to be an fputs(), but since the string might contain NUL's, 01121 * we now use fwrite(). 01122 */ 01123 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) 01124 #endif 01125 01126 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 01127 * is returned in "result". 01128 */ 01129 #ifndef YY_INPUT 01130 #define YY_INPUT(buf,result,max_size) \ 01131 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 01132 { \ 01133 int c = '*'; \ 01134 size_t n; \ 01135 for ( n = 0; n < max_size && \ 01136 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 01137 buf[n] = (char) c; \ 01138 if ( c == '\n' ) \ 01139 buf[n++] = (char) c; \ 01140 if ( c == EOF && ferror( yyin ) ) \ 01141 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01142 result = n; \ 01143 } \ 01144 else \ 01145 { \ 01146 errno=0; \ 01147 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ 01148 { \ 01149 if( errno != EINTR) \ 01150 { \ 01151 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01152 break; \ 01153 } \ 01154 errno=0; \ 01155 clearerr(yyin); \ 01156 } \ 01157 }\ 01158 \ 01159 01160 #endif 01161 01162 /* No semi-colon after return; correct usage is to write "yyterminate();" - 01163 * we don't want an extra ';' after the "return" because that will cause 01164 * some compilers to complain about unreachable statements. 01165 */ 01166 #ifndef yyterminate 01167 #define yyterminate() return YY_NULL 01168 #endif 01169 01170 /* Number of entries by which start-condition stack grows. */ 01171 #ifndef YY_START_STACK_INCR 01172 #define YY_START_STACK_INCR 25 01173 #endif 01174 01175 /* Report a fatal error. */ 01176 #ifndef YY_FATAL_ERROR 01177 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 01178 #endif 01179 01180 /* end tables serialization structures and prototypes */ 01181 01182 /* Default declaration of generated scanner - a define so the user can 01183 * easily add parameters. 01184 */ 01185 #ifndef YY_DECL 01186 #define YY_DECL_IS_OURS 1 01187 01188 extern int yylex (void); 01189 01190 #define YY_DECL int yylex (void) 01191 #endif /* !YY_DECL */ 01192 01193 /* Code executed at the beginning of each rule, after yytext and yyleng 01194 * have been set up. 01195 */ 01196 #ifndef YY_USER_ACTION 01197 #define YY_USER_ACTION 01198 #endif 01199 01200 /* Code executed at the end of each rule. */ 01201 #ifndef YY_BREAK 01202 #define YY_BREAK break; 01203 #endif 01204 01205 #define YY_RULE_SETUP \ 01206 YY_USER_ACTION 01207 01210 YY_DECL 01211 { 01212 yy_state_type yy_current_state; 01213 char *yy_cp, *yy_bp; 01214 int yy_act; 01215 01216 #line 148 "scanner.ll" 01217 01218 01219 #line 1220 "scanner.cc" 01220 01221 if ( !(yy_init) ) 01222 { 01223 (yy_init) = 1; 01224 01225 #ifdef YY_USER_INIT 01226 YY_USER_INIT; 01227 #endif 01228 01229 /* Create the reject buffer large enough to save one state per allowed character. */ 01230 if ( ! (yy_state_buf) ) 01231 (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); 01232 if ( ! (yy_state_buf) ) 01233 YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); 01234 01235 if ( ! (yy_start) ) 01236 (yy_start) = 1; /* first start state */ 01237 01238 if ( ! yyin ) 01239 yyin = stdin; 01240 01241 if ( ! yyout ) 01242 yyout = stdout; 01243 01244 if ( ! YY_CURRENT_BUFFER ) { 01245 yyensure_buffer_stack (); 01246 YY_CURRENT_BUFFER_LVALUE = 01247 yy_create_buffer(yyin,YY_BUF_SIZE ); 01248 } 01249 01250 yy_load_buffer_state( ); 01251 } 01252 01253 while ( 1 ) /* loops until end-of-file is reached */ 01254 { 01255 yy_cp = (yy_c_buf_p); 01256 01257 /* Support of yytext. */ 01258 *yy_cp = (yy_hold_char); 01259 01260 /* yy_bp points to the position in yy_ch_buf of the start of 01261 * the current run. 01262 */ 01263 yy_bp = yy_cp; 01264 01265 yy_current_state = (yy_start); 01266 01267 (yy_state_ptr) = (yy_state_buf); 01268 *(yy_state_ptr)++ = yy_current_state; 01269 01270 yy_match: 01271 do 01272 { 01273 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 01274 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 01275 { 01276 yy_current_state = (int) yy_def[yy_current_state]; 01277 if ( yy_current_state >= 319 ) 01278 yy_c = yy_meta[(unsigned int) yy_c]; 01279 } 01280 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 01281 *(yy_state_ptr)++ = yy_current_state; 01282 ++yy_cp; 01283 } 01284 while ( yy_current_state != 318 ); 01285 01286 yy_find_action: 01287 yy_current_state = *--(yy_state_ptr); 01288 (yy_lp) = yy_accept[yy_current_state]; 01289 find_rule: /* we branch to this label when backing up */ 01290 for ( ; ; ) /* until we find what rule we matched */ 01291 { 01292 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) 01293 { 01294 yy_act = yy_acclist[(yy_lp)]; 01295 { 01296 (yy_full_match) = yy_cp; 01297 break; 01298 } 01299 } 01300 --yy_cp; 01301 yy_current_state = *--(yy_state_ptr); 01302 (yy_lp) = yy_accept[yy_current_state]; 01303 } 01304 01305 YY_DO_BEFORE_ACTION; 01306 01307 do_action: /* This label is used only to access EOF actions. */ 01308 01309 switch ( yy_act ) 01310 { /* beginning of action switch */ 01311 case 1: 01312 YY_RULE_SETUP 01313 #line 150 "scanner.ll" 01314 ; 01315 YY_BREAK 01316 case 2: 01317 /* rule 2 can match eol */ 01318 YY_RULE_SETUP 01319 #line 151 "scanner.ll" 01320 { idl_line_no++; } 01321 YY_BREAK 01322 case 3: 01323 YY_RULE_SETUP 01324 #line 153 "scanner.ll" 01325 { comment_mode = 1; } 01326 YY_BREAK 01327 case 4: 01328 YY_RULE_SETUP 01329 #line 154 "scanner.ll" 01330 { if (!comment_mode) { REJECT; } else { comment_mode = 0; } } 01331 YY_BREAK 01332 case 5: 01333 YY_RULE_SETUP 01334 #line 155 "scanner.ll" 01335 { 01336 if (! comment_mode) { 01337 if (!function_mode) { REJECT; } else { 01338 function_mode = 0; 01339 return T_RIGHT_CURLY_BRACKET; 01340 } 01341 } 01342 } 01343 YY_BREAK 01344 case 6: 01345 YY_RULE_SETUP 01346 #line 163 "scanner.ll" 01347 { if (!comment_mode && !function_mode) { REJECT; } } 01348 YY_BREAK 01349 case 7: 01350 YY_RULE_SETUP 01351 #line 164 "scanner.ll" 01352 { if (!comment_mode) { REJECT; } } 01353 YY_BREAK 01354 case 8: 01355 YY_RULE_SETUP 01356 #line 166 "scanner.ll" 01357 ; 01358 YY_BREAK 01359 case 9: 01360 YY_RULE_SETUP 01361 #line 167 "scanner.ll" 01362 { 01363 exit( 1 ); 01364 } 01365 YY_BREAK 01366 case 10: 01367 /* rule 10 can match eol */ 01368 YY_RULE_SETUP 01369 #line 170 "scanner.ll" 01370 { 01371 TQString s( yytext ); 01372 int i = s.find(TQRegExp("[\"<]"))+1; 01373 int j = s.find(TQRegExp("[\">]"), i); 01374 yylval._str = new TQString( s.mid( i, j - i ) ); 01375 idl_line_no++; 01376 return T_INCLUDE; 01377 } 01378 YY_BREAK 01379 case 11: 01380 /* rule 11 can match eol */ 01381 YY_RULE_SETUP 01382 #line 178 "scanner.ll" 01383 { 01384 idl_line_no++; 01385 } 01386 YY_BREAK 01387 case 12: 01388 YY_RULE_SETUP 01389 #line 181 "scanner.ll" 01390 return T_LEFT_CURLY_BRACKET; 01391 YY_BREAK 01392 case 13: 01393 YY_RULE_SETUP 01394 #line 182 "scanner.ll" 01395 return T_RIGHT_CURLY_BRACKET; 01396 YY_BREAK 01397 case 14: 01398 YY_RULE_SETUP 01399 #line 183 "scanner.ll" 01400 return T_LEFT_PARANTHESIS; 01401 YY_BREAK 01402 case 15: 01403 YY_RULE_SETUP 01404 #line 184 "scanner.ll" 01405 return T_RIGHT_PARANTHESIS; 01406 YY_BREAK 01407 case 16: 01408 YY_RULE_SETUP 01409 #line 185 "scanner.ll" 01410 return T_COLON; 01411 YY_BREAK 01412 case 17: 01413 YY_RULE_SETUP 01414 #line 186 "scanner.ll" 01415 return T_PLUS; 01416 YY_BREAK 01417 case 18: 01418 YY_RULE_SETUP 01419 #line 187 "scanner.ll" 01420 return T_MINUS; 01421 YY_BREAK 01422 case 19: 01423 YY_RULE_SETUP 01424 #line 188 "scanner.ll" 01425 return T_TILDE; 01426 YY_BREAK 01427 case 20: 01428 YY_RULE_SETUP 01429 #line 189 "scanner.ll" 01430 return T_COMMA; 01431 YY_BREAK 01432 case 21: 01433 YY_RULE_SETUP 01434 #line 190 "scanner.ll" 01435 return T_ASTERISK; 01436 YY_BREAK 01437 case 22: 01438 YY_RULE_SETUP 01439 #line 191 "scanner.ll" 01440 return T_SEMICOLON; 01441 YY_BREAK 01442 case 23: 01443 YY_RULE_SETUP 01444 #line 192 "scanner.ll" 01445 return T_AMPERSAND; 01446 YY_BREAK 01447 case 24: 01448 YY_RULE_SETUP 01449 #line 193 "scanner.ll" 01450 return T_LESS; 01451 YY_BREAK 01452 case 25: 01453 YY_RULE_SETUP 01454 #line 194 "scanner.ll" 01455 return T_GREATER; 01456 YY_BREAK 01457 case 26: 01458 YY_RULE_SETUP 01459 #line 195 "scanner.ll" 01460 return T_SCOPE; 01461 YY_BREAK 01462 case 27: 01463 YY_RULE_SETUP 01464 #line 196 "scanner.ll" 01465 return T_EQUAL; 01466 YY_BREAK 01467 case 28: 01468 YY_RULE_SETUP 01469 #line 197 "scanner.ll" 01470 return T_ACCESS; 01471 YY_BREAK 01472 case 29: 01473 YY_RULE_SETUP 01474 #line 198 "scanner.ll" 01475 return T_TRIPLE_DOT; 01476 YY_BREAK 01477 case 30: 01478 YY_RULE_SETUP 01479 #line 199 "scanner.ll" 01480 return T_ARRAY_OPEN; 01481 YY_BREAK 01482 case 31: 01483 YY_RULE_SETUP 01484 #line 200 "scanner.ll" 01485 return T_ARRAY_CLOSE; 01486 YY_BREAK 01487 case 32: 01488 YY_RULE_SETUP 01489 #line 201 "scanner.ll" 01490 return T_ACCESS; 01491 YY_BREAK 01492 case 33: 01493 YY_RULE_SETUP 01494 #line 202 "scanner.ll" 01495 return T_SHIFT; 01496 YY_BREAK 01497 case 34: 01498 YY_RULE_SETUP 01499 #line 203 "scanner.ll" 01500 return T_MISCOPERATOR; 01501 YY_BREAK 01502 case 35: 01503 YY_RULE_SETUP 01504 #line 206 "scanner.ll" 01505 return T_CONST; 01506 YY_BREAK 01507 case 36: 01508 YY_RULE_SETUP 01509 #line 207 "scanner.ll" 01510 return T_ENUM; 01511 YY_BREAK 01512 case 37: 01513 YY_RULE_SETUP 01514 #line 208 "scanner.ll" 01515 return T_NAMESPACE; 01516 YY_BREAK 01517 case 38: 01518 YY_RULE_SETUP 01519 #line 209 "scanner.ll" 01520 return T_USING; 01521 YY_BREAK 01522 case 39: 01523 YY_RULE_SETUP 01524 #line 210 "scanner.ll" 01525 return T_CLASS; 01526 YY_BREAK 01527 case 40: 01528 YY_RULE_SETUP 01529 #line 211 "scanner.ll" 01530 return T_STRUCT; 01531 YY_BREAK 01532 case 41: 01533 YY_RULE_SETUP 01534 #line 212 "scanner.ll" 01535 return T_FUNOPERATOR; 01536 YY_BREAK 01537 case 42: 01538 YY_RULE_SETUP 01539 #line 213 "scanner.ll" 01540 return T_VIRTUAL; 01541 YY_BREAK 01542 case 43: 01543 YY_RULE_SETUP 01544 #line 214 "scanner.ll" 01545 return T_PUBLIC; 01546 YY_BREAK 01547 case 44: 01548 YY_RULE_SETUP 01549 #line 215 "scanner.ll" 01550 return T_INLINE; 01551 YY_BREAK 01552 case 45: 01553 YY_RULE_SETUP 01554 #line 216 "scanner.ll" 01555 return T_STATIC; 01556 YY_BREAK 01557 case 46: 01558 YY_RULE_SETUP 01559 #line 217 "scanner.ll" 01560 return T_MUTABLE; 01561 YY_BREAK 01562 case 47: 01563 YY_RULE_SETUP 01564 #line 218 "scanner.ll" 01565 return T_SIGNED; 01566 YY_BREAK 01567 case 48: 01568 YY_RULE_SETUP 01569 #line 219 "scanner.ll" 01570 return T_UNSIGNED; 01571 YY_BREAK 01572 case 49: 01573 YY_RULE_SETUP 01574 #line 220 "scanner.ll" 01575 return T_SHORT; 01576 YY_BREAK 01577 case 50: 01578 YY_RULE_SETUP 01579 #line 221 "scanner.ll" 01580 return T_LONG; 01581 YY_BREAK 01582 case 51: 01583 YY_RULE_SETUP 01584 #line 222 "scanner.ll" 01585 return T_FRIEND; 01586 YY_BREAK 01587 case 52: 01588 YY_RULE_SETUP 01589 #line 223 "scanner.ll" 01590 return T_PROTECTED; 01591 YY_BREAK 01592 case 53: 01593 YY_RULE_SETUP 01594 #line 224 "scanner.ll" 01595 return T_PRIVATE; 01596 YY_BREAK 01597 case 54: 01598 YY_RULE_SETUP 01599 #line 225 "scanner.ll" 01600 return T_SIGNAL; 01601 YY_BREAK 01602 case 55: 01603 YY_RULE_SETUP 01604 #line 226 "scanner.ll" 01605 return T_RETURN; 01606 YY_BREAK 01607 case 56: 01608 YY_RULE_SETUP 01609 #line 227 "scanner.ll" 01610 return T_SLOT; 01611 YY_BREAK 01612 case 57: 01613 YY_RULE_SETUP 01614 #line 228 "scanner.ll" 01615 return T_TRUE; 01616 YY_BREAK 01617 case 58: 01618 YY_RULE_SETUP 01619 #line 229 "scanner.ll" 01620 return T_INT; 01621 YY_BREAK 01622 case 59: 01623 YY_RULE_SETUP 01624 #line 230 "scanner.ll" 01625 return T_CHAR; 01626 YY_BREAK 01627 case 60: 01628 YY_RULE_SETUP 01629 #line 231 "scanner.ll" 01630 return T_FALSE; 01631 YY_BREAK 01632 case 61: 01633 YY_RULE_SETUP 01634 #line 232 "scanner.ll" 01635 return T_TRUE; 01636 YY_BREAK 01637 case 62: 01638 YY_RULE_SETUP 01639 #line 233 "scanner.ll" 01640 return T_FALSE; 01641 YY_BREAK 01642 case 63: 01643 YY_RULE_SETUP 01644 #line 234 "scanner.ll" 01645 return T_DCOP_AREA; 01646 YY_BREAK 01647 case 64: 01648 YY_RULE_SETUP 01649 #line 235 "scanner.ll" 01650 return T_DCOP_SIGNAL_AREA; 01651 YY_BREAK 01652 case 65: 01653 YY_RULE_SETUP 01654 #line 236 "scanner.ll" 01655 return T_TYPEDEF; 01656 YY_BREAK 01657 case 66: 01658 YY_RULE_SETUP 01659 #line 237 "scanner.ll" 01660 return T_DCOP; 01661 YY_BREAK 01662 case 67: 01663 YY_RULE_SETUP 01664 #line 238 "scanner.ll" 01665 ; 01666 YY_BREAK 01667 case 68: 01668 YY_RULE_SETUP 01669 #line 239 "scanner.ll" 01670 ; 01671 YY_BREAK 01672 case 69: 01673 YY_RULE_SETUP 01674 #line 240 "scanner.ll" 01675 return T_NULL; 01676 YY_BREAK 01677 case 70: 01678 YY_RULE_SETUP 01679 #line 241 "scanner.ll" 01680 return T_EXTERN; 01681 YY_BREAK 01682 case 71: 01683 YY_RULE_SETUP 01684 #line 242 "scanner.ll" 01685 return T_EXTERN_C; 01686 YY_BREAK 01687 case 72: 01688 YY_RULE_SETUP 01689 #line 244 "scanner.ll" 01690 { 01691 yylval._str = new TQString( yytext ); 01692 return T_IDENTIFIER; 01693 } 01694 YY_BREAK 01695 case 73: 01696 #line 250 "scanner.ll" 01697 case 74: 01698 #line 251 "scanner.ll" 01699 case 75: 01700 #line 252 "scanner.ll" 01701 case 76: 01702 #line 253 "scanner.ll" 01703 case 77: 01704 YY_RULE_SETUP 01705 #line 253 "scanner.ll" 01706 { 01707 yylval._float = ascii_to_longdouble( yytext ); 01708 return T_DOUBLE_LITERAL; 01709 } 01710 YY_BREAK 01711 case 78: 01712 YY_RULE_SETUP 01713 #line 257 "scanner.ll" 01714 { 01715 yylval._int = ascii_to_longlong( 10, yytext ); 01716 return T_INTEGER_LITERAL; 01717 } 01718 YY_BREAK 01719 case 79: 01720 YY_RULE_SETUP 01721 #line 261 "scanner.ll" 01722 { 01723 yylval._int = ascii_to_longlong( 8, yytext ); 01724 return T_INTEGER_LITERAL; 01725 } 01726 YY_BREAK 01727 case 80: 01728 YY_RULE_SETUP 01729 #line 265 "scanner.ll" 01730 { 01731 yylval._int = ascii_to_longlong( 16, yytext + 2 ); 01732 return T_INTEGER_LITERAL; 01733 } 01734 YY_BREAK 01735 case 81: 01736 YY_RULE_SETUP 01737 #line 269 "scanner.ll" 01738 { 01739 TQCString s( yytext ); 01740 s = s.mid( 1, s.length() - 2 ); 01741 yylval._char = translate_char( s ); 01742 return T_CHARACTER_LITERAL; 01743 } 01744 YY_BREAK 01745 case 82: 01746 YY_RULE_SETUP 01747 #line 275 "scanner.ll" 01748 { 01749 TQString s( yytext ); 01750 yylval._str = new TQString( s.mid( 1, s.length() - 2 ) ); 01751 return T_STRING_LITERAL; 01752 } 01753 YY_BREAK 01754 case 83: 01755 YY_RULE_SETUP 01756 #line 280 "scanner.ll" 01757 { 01758 if (function_mode) 01759 return yylex(); // call once again 01760 01761 tqFatal("could not parse %c(%d) at line %d" , yytext[0], yytext[0], idl_line_no); 01762 return T_UNKNOWN; 01763 } 01764 YY_BREAK 01765 case 84: 01766 YY_RULE_SETUP 01767 #line 288 "scanner.ll" 01768 ECHO; 01769 YY_BREAK 01770 #line 1771 "scanner.cc" 01771 case YY_STATE_EOF(INITIAL): 01772 yyterminate(); 01773 01774 case YY_END_OF_BUFFER: 01775 { 01776 /* Amount of text matched not including the EOB char. */ 01777 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 01778 01779 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 01780 *yy_cp = (yy_hold_char); 01781 YY_RESTORE_YY_MORE_OFFSET 01782 01783 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 01784 { 01785 /* We're scanning a new file or input source. It's 01786 * possible that this happened because the user 01787 * just pointed yyin at a new source and called 01788 * yylex(). If so, then we have to assure 01789 * consistency between YY_CURRENT_BUFFER and our 01790 * globals. Here is the right place to do so, because 01791 * this is the first action (other than possibly a 01792 * back-up) that will match for the new input source. 01793 */ 01794 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 01795 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 01796 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 01797 } 01798 01799 /* Note that here we test for yy_c_buf_p "<=" to the position 01800 * of the first EOB in the buffer, since yy_c_buf_p will 01801 * already have been incremented past the NUL character 01802 * (since all states make transitions on EOB to the 01803 * end-of-buffer state). Contrast this with the test 01804 * in input(). 01805 */ 01806 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 01807 { /* This was really a NUL. */ 01808 yy_state_type yy_next_state; 01809 01810 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 01811 01812 yy_current_state = yy_get_previous_state( ); 01813 01814 /* Okay, we're now positioned to make the NUL 01815 * transition. We couldn't have 01816 * yy_get_previous_state() go ahead and do it 01817 * for us because it doesn't know how to deal 01818 * with the possibility of jamming (and we don't 01819 * want to build jamming into it because then it 01820 * will run more slowly). 01821 */ 01822 01823 yy_next_state = yy_try_NUL_trans( yy_current_state ); 01824 01825 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01826 01827 if ( yy_next_state ) 01828 { 01829 /* Consume the NUL. */ 01830 yy_cp = ++(yy_c_buf_p); 01831 yy_current_state = yy_next_state; 01832 goto yy_match; 01833 } 01834 01835 else 01836 { 01837 yy_cp = (yy_c_buf_p); 01838 goto yy_find_action; 01839 } 01840 } 01841 01842 else switch ( yy_get_next_buffer( ) ) 01843 { 01844 case EOB_ACT_END_OF_FILE: 01845 { 01846 (yy_did_buffer_switch_on_eof) = 0; 01847 01848 if ( yywrap( ) ) 01849 { 01850 /* Note: because we've taken care in 01851 * yy_get_next_buffer() to have set up 01852 * yytext, we can now set up 01853 * yy_c_buf_p so that if some total 01854 * hoser (like flex itself) wants to 01855 * call the scanner after we return the 01856 * YY_NULL, it'll still work - another 01857 * YY_NULL will get returned. 01858 */ 01859 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 01860 01861 yy_act = YY_STATE_EOF(YY_START); 01862 goto do_action; 01863 } 01864 01865 else 01866 { 01867 if ( ! (yy_did_buffer_switch_on_eof) ) 01868 YY_NEW_FILE; 01869 } 01870 break; 01871 } 01872 01873 case EOB_ACT_CONTINUE_SCAN: 01874 (yy_c_buf_p) = 01875 (yytext_ptr) + yy_amount_of_matched_text; 01876 01877 yy_current_state = yy_get_previous_state( ); 01878 01879 yy_cp = (yy_c_buf_p); 01880 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01881 goto yy_match; 01882 01883 case EOB_ACT_LAST_MATCH: 01884 (yy_c_buf_p) = 01885 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 01886 01887 yy_current_state = yy_get_previous_state( ); 01888 01889 yy_cp = (yy_c_buf_p); 01890 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01891 goto yy_find_action; 01892 } 01893 break; 01894 } 01895 01896 default: 01897 YY_FATAL_ERROR( 01898 "fatal flex scanner internal error--no action found" ); 01899 } /* end of action switch */ 01900 } /* end of scanning one token */ 01901 } /* end of yylex */ 01902 01903 /* yy_get_next_buffer - try to read in a new buffer 01904 * 01905 * Returns a code representing an action: 01906 * EOB_ACT_LAST_MATCH - 01907 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 01908 * EOB_ACT_END_OF_FILE - end of file 01909 */ 01910 static int yy_get_next_buffer (void) 01911 { 01912 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 01913 char *source = (yytext_ptr); 01914 int number_to_move, i; 01915 int ret_val; 01916 01917 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 01918 YY_FATAL_ERROR( 01919 "fatal flex scanner internal error--end of buffer missed" ); 01920 01921 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 01922 { /* Don't try to fill the buffer, so this is an EOF. */ 01923 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 01924 { 01925 /* We matched a single character, the EOB, so 01926 * treat this as a final EOF. 01927 */ 01928 return EOB_ACT_END_OF_FILE; 01929 } 01930 01931 else 01932 { 01933 /* We matched some text prior to the EOB, first 01934 * process it. 01935 */ 01936 return EOB_ACT_LAST_MATCH; 01937 } 01938 } 01939 01940 /* Try to read more data. */ 01941 01942 /* First move last chars to start of buffer. */ 01943 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 01944 01945 for ( i = 0; i < number_to_move; ++i ) 01946 *(dest++) = *(source++); 01947 01948 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 01949 /* don't do the read, it's not guaranteed to return an EOF, 01950 * just force an EOF 01951 */ 01952 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 01953 01954 else 01955 { 01956 int num_to_read = 01957 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 01958 01959 while ( num_to_read <= 0 ) 01960 { /* Not enough room in the buffer - grow it. */ 01961 01962 YY_FATAL_ERROR( 01963 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 01964 01965 } 01966 01967 if ( num_to_read > YY_READ_BUF_SIZE ) 01968 num_to_read = YY_READ_BUF_SIZE; 01969 01970 /* Read in more data. */ 01971 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 01972 (yy_n_chars), (size_t) num_to_read ); 01973 01974 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 01975 } 01976 01977 if ( (yy_n_chars) == 0 ) 01978 { 01979 if ( number_to_move == YY_MORE_ADJ ) 01980 { 01981 ret_val = EOB_ACT_END_OF_FILE; 01982 yyrestart(yyin ); 01983 } 01984 01985 else 01986 { 01987 ret_val = EOB_ACT_LAST_MATCH; 01988 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 01989 YY_BUFFER_EOF_PENDING; 01990 } 01991 } 01992 01993 else 01994 ret_val = EOB_ACT_CONTINUE_SCAN; 01995 01996 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 01997 /* Extend the array by 50%, plus the number we really need. */ 01998 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); 01999 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); 02000 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 02001 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 02002 } 02003 02004 (yy_n_chars) += number_to_move; 02005 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 02006 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 02007 02008 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 02009 02010 return ret_val; 02011 } 02012 02013 /* yy_get_previous_state - get the state just before the EOB char was reached */ 02014 02015 static yy_state_type yy_get_previous_state (void) 02016 { 02017 yy_state_type yy_current_state; 02018 char *yy_cp; 02019 02020 yy_current_state = (yy_start); 02021 02022 (yy_state_ptr) = (yy_state_buf); 02023 *(yy_state_ptr)++ = yy_current_state; 02024 02025 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 02026 { 02027 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 02028 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02029 { 02030 yy_current_state = (int) yy_def[yy_current_state]; 02031 if ( yy_current_state >= 319 ) 02032 yy_c = yy_meta[(unsigned int) yy_c]; 02033 } 02034 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02035 *(yy_state_ptr)++ = yy_current_state; 02036 } 02037 02038 return yy_current_state; 02039 } 02040 02041 /* yy_try_NUL_trans - try to make a transition on the NUL character 02042 * 02043 * synopsis 02044 * next_state = yy_try_NUL_trans( current_state ); 02045 */ 02046 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 02047 { 02048 int yy_is_jam; 02049 02050 YY_CHAR yy_c = 1; 02051 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02052 { 02053 yy_current_state = (int) yy_def[yy_current_state]; 02054 if ( yy_current_state >= 319 ) 02055 yy_c = yy_meta[(unsigned int) yy_c]; 02056 } 02057 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02058 yy_is_jam = (yy_current_state == 318); 02059 if ( ! yy_is_jam ) 02060 *(yy_state_ptr)++ = yy_current_state; 02061 02062 return yy_is_jam ? 0 : yy_current_state; 02063 } 02064 02065 static void yyunput (int c, char * yy_bp ) 02066 { 02067 char *yy_cp; 02068 02069 yy_cp = (yy_c_buf_p); 02070 02071 /* undo effects of setting up yytext */ 02072 *yy_cp = (yy_hold_char); 02073 02074 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02075 { /* need to shift things up to make room */ 02076 /* +2 for EOB chars. */ 02077 int number_to_move = (yy_n_chars) + 2; 02078 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 02079 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 02080 char *source = 02081 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 02082 02083 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 02084 *--dest = *--source; 02085 02086 yy_cp += (int) (dest - source); 02087 yy_bp += (int) (dest - source); 02088 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 02089 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 02090 02091 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02092 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 02093 } 02094 02095 *--yy_cp = (char) c; 02096 02097 (yytext_ptr) = yy_bp; 02098 (yy_hold_char) = *yy_cp; 02099 (yy_c_buf_p) = yy_cp; 02100 } 02101 02102 #ifndef YY_NO_INPUT 02103 #ifdef __cplusplus 02104 static int yyinput (void) 02105 #else 02106 static int input (void) 02107 #endif 02108 02109 { 02110 int c; 02111 02112 *(yy_c_buf_p) = (yy_hold_char); 02113 02114 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 02115 { 02116 /* yy_c_buf_p now points to the character we want to return. 02117 * If this occurs *before* the EOB characters, then it's a 02118 * valid NUL; if not, then we've hit the end of the buffer. 02119 */ 02120 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 02121 /* This was really a NUL. */ 02122 *(yy_c_buf_p) = '\0'; 02123 02124 else 02125 { /* need more input */ 02126 int offset = (yy_c_buf_p) - (yytext_ptr); 02127 ++(yy_c_buf_p); 02128 02129 switch ( yy_get_next_buffer( ) ) 02130 { 02131 case EOB_ACT_LAST_MATCH: 02132 /* This happens because yy_g_n_b() 02133 * sees that we've accumulated a 02134 * token and flags that we need to 02135 * try matching the token before 02136 * proceeding. But for input(), 02137 * there's no matching to consider. 02138 * So convert the EOB_ACT_LAST_MATCH 02139 * to EOB_ACT_END_OF_FILE. 02140 */ 02141 02142 /* Reset buffer status. */ 02143 yyrestart(yyin ); 02144 02145 /*FALLTHROUGH*/ 02146 02147 case EOB_ACT_END_OF_FILE: 02148 { 02149 if ( yywrap( ) ) 02150 return EOF; 02151 02152 if ( ! (yy_did_buffer_switch_on_eof) ) 02153 YY_NEW_FILE; 02154 #ifdef __cplusplus 02155 return yyinput(); 02156 #else 02157 return input(); 02158 #endif 02159 } 02160 02161 case EOB_ACT_CONTINUE_SCAN: 02162 (yy_c_buf_p) = (yytext_ptr) + offset; 02163 break; 02164 } 02165 } 02166 } 02167 02168 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 02169 *(yy_c_buf_p) = '\0'; /* preserve yytext */ 02170 (yy_hold_char) = *++(yy_c_buf_p); 02171 02172 return c; 02173 } 02174 #endif /* ifndef YY_NO_INPUT */ 02175 02181 void yyrestart (FILE * input_file ) 02182 { 02183 02184 if ( ! YY_CURRENT_BUFFER ){ 02185 yyensure_buffer_stack (); 02186 YY_CURRENT_BUFFER_LVALUE = 02187 yy_create_buffer(yyin,YY_BUF_SIZE ); 02188 } 02189 02190 yy_init_buffer(YY_CURRENT_BUFFER,input_file ); 02191 yy_load_buffer_state( ); 02192 } 02193 02198 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 02199 { 02200 02201 /* TODO. We should be able to replace this entire function body 02202 * with 02203 * yypop_buffer_state(); 02204 * yypush_buffer_state(new_buffer); 02205 */ 02206 yyensure_buffer_stack (); 02207 if ( YY_CURRENT_BUFFER == new_buffer ) 02208 return; 02209 02210 if ( YY_CURRENT_BUFFER ) 02211 { 02212 /* Flush out information for old buffer. */ 02213 *(yy_c_buf_p) = (yy_hold_char); 02214 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02215 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02216 } 02217 02218 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02219 yy_load_buffer_state( ); 02220 02221 /* We don't actually know whether we did this switch during 02222 * EOF (yywrap()) processing, but the only time this flag 02223 * is looked at is after yywrap() is called, so it's safe 02224 * to go ahead and always set it. 02225 */ 02226 (yy_did_buffer_switch_on_eof) = 1; 02227 } 02228 02229 static void yy_load_buffer_state (void) 02230 { 02231 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 02232 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 02233 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 02234 (yy_hold_char) = *(yy_c_buf_p); 02235 } 02236 02243 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) 02244 { 02245 YY_BUFFER_STATE b; 02246 02247 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 02248 if ( ! b ) 02249 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 02250 02251 b->yy_buf_size = size; 02252 02253 /* yy_ch_buf has to be 2 characters longer than the size given because 02254 * we need to put in 2 end-of-buffer characters. 02255 */ 02256 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); 02257 if ( ! b->yy_ch_buf ) 02258 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 02259 02260 b->yy_is_our_buffer = 1; 02261 02262 yy_init_buffer(b,file ); 02263 02264 return b; 02265 } 02266 02271 void yy_delete_buffer (YY_BUFFER_STATE b ) 02272 { 02273 02274 if ( ! b ) 02275 return; 02276 02277 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 02278 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 02279 02280 if ( b->yy_is_our_buffer ) 02281 yyfree((void *) b->yy_ch_buf ); 02282 02283 yyfree((void *) b ); 02284 } 02285 02286 /* Initializes or reinitializes a buffer. 02287 * This function is sometimes called more than once on the same buffer, 02288 * such as during a yyrestart() or at EOF. 02289 */ 02290 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) 02291 02292 { 02293 int oerrno = errno; 02294 02295 yy_flush_buffer(b ); 02296 02297 b->yy_input_file = file; 02298 b->yy_fill_buffer = 1; 02299 02300 /* If b is the current buffer, then yy_init_buffer was _probably_ 02301 * called from yyrestart() or through yy_get_next_buffer. 02302 * In that case, we don't want to reset the lineno or column. 02303 */ 02304 if (b != YY_CURRENT_BUFFER){ 02305 b->yy_bs_lineno = 1; 02306 b->yy_bs_column = 0; 02307 } 02308 02309 b->yy_is_interactive = 0; 02310 02311 errno = oerrno; 02312 } 02313 02318 void yy_flush_buffer (YY_BUFFER_STATE b ) 02319 { 02320 if ( ! b ) 02321 return; 02322 02323 b->yy_n_chars = 0; 02324 02325 /* We always need two end-of-buffer characters. The first causes 02326 * a transition to the end-of-buffer state. The second causes 02327 * a jam in that state. 02328 */ 02329 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 02330 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 02331 02332 b->yy_buf_pos = &b->yy_ch_buf[0]; 02333 02334 b->yy_at_bol = 1; 02335 b->yy_buffer_status = YY_BUFFER_NEW; 02336 02337 if ( b == YY_CURRENT_BUFFER ) 02338 yy_load_buffer_state( ); 02339 } 02340 02347 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) 02348 { 02349 if (new_buffer == NULL) 02350 return; 02351 02352 yyensure_buffer_stack(); 02353 02354 /* This block is copied from yy_switch_to_buffer. */ 02355 if ( YY_CURRENT_BUFFER ) 02356 { 02357 /* Flush out information for old buffer. */ 02358 *(yy_c_buf_p) = (yy_hold_char); 02359 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02360 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02361 } 02362 02363 /* Only push if top exists. Otherwise, replace top. */ 02364 if (YY_CURRENT_BUFFER) 02365 (yy_buffer_stack_top)++; 02366 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02367 02368 /* copied from yy_switch_to_buffer. */ 02369 yy_load_buffer_state( ); 02370 (yy_did_buffer_switch_on_eof) = 1; 02371 } 02372 02377 void yypop_buffer_state (void) 02378 { 02379 if (!YY_CURRENT_BUFFER) 02380 return; 02381 02382 yy_delete_buffer(YY_CURRENT_BUFFER ); 02383 YY_CURRENT_BUFFER_LVALUE = NULL; 02384 if ((yy_buffer_stack_top) > 0) 02385 --(yy_buffer_stack_top); 02386 02387 if (YY_CURRENT_BUFFER) { 02388 yy_load_buffer_state( ); 02389 (yy_did_buffer_switch_on_eof) = 1; 02390 } 02391 } 02392 02393 /* Allocates the stack if it does not exist. 02394 * Guarantees space for at least one push. 02395 */ 02396 static void yyensure_buffer_stack (void) 02397 { 02398 int num_to_alloc; 02399 02400 if (!(yy_buffer_stack)) { 02401 02402 /* First allocation is just for 2 elements, since we don't know if this 02403 * scanner will even need a stack. We use 2 instead of 1 to avoid an 02404 * immediate realloc on the next call. 02405 */ 02406 num_to_alloc = 1; 02407 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc 02408 (num_to_alloc * sizeof(struct yy_buffer_state*) 02409 ); 02410 if ( ! (yy_buffer_stack) ) 02411 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 02412 02413 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 02414 02415 (yy_buffer_stack_max) = num_to_alloc; 02416 (yy_buffer_stack_top) = 0; 02417 return; 02418 } 02419 02420 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 02421 02422 /* Increase the buffer to prepare for a possible push. */ 02423 int grow_size = 8 /* arbitrary grow size */; 02424 02425 num_to_alloc = (yy_buffer_stack_max) + grow_size; 02426 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc 02427 ((yy_buffer_stack), 02428 num_to_alloc * sizeof(struct yy_buffer_state*) 02429 ); 02430 if ( ! (yy_buffer_stack) ) 02431 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 02432 02433 /* zero only the new slots.*/ 02434 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 02435 (yy_buffer_stack_max) = num_to_alloc; 02436 } 02437 } 02438 02445 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 02446 { 02447 YY_BUFFER_STATE b; 02448 02449 if ( size < 2 || 02450 base[size-2] != YY_END_OF_BUFFER_CHAR || 02451 base[size-1] != YY_END_OF_BUFFER_CHAR ) 02452 /* They forgot to leave room for the EOB's. */ 02453 return 0; 02454 02455 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 02456 if ( ! b ) 02457 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 02458 02459 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 02460 b->yy_buf_pos = b->yy_ch_buf = base; 02461 b->yy_is_our_buffer = 0; 02462 b->yy_input_file = 0; 02463 b->yy_n_chars = b->yy_buf_size; 02464 b->yy_is_interactive = 0; 02465 b->yy_at_bol = 1; 02466 b->yy_fill_buffer = 0; 02467 b->yy_buffer_status = YY_BUFFER_NEW; 02468 02469 yy_switch_to_buffer(b ); 02470 02471 return b; 02472 } 02473 02482 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) 02483 { 02484 02485 return yy_scan_bytes(yystr,strlen(yystr) ); 02486 } 02487 02495 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 02496 { 02497 YY_BUFFER_STATE b; 02498 char *buf; 02499 yy_size_t n; 02500 int i; 02501 02502 /* Get memory for full buffer, including space for trailing EOB's. */ 02503 n = _yybytes_len + 2; 02504 buf = (char *) yyalloc(n ); 02505 if ( ! buf ) 02506 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 02507 02508 for ( i = 0; i < _yybytes_len; ++i ) 02509 buf[i] = yybytes[i]; 02510 02511 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 02512 02513 b = yy_scan_buffer(buf,n ); 02514 if ( ! b ) 02515 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 02516 02517 /* It's okay to grow etc. this buffer, and we should throw it 02518 * away when we're done. 02519 */ 02520 b->yy_is_our_buffer = 1; 02521 02522 return b; 02523 } 02524 02525 #ifndef YY_EXIT_FAILURE 02526 #define YY_EXIT_FAILURE 2 02527 #endif 02528 02529 static void yy_fatal_error (yyconst char* msg ) 02530 { 02531 (void) fprintf( stderr, "[dcopidl-scanner] %s\n", msg ); 02532 exit( YY_EXIT_FAILURE ); 02533 } 02534 02535 /* Redefine yyless() so it works in section 3 code. */ 02536 02537 #undef yyless 02538 #define yyless(n) \ 02539 do \ 02540 { \ 02541 /* Undo effects of setting up yytext. */ \ 02542 int yyless_macro_arg = (n); \ 02543 YY_LESS_LINENO(yyless_macro_arg);\ 02544 yytext[yyleng] = (yy_hold_char); \ 02545 (yy_c_buf_p) = yytext + yyless_macro_arg; \ 02546 (yy_hold_char) = *(yy_c_buf_p); \ 02547 *(yy_c_buf_p) = '\0'; \ 02548 yyleng = yyless_macro_arg; \ 02549 } \ 02550 while ( 0 ) 02551 02552 /* Accessor methods (get/set functions) to struct members. */ 02553 02557 int yyget_lineno (void) 02558 { 02559 02560 return yylineno; 02561 } 02562 02566 FILE *yyget_in (void) 02567 { 02568 return yyin; 02569 } 02570 02574 FILE *yyget_out (void) 02575 { 02576 return yyout; 02577 } 02578 02582 int yyget_leng (void) 02583 { 02584 return yyleng; 02585 } 02586 02591 char *yyget_text (void) 02592 { 02593 return yytext; 02594 } 02595 02600 void yyset_lineno (int line_number ) 02601 { 02602 02603 yylineno = line_number; 02604 } 02605 02612 void yyset_in (FILE * in_str ) 02613 { 02614 yyin = in_str ; 02615 } 02616 02617 void yyset_out (FILE * out_str ) 02618 { 02619 yyout = out_str ; 02620 } 02621 02622 int yyget_debug (void) 02623 { 02624 return yy_flex_debug; 02625 } 02626 02627 void yyset_debug (int bdebug ) 02628 { 02629 yy_flex_debug = bdebug ; 02630 } 02631 02632 static int yy_init_globals (void) 02633 { 02634 /* Initialization is the same as for the non-reentrant scanner. 02635 * This function is called from yylex_destroy(), so don't allocate here. 02636 */ 02637 02638 (yy_buffer_stack) = 0; 02639 (yy_buffer_stack_top) = 0; 02640 (yy_buffer_stack_max) = 0; 02641 (yy_c_buf_p) = (char *) 0; 02642 (yy_init) = 0; 02643 (yy_start) = 0; 02644 02645 (yy_state_buf) = 0; 02646 (yy_state_ptr) = 0; 02647 (yy_full_match) = 0; 02648 (yy_lp) = 0; 02649 02650 /* Defined in main.c */ 02651 #ifdef YY_STDINIT 02652 yyin = stdin; 02653 yyout = stdout; 02654 #else 02655 yyin = (FILE *) 0; 02656 yyout = (FILE *) 0; 02657 #endif 02658 02659 /* For future reference: Set errno on error, since we are called by 02660 * yylex_init() 02661 */ 02662 return 0; 02663 } 02664 02665 /* yylex_destroy is for both reentrant and non-reentrant scanners. */ 02666 int yylex_destroy (void) 02667 { 02668 02669 /* Pop the buffer stack, destroying each element. */ 02670 while(YY_CURRENT_BUFFER){ 02671 yy_delete_buffer(YY_CURRENT_BUFFER ); 02672 YY_CURRENT_BUFFER_LVALUE = NULL; 02673 yypop_buffer_state(); 02674 } 02675 02676 /* Destroy the stack itself. */ 02677 yyfree((yy_buffer_stack) ); 02678 (yy_buffer_stack) = NULL; 02679 02680 yyfree ( (yy_state_buf) ); 02681 (yy_state_buf) = NULL; 02682 02683 /* Reset the globals. This is important in a non-reentrant scanner so the next time 02684 * yylex() is called, initialization will occur. */ 02685 yy_init_globals( ); 02686 02687 return 0; 02688 } 02689 02690 /* 02691 * Internal utility routines. 02692 */ 02693 02694 #ifndef yytext_ptr 02695 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 02696 { 02697 int i; 02698 for ( i = 0; i < n; ++i ) 02699 s1[i] = s2[i]; 02700 } 02701 #endif 02702 02703 #ifdef YY_NEED_STRLEN 02704 static int yy_flex_strlen (yyconst char * s ) 02705 { 02706 int n; 02707 for ( n = 0; s[n]; ++n ) 02708 ; 02709 02710 return n; 02711 } 02712 #endif 02713 02714 void *yyalloc (yy_size_t size ) 02715 { 02716 return (void *) malloc( size ); 02717 } 02718 02719 void *yyrealloc (void * ptr, yy_size_t size ) 02720 { 02721 /* The cast to (char *) in the following accommodates both 02722 * implementations that use char* generic pointers, and those 02723 * that use void* generic pointers. It works with the latter 02724 * because both ANSI C and C++ allow castless assignment from 02725 * any pointer type to void*, and deal with argument conversions 02726 * as though doing an assignment. 02727 */ 02728 return (void *) realloc( (char *) ptr, size ); 02729 } 02730 02731 void yyfree (void * ptr ) 02732 { 02733 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ 02734 } 02735 02736 #define YYTABLES_NAME "yytables" 02737 02738 #line 288 "scanner.ll" 02739 02740 02741 02742 void dcopidlInitFlex( const char *_code ) 02743 { 02744 comment_mode = 0; 02745 yy_switch_to_buffer(yy_scan_string(_code ) ); 02746 } 02747