dcop Library API Documentation

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