00001 00002 #line 3 "<stdout>" 00003 00004 #define YY_INT_ALIGNED short int 00005 00006 /* A lexical scanner generated by flex */ 00007 00008 #define FLEX_SCANNER 00009 #define YY_FLEX_MAJOR_VERSION 2 00010 #define YY_FLEX_MINOR_VERSION 5 00011 #define YY_FLEX_SUBMINOR_VERSION 33 00012 #if YY_FLEX_SUBMINOR_VERSION > 0 00013 #define FLEX_BETA 00014 #endif 00015 00016 /* First, we deal with platform-specific or compiler-specific issues. */ 00017 00018 /* begin standard C headers. */ 00019 #include <stdio.h> 00020 #include <string.h> 00021 #include <errno.h> 00022 #include <stdlib.h> 00023 00024 /* end standard C headers. */ 00025 00026 /* flex integer type definitions */ 00027 00028 #ifndef FLEXINT_H 00029 #define FLEXINT_H 00030 00031 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 00032 00033 #if __STDC_VERSION__ >= 199901L 00034 00035 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 00036 * if you want the limit (max/min) macros for int types. 00037 */ 00038 #ifndef __STDC_LIMIT_MACROS 00039 #define __STDC_LIMIT_MACROS 1 00040 #endif 00041 00042 #include <inttypes.h> 00043 typedef int8_t flex_int8_t; 00044 typedef uint8_t flex_uint8_t; 00045 typedef int16_t flex_int16_t; 00046 typedef uint16_t flex_uint16_t; 00047 typedef int32_t flex_int32_t; 00048 typedef uint32_t flex_uint32_t; 00049 #else 00050 typedef signed char flex_int8_t; 00051 typedef short int flex_int16_t; 00052 typedef int flex_int32_t; 00053 typedef unsigned char flex_uint8_t; 00054 typedef unsigned short int flex_uint16_t; 00055 typedef unsigned int flex_uint32_t; 00056 #endif /* ! C99 */ 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 /* ! FLEXINT_H */ 00088 00089 #ifdef __cplusplus 00090 00091 /* The "const" storage-class-modifier is valid. */ 00092 #define YY_USE_CONST 00093 00094 #else /* ! __cplusplus */ 00095 00096 #if __STDC__ 00097 00098 #define YY_USE_CONST 00099 00100 #endif /* __STDC__ */ 00101 #endif /* ! __cplusplus */ 00102 00103 #ifdef YY_USE_CONST 00104 #define yyconst const 00105 #else 00106 #define yyconst 00107 #endif 00108 00109 /* Returned upon end-of-file. */ 00110 #define YY_NULL 0 00111 00112 /* Promotes a possibly negative, possibly signed char to an unsigned 00113 * integer for use as an array index. If the signed char is negative, 00114 * we want to instead treat it as an 8-bit unsigned char, hence the 00115 * double cast. 00116 */ 00117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 00118 00119 /* Enter a start condition. This macro really ought to take a parameter, 00120 * but we do it the disgusting crufty way forced on us by the ()-less 00121 * definition of BEGIN. 00122 */ 00123 #define BEGIN (yy_start) = 1 + 2 * 00124 00125 /* Translate the current start state into a value that can be later handed 00126 * to BEGIN to return to the state. The YYSTATE alias is for lex 00127 * compatibility. 00128 */ 00129 #define YY_START (((yy_start) - 1) / 2) 00130 #define YYSTATE YY_START 00131 00132 /* Action number for EOF rule of a given start state. */ 00133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 00134 00135 /* Special action meaning "start processing a new file". */ 00136 #define YY_NEW_FILE fcodeYYrestart(fcodeYYin ) 00137 00138 #define YY_END_OF_BUFFER_CHAR 0 00139 00140 /* Size of default input buffer. */ 00141 #ifndef YY_BUF_SIZE 00142 #define YY_BUF_SIZE 262144 00143 #endif 00144 00145 /* The state buf must be large enough to hold one state per character in the main buffer. 00146 */ 00147 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 00148 00149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE 00150 #define YY_TYPEDEF_YY_BUFFER_STATE 00151 typedef struct yy_buffer_state *YY_BUFFER_STATE; 00152 #endif 00153 00154 extern int fcodeYYleng; 00155 00156 extern FILE *fcodeYYin, *fcodeYYout; 00157 00158 #define EOB_ACT_CONTINUE_SCAN 0 00159 #define EOB_ACT_END_OF_FILE 1 00160 #define EOB_ACT_LAST_MATCH 2 00161 00162 #define YY_LESS_LINENO(n) 00163 00164 /* Return all but the first "n" matched characters back to the input stream. */ 00165 #define yyless(n) \ 00166 do \ 00167 { \ 00168 /* Undo effects of setting up fcodeYYtext. */ \ 00169 int yyless_macro_arg = (n); \ 00170 YY_LESS_LINENO(yyless_macro_arg);\ 00171 *yy_cp = (yy_hold_char); \ 00172 YY_RESTORE_YY_MORE_OFFSET \ 00173 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 00174 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ \ 00175 } \ 00176 while ( 0 ) 00177 00178 #define unput(c) yyunput( c, (yytext_ptr) ) 00179 00180 /* The following is because we cannot portably get our hands on size_t 00181 * (without autoconf's help, which isn't available because we want 00182 * flex-generated scanners to compile on their own). 00183 */ 00184 00185 #ifndef YY_TYPEDEF_YY_SIZE_T 00186 #define YY_TYPEDEF_YY_SIZE_T 00187 typedef unsigned int yy_size_t; 00188 #endif 00189 00190 #ifndef YY_STRUCT_YY_BUFFER_STATE 00191 #define YY_STRUCT_YY_BUFFER_STATE 00192 struct yy_buffer_state 00193 { 00194 FILE *yy_input_file; 00195 00196 char *yy_ch_buf; /* input buffer */ 00197 char *yy_buf_pos; /* current position in input buffer */ 00198 00199 /* Size of input buffer in bytes, not including room for EOB 00200 * characters. 00201 */ 00202 yy_size_t yy_buf_size; 00203 00204 /* Number of characters read into yy_ch_buf, not including EOB 00205 * characters. 00206 */ 00207 int yy_n_chars; 00208 00209 /* Whether we "own" the buffer - i.e., we know we created it, 00210 * and can realloc() it to grow it, and should free() it to 00211 * delete it. 00212 */ 00213 int yy_is_our_buffer; 00214 00215 /* Whether this is an "interactive" input source; if so, and 00216 * if we're using stdio for input, then we want to use getc() 00217 * instead of fread(), to make sure we stop fetching input after 00218 * each newline. 00219 */ 00220 int yy_is_interactive; 00221 00222 /* Whether we're considered to be at the beginning of a line. 00223 * If so, '^' rules will be active on the next match, otherwise 00224 * not. 00225 */ 00226 int yy_at_bol; 00227 00228 int yy_bs_lineno; 00229 int yy_bs_column; 00231 /* Whether to try to fill the input buffer when we reach the 00232 * end of it. 00233 */ 00234 int yy_fill_buffer; 00235 00236 int yy_buffer_status; 00237 00238 #define YY_BUFFER_NEW 0 00239 #define YY_BUFFER_NORMAL 1 00240 /* When an EOF's been seen but there's still some text to process 00241 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 00242 * shouldn't try reading from the input source any more. We might 00243 * still have a bunch of tokens to match, though, because of 00244 * possible backing-up. 00245 * 00246 * When we actually see the EOF, we change the status to "new" 00247 * (via fcodeYYrestart()), so that the user can continue scanning by 00248 * just pointing fcodeYYin at a new input file. 00249 */ 00250 #define YY_BUFFER_EOF_PENDING 2 00251 00252 }; 00253 #endif /* !YY_STRUCT_YY_BUFFER_STATE */ 00254 00255 /* Stack of input buffers. */ 00256 static size_t yy_buffer_stack_top = 0; 00257 static size_t yy_buffer_stack_max = 0; 00258 static YY_BUFFER_STATE * yy_buffer_stack = 0; 00260 /* We provide macros for accessing buffer states in case in the 00261 * future we want to put the buffer states in a more general 00262 * "scanner state". 00263 * 00264 * Returns the top of the stack, or NULL. 00265 */ 00266 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 00267 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 00268 : NULL) 00269 00270 /* Same as previous macro, but useful when we know that the buffer stack is not 00271 * NULL or when we need an lvalue. For internal use only. 00272 */ 00273 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 00274 00275 /* yy_hold_char holds the character lost when fcodeYYtext is formed. */ 00276 static char yy_hold_char; 00277 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00278 int fcodeYYleng; 00279 00280 /* Points to current character in buffer. */ 00281 static char *yy_c_buf_p = (char *) 0; 00282 static int yy_init = 0; /* whether we need to initialize */ 00283 static int yy_start = 0; /* start state number */ 00284 00285 /* Flag which is used to allow fcodeYYwrap()'s to do buffer switches 00286 * instead of setting up a fresh fcodeYYin. A bit of a hack ... 00287 */ 00288 static int yy_did_buffer_switch_on_eof; 00289 00290 void fcodeYYrestart (FILE *input_file ); 00291 void fcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00292 YY_BUFFER_STATE fcodeYY_create_buffer (FILE *file,int size ); 00293 void fcodeYY_delete_buffer (YY_BUFFER_STATE b ); 00294 void fcodeYY_flush_buffer (YY_BUFFER_STATE b ); 00295 void fcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ); 00296 void fcodeYYpop_buffer_state (void ); 00297 00298 static void fcodeYYensure_buffer_stack (void ); 00299 static void fcodeYY_load_buffer_state (void ); 00300 static void fcodeYY_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00301 00302 #define YY_FLUSH_BUFFER fcodeYY_flush_buffer(YY_CURRENT_BUFFER ) 00303 00304 YY_BUFFER_STATE fcodeYY_scan_buffer (char *base,yy_size_t size ); 00305 YY_BUFFER_STATE fcodeYY_scan_string (yyconst char *yy_str ); 00306 YY_BUFFER_STATE fcodeYY_scan_bytes (yyconst char *bytes,int len ); 00307 00308 void *fcodeYYalloc (yy_size_t ); 00309 void *fcodeYYrealloc (void *,yy_size_t ); 00310 void fcodeYYfree (void * ); 00311 00312 #define yy_new_buffer fcodeYY_create_buffer 00313 00314 #define yy_set_interactive(is_interactive) \ 00315 { \ 00316 if ( ! YY_CURRENT_BUFFER ){ \ 00317 fcodeYYensure_buffer_stack (); \ 00318 YY_CURRENT_BUFFER_LVALUE = \ 00319 fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); \ 00320 } \ 00321 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 00322 } 00323 00324 #define yy_set_bol(at_bol) \ 00325 { \ 00326 if ( ! YY_CURRENT_BUFFER ){\ 00327 fcodeYYensure_buffer_stack (); \ 00328 YY_CURRENT_BUFFER_LVALUE = \ 00329 fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); \ 00330 } \ 00331 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 00332 } 00333 00334 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 00335 00336 /* Begin user sect3 */ 00337 00338 #define fcodeYYwrap(n) 1 00339 #define YY_SKIP_YYWRAP 00340 00341 typedef unsigned char YY_CHAR; 00342 00343 FILE *fcodeYYin = (FILE *) 0, *fcodeYYout = (FILE *) 0; 00344 00345 typedef int yy_state_type; 00346 00347 extern int fcodeYYlineno; 00348 00349 int fcodeYYlineno = 1; 00350 00351 extern char *fcodeYYtext; 00352 #define yytext_ptr fcodeYYtext 00353 00354 static yy_state_type yy_get_previous_state (void ); 00355 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 00356 static int yy_get_next_buffer (void ); 00357 static void yy_fatal_error (yyconst char msg[] ); 00358 00359 /* Done after the current pattern has been matched and before the 00360 * corresponding action - sets up fcodeYYtext. 00361 */ 00362 #define YY_DO_BEFORE_ACTION \ 00363 (yytext_ptr) = yy_bp; \ 00364 fcodeYYleng = (size_t) (yy_cp - yy_bp); \ 00365 (yy_hold_char) = *yy_cp; \ 00366 *yy_cp = '\0'; \ 00367 (yy_c_buf_p) = yy_cp; 00368 00369 #define YY_NUM_RULES 47 00370 #define YY_END_OF_BUFFER 48 00371 /* This struct is not used in this scanner, 00372 but its presence is necessary. */ 00373 struct yy_trans_info 00374 { 00375 flex_int32_t yy_verify; 00376 flex_int32_t yy_nxt; 00377 }; 00378 static yyconst flex_int16_t yy_acclist[588] = 00379 { 0, 00380 34, 34, 48, 46, 47, 45, 47, 46, 47, 43, 00381 46, 47, 46, 47, 46, 47, 45, 47, 46, 47, 00382 46, 47, 39, 46, 47, 39, 46, 47, 39, 46, 00383 47, 39, 46, 47, 39, 46, 47, 39, 46, 47, 00384 39, 46, 47, 39, 46, 47, 39, 46, 47, 39, 00385 46, 47, 39, 46, 47, 39, 46, 47, 39, 46, 00386 47, 39, 46, 47, 39, 46, 47, 39, 46, 47, 00387 39, 46, 47, 31, 46, 47, 12, 45, 47, 11, 00388 46, 47, 19, 45, 47, 18, 46, 47, 17, 46, 00389 47, 34, 46, 47, 36, 45, 47, 34, 46, 47, 00390 00391 34, 43, 46, 47, 34, 46, 47, 9, 45, 47, 00392 46, 47, 5, 46, 47, 46, 47, 7, 46, 47, 00393 8, 46, 47, 23, 46, 47, 22, 46, 47, 29, 00394 45, 47, 27, 46, 47, 46, 47, 46, 47, 46, 00395 47, 46, 47, 46, 47, 46, 47, 46, 47, 46, 00396 47, 46, 47, 46, 47, 46, 47, 28, 45, 47, 00397 44, 46, 47, 44, 46, 47, 42, 43, 44, 46, 00398 47, 44, 46, 47, 37, 41, 40, 33, 38, 32, 00399 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00400 16386, 39, 39, 39, 39, 39,16386, 39, 39, 39, 00401 00402 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00403 39, 39, 39, 39, 39, 39, 39, 31, 31, 11, 00404 11, 18, 17, 17, 34, 35, 34, 34, 41, 34, 00405 40, 5, 5, 7, 7, 8, 8, 22, 22, 39, 00406 39, 39, 39, 39, 39, 39, 39, 39, 8194, 8194, 00407 8194, 32, 39, 39, 13, 14, 20, 39, 39, 39, 00408 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00409 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00410 39, 35, 35, 34, 39, 39, 39, 39, 39, 39, 00411 39, 39, 8194, 8194, 8194, 32, 39, 13, 3, 13, 00412 00413 3, 13, 32, 13, 39, 13, 39, 39, 39, 39, 00414 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00415 8193, 39,16385, 39,16399, 25, 39, 39, 39, 39, 00416 39,16394, 4, 39, 39, 39, 39, 30, 39, 39, 00417 39, 39, 39, 39, 13, 13, 13, 13, 13, 13, 00418 13, 13, 13, 13, 13, 13, 13, 39, 39, 39, 00419 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00420 39, 39, 8193, 8193, 32,16399, 24,16399, 24, 32, 00421 24, 39, 39, 39, 39, 39, 8202, 8202, 21, 32, 00422 6, 26, 26, 26, 39, 39, 39, 39, 39, 39, 00423 00424 39, 39, 13, 13, 13, 13, 13, 13, 13, 13, 00425 13, 13, 13, 13, 13, 39, 39, 39, 39, 39, 00426 39, 39, 39, 39,16394, 39, 39, 39, 39, 39, 00427 32,16399,16399, 39, 39, 39, 39, 39, 39, 39, 00428 39, 39, 13, 13, 3, 13, 13, 13, 13, 13, 00429 13, 13, 13, 13, 13, 13, 39, 39, 39, 32, 00430 39, 39, 8202, 39, 39, 39,16394,16399, 24,16399, 00431 16399, 24,16399, 39, 39, 39, 26, 39, 39, 39, 00432 39, 39, 13, 13, 13, 13, 13, 13, 13, 13, 00433 14, 13, 39, 39, 39, 39, 39, 8202, 39, 39, 00434 00435 39, 39, 39,16399, 39, 39, 13, 13, 13, 13, 00436 13, 13, 13, 16, 39, 39, 39, 39, 39,16386, 00437 16399, 24,16399, 24, 32, 32, 13, 13, 13, 13, 00438 13, 14, 13, 13, 39, 25, 39, 39, 26, 26, 00439 32,16399,16399, 25, 13, 13, 13, 13, 13, 39, 00440 39, 39,16399, 24,16399,16399, 25, 13, 13, 20, 00441 13, 13, 13, 39, 39, 26, 26,16399, 24,16399, 00442 13, 13, 8193,16385, 8207, 39, 26, 13, 8193, 8193, 00443 8207, 13,16399, 13, 13, 13, 13 00444 } ; 00445 00446 static yyconst flex_int16_t yy_accept[703] = 00447 { 0, 00448 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00449 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 00450 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00451 3, 4, 6, 8, 10, 13, 15, 17, 19, 21, 00452 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 00453 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 00454 83, 86, 89, 92, 95, 98, 101, 105, 108, 111, 00455 113, 116, 118, 121, 124, 127, 130, 133, 136, 138, 00456 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 00457 161, 164, 167, 172, 175, 175, 176, 177, 178, 178, 00458 00459 178, 179, 179, 180, 180, 181, 182, 183, 184, 185, 00460 186, 187, 188, 189, 190, 192, 193, 194, 195, 196, 00461 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 00462 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 00463 218, 219, 220, 221, 222, 223, 224, 225, 226, 226, 00464 227, 228, 230, 232, 232, 232, 233, 234, 234, 235, 00465 236, 237, 238, 239, 240, 240, 240, 240, 240, 240, 00466 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 00467 240, 240, 241, 242, 243, 244, 245, 246, 247, 248, 00468 249, 250, 251, 253, 254, 255, 259, 260, 261, 262, 00469 00470 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 00471 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 00472 283, 284, 285, 285, 285, 285, 285, 285, 285, 285, 00473 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 00474 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 00475 297, 298, 299, 301, 302, 304, 306, 308, 309, 310, 00476 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 00477 321, 324, 326, 328, 329, 330, 331, 333, 334, 335, 00478 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 00479 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 00480 00481 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 00482 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 00483 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 00484 368, 369, 370, 371, 372, 373, 374, 376, 377, 379, 00485 381, 381, 382, 383, 384, 385, 386, 387, 388, 389, 00486 391, 391, 392, 392, 392, 392, 392, 392, 392, 392, 00487 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, 00488 394, 394, 395, 395, 396, 396, 397, 398, 399, 400, 00489 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 00490 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 00491 00492 421, 422, 423, 424, 426, 427, 428, 429, 430, 431, 00493 432, 432, 432, 432, 433, 433, 434, 435, 436, 437, 00494 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 00495 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 00496 437, 438, 438, 439, 440, 441, 442, 443, 443, 444, 00497 445, 447, 448, 449, 450, 451, 452, 453, 454, 455, 00498 456, 457, 458, 459, 460, 460, 461, 462, 463, 464, 00499 465, 466, 468, 468, 468, 469, 471, 472, 474, 475, 00500 476, 477, 477, 477, 477, 477, 477, 477, 477, 477, 00501 477, 477, 477, 477, 477, 478, 479, 479, 480, 481, 00502 00503 482, 483, 483, 484, 485, 486, 487, 488, 489, 490, 00504 492, 493, 494, 495, 495, 495, 495, 496, 497, 497, 00505 498, 499, 499, 499, 500, 501, 502, 502, 502, 502, 00506 502, 502, 502, 502, 502, 502, 502, 502, 503, 503, 00507 505, 506, 507, 507, 508, 509, 510, 511, 512, 513, 00508 514, 515, 515, 516, 516, 516, 516, 516, 516, 517, 00509 518, 519, 519, 519, 519, 519, 519, 519, 519, 519, 00510 520, 521, 522, 524, 526, 526, 526, 527, 527, 528, 00511 529, 530, 531, 533, 534, 535, 535, 536, 536, 537, 00512 537, 537, 537, 537, 537, 538, 539, 539, 539, 539, 00513 00514 539, 540, 541, 541, 541, 541, 541, 541, 541, 541, 00515 542, 542, 543, 543, 543, 544, 544, 545, 545, 546, 00516 547, 548, 549, 550, 550, 551, 551, 551, 551, 551, 00517 551, 552, 553, 553, 553, 553, 553, 553, 553, 553, 00518 553, 553, 553, 553, 553, 554, 556, 556, 557, 558, 00519 558, 559, 561, 562, 563, 564, 564, 564, 564, 564, 00520 565, 566, 566, 567, 567, 567, 567, 568, 568, 569, 00521 571, 571, 572, 573, 575, 575, 575, 575, 576, 577, 00522 577, 578, 578, 578, 579, 580, 581, 581, 582, 582, 00523 582, 582, 583, 583, 583, 584, 585, 585, 586, 587, 00524 00525 588, 588 00526 } ; 00527 00528 static yyconst flex_int32_t yy_ec[256] = 00529 { 0, 00530 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00532 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00533 1, 4, 5, 6, 7, 1, 1, 8, 9, 10, 00534 11, 12, 1, 13, 1, 1, 1, 14, 14, 14, 00535 14, 14, 14, 14, 14, 14, 14, 15, 1, 1, 00536 1, 16, 1, 1, 19, 20, 21, 22, 23, 24, 00537 25, 26, 27, 18, 28, 29, 30, 31, 32, 33, 00538 18, 34, 35, 36, 37, 38, 39, 40, 41, 42, 00539 1, 17, 1, 1, 18, 1, 19, 20, 21, 22, 00540 00541 23, 24, 25, 26, 27, 18, 28, 29, 30, 31, 00542 32, 33, 18, 34, 35, 36, 37, 38, 39, 40, 00543 41, 42, 1, 1, 1, 1, 1, 1, 1, 1, 00544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00551 00552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00556 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00557 1, 1, 1, 1, 1 00558 } ; 00559 00560 static yyconst flex_int32_t yy_meta[43] = 00561 { 0, 00562 1, 2, 3, 2, 1, 1, 1, 1, 1, 2, 00563 1, 1, 1, 4, 1, 5, 1, 4, 4, 4, 00564 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 00565 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 00566 4, 4 00567 } ; 00568 00569 static yyconst flex_int16_t yy_base[737] = 00570 { 0, 00571 0, 5, 22, 0, 64, 0, 104, 109, 126, 0, 00572 166, 171, 188, 0, 228, 233, 250, 0, 292, 0, 00573 334, 0, 374, 0, 381, 408, 413, 418, 423, 428, 00574 2088, 2089, 2089, 2084, 2089, 102, 11, 16, 170, 2083, 00575 390, 434, 437, 465, 423, 433, 451, 456, 442, 463, 00576 473, 475, 485, 495, 484, 494, 504, 2071, 2089, 2070, 00577 2089, 0, 2069, 0, 118, 232, 0, 372, 2089, 496, 00578 2068, 529, 0, 2067, 2089, 2066, 2089, 2089, 2050, 152, 00579 155, 2038, 2046, 2044, 2042, 515, 2051, 2054, 2053, 2089, 00580 2089, 2068, 2089, 531, 2067, 2089, 2089, 2089, 239, 2053, 00581 00582 2089, 2065, 2089, 541, 2089, 551, 531, 525, 540, 529, 00583 548, 546, 552, 562, 593, 579, 590, 589, 539, 2030, 00584 560, 588, 598, 604, 603, 570, 618, 627, 631, 629, 00585 641, 635, 640, 645, 652, 664, 665, 668, 678, 683, 00586 0, 2052, 0, 2051, 0, 0, 2050, 0, 452, 165, 00587 2060, 0, 0, 581, 2031, 0, 2047, 698, 245, 456, 00588 0, 2046, 0, 2045, 2029, 2038, 2026, 2025, 2017, 2017, 00589 2016, 2026, 2014, 2015, 2021, 2020, 2026, 2026, 2006, 2009, 00590 2039, 658, 694, 688, 693, 696, 706, 709, 703, 719, 00591 668, 0, 0, 724, 729, 769, 789, 792, 725, 793, 00592 00593 788, 805, 808, 812, 812, 818, 826, 830, 831, 844, 00594 845, 849, 848, 861, 862, 874, 894, 878, 884, 2036, 00595 2089, 2037, 2010, 2006, 2003, 2003, 2012, 2014, 2010, 365, 00596 2005, 2004, 2011, 1998, 1990, 1998, 1997, 2002, 1999, 890, 00597 894, 925, 868, 897, 912, 911, 912, 0, 943, 0, 00598 917, 0, 956, 2089, 0, 995, 638, 925, 932, 942, 00599 984, 990, 1002, 985, 955, 1008, 1003, 1017, 1018, 1027, 00600 1053, 1066, 1032, 1056, 1065, 1066, 1092, 960, 1081, 1089, 00601 1982, 2001, 2002, 1991, 1988, 1989, 1983, 154, 1989, 1994, 00602 1982, 1983, 1976, 1992, 1941, 1107, 531, 1940, 1067, 1114, 00603 00604 1121, 1108, 1107, 1116, 1118, 1119, 1130, 0, 1929, 1930, 00605 1903, 1901, 1889, 93, 1865, 1862, 209, 379, 1868, 1153, 00606 1016, 1137, 1138, 1043, 1143, 1151, 1031, 1139, 1162, 1155, 00607 1167, 1170, 1173, 1186, 1195, 1213, 2089, 1218, 1222, 1875, 00608 727, 2089, 1212, 1222, 1224, 1226, 1236, 1263, 2089, 2089, 00609 1204, 2089, 1865, 1859, 1843, 1830, 1840, 1830, 1829, 1815, 00610 1818, 1828, 1808, 1807, 1798, 1784, 1796, 1267, 1276, 1805, 00611 1279, 2089, 1779, 1263, 1288, 1265, 1268, 1235, 1272, 1284, 00612 1280, 1304, 1777, 1770, 759, 1769, 1762, 1755, 1755, 1740, 00613 1732, 1721, 1698, 1685, 1678, 1297, 1300, 1308, 1311, 1334, 00614 00615 1320, 1323, 1322, 1357, 1331, 1346, 1347, 1357, 1358, 1672, 00616 1640, 1636, 1661, 1389, 1383, 1392, 1369, 1372, 1379, 1403, 00617 378, 1633, 1621, 1613, 1621, 474, 1623, 1604, 1412, 1595, 00618 1595, 1600, 1582, 1581, 1587, 1596, 1589, 1416, 1419, 1424, 00619 1421, 1570, 1416, 1431, 1430, 1432, 1440, 1465, 1565, 1559, 00620 0, 1545, 1535, 1532, 1517, 1516, 1517, 1500, 1499, 1503, 00621 1482, 1401, 1439, 1442, 1479, 1472, 1456, 1457, 1490, 1462, 00622 1478, 1511, 1474, 1475, 0, 0, 1504, 1508, 1498, 1502, 00623 1517, 1463, 1460, 1442, 1437, 1423, 1413, 1416, 1543, 1533, 00624 1416, 1398, 1402, 1548, 1560, 1547, 1381, 1540, 1558, 1562, 00625 00626 1540, 1377, 1367, 1350, 1341, 1340, 1334, 1343, 1315, 0, 00627 1318, 1581, 1595, 1547, 1297, 1288, 1573, 1572, 1288, 1577, 00628 1612, 1300, 1283, 1592, 1601, 1600, 1264, 1267, 1265, 1240, 00629 1239, 1227, 1632, 1220, 1210, 1219, 1205, 1606, 1217, 1637, 00630 1621, 1641, 1206, 861, 1198, 1195, 1188, 1184, 1164, 1160, 00631 1652, 1656, 1644, 1663, 1156, 1144, 1137, 1138, 1652, 1649, 00632 1666, 1142, 1133, 1123, 1678, 1692, 1124, 1695, 1110, 1681, 00633 1706, 1710, 1713, 1130, 1722, 1701, 1121, 1093, 1352, 1091, 00634 1071, 1068, 616, 1043, 1033, 1033, 1699, 1727, 2089, 1024, 00635 1731, 1027, 1014, 995, 1721, 1724, 984, 977, 971, 1742, 00636 00637 1753, 982, 1760, 1765, 974, 963, 1747, 938, 1769, 956, 00638 944, 764, 1774, 939, 935, 925, 986, 906, 896, 886, 00639 895, 1764, 883, 875, 1763, 863, 1779, 872, 849, 833, 00640 1756, 1771, 841, 843, 839, 1797, 1804, 835, 1809, 829, 00641 1823, 803, 790, 1824, 0, 0, 814, 1024, 1185, 779, 00642 748, 0, 734, 717, 716, 698, 684, 672, 662, 1827, 00643 1763, 1830, 1840, 677, 1844, 1854, 1858, 633, 0, 0, 00644 635, 624, 629, 1868, 600, 1231, 605, 1872, 1852, 1875, 00645 1885, 604, 570, 569, 1889, 2089, 553, 1329, 559, 541, 00646 531, 516, 501, 488, 501, 480, 1507, 456, 456, 458, 00647 00648 2089, 1900, 1905, 1910, 1915, 1919, 1923, 468, 467, 1927, 00649 449, 1932, 1937, 439, 398, 381, 1942, 1946, 236, 121, 00650 112, 1950, 15, 8, 3, 1955, 1960, 1965, 1970, 1975, 00651 1980, 1985, 1990, 1995, 2000, 2005 00652 } ; 00653 00654 static yyconst flex_int16_t yy_def[737] = 00655 { 0, 00656 702, 702, 701, 3, 701, 5, 702, 702, 701, 9, 00657 702, 702, 701, 13, 703, 703, 701, 17, 701, 19, 00658 701, 21, 702, 23, 702, 702, 702, 702, 704, 704, 00659 701, 701, 701, 705, 701, 701, 701, 701, 705, 706, 00660 707, 707, 707, 707, 44, 44, 44, 46, 44, 44, 00661 44, 44, 44, 44, 44, 44, 44, 708, 701, 709, 00662 701, 710, 711, 712, 701, 713, 712, 712, 701, 701, 00663 714, 701, 701, 715, 701, 716, 701, 701, 701, 701, 00664 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00665 701, 705, 701, 701, 717, 701, 701, 701, 701, 701, 00666 00667 701, 706, 701, 701, 701, 718, 44, 46, 44, 46, 00668 44, 46, 44, 44, 707, 44, 44, 44, 46, 115, 00669 46, 46, 46, 46, 46, 46, 46, 44, 44, 44, 00670 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 00671 719, 708, 720, 709, 710, 721, 711, 712, 701, 701, 00672 722, 712, 712, 701, 701, 723, 714, 701, 701, 701, 00673 724, 715, 725, 716, 701, 701, 701, 701, 701, 701, 00674 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00675 717, 44, 44, 46, 46, 46, 46, 46, 46, 46, 00676 726, 726, 726, 46, 46, 701, 46, 46, 46, 46, 00677 00678 46, 46, 46, 44, 46, 46, 46, 46, 46, 46, 00679 46, 46, 46, 46, 46, 46, 707, 46, 46, 701, 00680 701, 722, 701, 701, 701, 701, 701, 701, 701, 701, 00681 701, 701, 701, 701, 701, 701, 701, 701, 701, 46, 00682 46, 707, 44, 46, 44, 46, 46, 726, 726, 726, 00683 46, 727, 727, 701, 727, 728, 196, 46, 46, 46, 00684 46, 46, 46, 46, 44, 44, 44, 44, 44, 44, 00685 707, 707, 44, 44, 44, 44, 707, 701, 44, 44, 00686 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00687 701, 701, 701, 701, 701, 701, 701, 701, 44, 707, 00688 00689 701, 44, 44, 44, 44, 44, 44, 253, 727, 727, 00690 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 00691 46, 46, 46, 46, 46, 46, 46, 44, 44, 46, 00692 46, 46, 46, 44, 44, 701, 701, 701, 701, 729, 00693 701, 701, 44, 44, 44, 44, 44, 701, 701, 701, 00694 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00695 701, 701, 701, 701, 701, 701, 701, 701, 701, 730, 00696 701, 701, 701, 44, 701, 44, 44, 46, 46, 46, 00697 46, 707, 727, 727, 727, 727, 727, 727, 727, 727, 00698 727, 727, 727, 727, 727, 44, 44, 44, 44, 707, 00699 00700 44, 44, 46, 707, 44, 44, 44, 44, 44, 729, 00701 701, 701, 729, 701, 701, 414, 46, 46, 46, 701, 00702 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00703 701, 701, 701, 701, 701, 730, 730, 701, 701, 701, 00704 44, 701, 44, 44, 44, 44, 44, 701, 727, 727, 00705 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 00706 727, 46, 46, 46, 701, 701, 46, 46, 701, 46, 00707 46, 707, 701, 701, 414, 414, 701, 701, 46, 46, 00708 46, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00709 701, 701, 701, 701, 701, 46, 701, 44, 44, 44, 00710 00711 46, 701, 727, 727, 727, 727, 727, 727, 727, 727, 00712 727, 707, 707, 701, 701, 701, 46, 46, 701, 46, 00713 701, 701, 701, 46, 44, 46, 701, 701, 701, 701, 00714 701, 701, 701, 701, 701, 701, 701, 46, 701, 272, 00715 46, 707, 701, 727, 727, 727, 727, 727, 727, 727, 00716 701, 701, 44, 701, 701, 701, 701, 701, 44, 44, 00717 44, 701, 701, 701, 701, 701, 701, 701, 701, 44, 00718 701, 701, 701, 731, 701, 701, 732, 701, 727, 727, 00719 727, 727, 727, 727, 727, 701, 46, 701, 701, 701, 00720 701, 701, 701, 701, 44, 44, 701, 701, 701, 701, 00721 00722 701, 733, 701, 701, 734, 701, 701, 701, 701, 731, 00723 731, 414, 701, 735, 416, 732, 701, 701, 727, 727, 00724 727, 727, 727, 701, 44, 701, 701, 701, 701, 701, 00725 46, 46, 701, 733, 733, 701, 701, 736, 701, 734, 00726 701, 701, 701, 701, 612, 612, 735, 612, 701, 701, 00727 727, 727, 727, 727, 727, 701, 701, 701, 701, 707, 00728 46, 701, 701, 736, 701, 701, 701, 701, 648, 648, 00729 701, 727, 727, 701, 701, 701, 701, 701, 46, 701, 00730 701, 701, 701, 727, 701, 701, 701, 701, 701, 701, 00731 701, 727, 701, 701, 416, 727, 701, 727, 727, 727, 00732 00733 0, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00734 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00735 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00736 701, 701, 701, 701, 701, 701 00737 } ; 00738 00739 static yyconst flex_int16_t yy_nxt[2132] = 00740 { 0, 00741 701, 160, 33, 160, 34, 35, 163, 33, 35, 34, 00742 35, 161, 99, 35, 99, 100, 36, 99, 156, 99, 00743 100, 36, 32, 37, 38, 37, 39, 35, 40, 32, 00744 35, 32, 32, 32, 32, 32, 32, 32, 36, 41, 00745 42, 43, 44, 45, 46, 47, 41, 41, 48, 41, 00746 49, 50, 41, 51, 52, 53, 54, 55, 56, 41, 00747 57, 41, 41, 41, 32, 32, 33, 32, 34, 35, 00748 32, 32, 35, 32, 32, 32, 32, 32, 32, 32, 00749 36, 58, 58, 58, 58, 58, 58, 58, 58, 58, 00750 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 00751 00752 58, 58, 58, 58, 58, 58, 33, 97, 34, 35, 00753 97, 33, 35, 34, 35, 146, 385, 35, 98, 149, 00754 36, 149, 150, 388, 143, 36, 32, 32, 59, 32, 00755 34, 35, 32, 32, 35, 32, 32, 32, 32, 32, 00756 32, 32, 36, 60, 60, 60, 60, 60, 60, 60, 00757 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 00758 60, 60, 60, 60, 60, 60, 60, 60, 33, 220, 00759 34, 35, 96, 33, 35, 34, 35, 166, 359, 35, 00760 221, 168, 36, 167, 360, 101, 169, 36, 32, 32, 00761 61, 32, 34, 35, 32, 32, 35, 62, 32, 32, 00762 00763 32, 32, 32, 32, 36, 63, 63, 63, 63, 63, 00764 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 00765 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 00766 65, 391, 66, 67, 96, 65, 67, 66, 67, 141, 00767 99, 67, 99, 100, 68, 392, 160, 148, 160, 68, 00768 32, 32, 69, 32, 34, 35, 32, 32, 35, 32, 00769 32, 32, 70, 32, 32, 32, 36, 71, 71, 71, 00770 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 00771 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 00772 71, 71, 32, 72, 69, 72, 34, 35, 32, 32, 00773 00774 35, 32, 32, 32, 73, 32, 32, 32, 36, 74, 00775 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 00776 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 00777 74, 74, 74, 74, 32, 32, 33, 32, 34, 35, 00778 32, 32, 35, 32, 75, 32, 32, 32, 32, 32, 00779 36, 76, 76, 76, 76, 76, 76, 76, 76, 76, 00780 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 00781 76, 76, 76, 76, 76, 76, 77, 152, 34, 35, 00782 152, 78, 35, 90, 164, 34, 35, 288, 153, 35, 00783 36, 104, 79, 104, 80, 81, 82, 36, 289, 105, 00784 00785 83, 162, 84, 106, 393, 85, 86, 87, 88, 89, 00786 90, 482, 34, 35, 483, 33, 35, 34, 35, 394, 00787 33, 35, 34, 35, 36, 33, 35, 92, 93, 36, 00788 33, 93, 92, 93, 36, 104, 93, 104, 104, 94, 00789 104, 107, 157, 105, 94, 113, 105, 106, 107, 114, 00790 106, 107, 147, 149, 115, 149, 150, 160, 107, 160, 00791 107, 116, 108, 117, 107, 109, 104, 107, 104, 107, 00792 144, 142, 118, 123, 105, 487, 107, 487, 106, 120, 00793 385, 107, 107, 110, 107, 121, 122, 119, 107, 700, 00794 111, 107, 699, 126, 124, 107, 112, 154, 107, 154, 00795 00796 107, 698, 135, 107, 107, 125, 127, 130, 128, 136, 00797 107, 129, 107, 131, 701, 107, 107, 132, 697, 107, 00798 107, 133, 107, 571, 137, 107, 107, 155, 138, 139, 00799 158, 134, 158, 174, 372, 107, 97, 140, 696, 97, 00800 372, 159, 104, 372, 104, 372, 175, 98, 176, 107, 00801 105, 177, 104, 182, 104, 107, 107, 184, 107, 107, 00802 105, 695, 107, 185, 107, 107, 186, 107, 107, 198, 00803 189, 183, 694, 107, 107, 187, 188, 107, 107, 107, 00804 107, 676, 154, 107, 154, 107, 693, 107, 107, 692, 00805 107, 190, 199, 107, 191, 192, 191, 107, 107, 107, 00806 00807 107, 691, 193, 204, 107, 192, 106, 107, 107, 107, 00808 107, 196, 155, 195, 107, 107, 107, 622, 107, 622, 00809 107, 107, 201, 200, 197, 202, 107, 107, 107, 194, 00810 690, 107, 107, 107, 107, 689, 687, 107, 203, 320, 00811 701, 320, 107, 107, 205, 107, 107, 209, 107, 107, 00812 208, 652, 107, 206, 107, 684, 107, 107, 207, 107, 00813 107, 683, 107, 211, 213, 107, 107, 682, 107, 249, 00814 107, 249, 107, 107, 107, 107, 107, 250, 210, 107, 00815 107, 212, 107, 107, 107, 214, 215, 665, 677, 240, 00816 217, 107, 107, 107, 107, 107, 107, 216, 107, 158, 00817 00818 218, 158, 676, 107, 107, 675, 107, 107, 107, 219, 00819 159, 107, 107, 107, 241, 120, 242, 107, 107, 107, 00820 674, 107, 107, 107, 107, 107, 107, 107, 415, 243, 00821 415, 246, 107, 107, 107, 107, 107, 107, 244, 107, 00822 416, 247, 107, 251, 245, 107, 673, 107, 107, 107, 00823 672, 120, 107, 260, 107, 107, 510, 107, 107, 107, 00824 451, 254, 451, 107, 107, 645, 385, 646, 107, 252, 00825 253, 254, 253, 252, 252, 252, 252, 252, 255, 252, 00826 252, 252, 256, 252, 252, 252, 257, 257, 257, 257, 00827 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 00828 00829 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 00830 257, 258, 259, 671, 263, 261, 107, 107, 107, 107, 00831 107, 107, 107, 107, 648, 609, 262, 107, 107, 668, 00832 266, 107, 107, 107, 265, 107, 107, 107, 107, 641, 00833 107, 264, 267, 107, 107, 665, 107, 107, 107, 636, 00834 269, 107, 271, 636, 107, 268, 107, 107, 270, 272, 00835 107, 107, 579, 349, 579, 107, 273, 274, 659, 107, 00836 107, 271, 107, 107, 107, 107, 107, 107, 107, 107, 00837 658, 275, 580, 107, 107, 276, 302, 107, 107, 107, 00838 107, 107, 120, 107, 657, 278, 277, 278, 591, 107, 00839 00840 107, 107, 107, 105, 107, 656, 107, 106, 107, 655, 00841 299, 279, 107, 107, 107, 653, 652, 107, 107, 280, 00842 107, 300, 107, 107, 107, 303, 301, 107, 301, 107, 00843 304, 651, 650, 107, 105, 617, 107, 107, 106, 305, 00844 107, 107, 306, 107, 249, 307, 249, 107, 615, 648, 00845 107, 107, 250, 107, 612, 107, 107, 308, 321, 308, 00846 107, 278, 107, 278, 107, 255, 612, 322, 323, 105, 00847 107, 107, 107, 107, 643, 309, 310, 311, 312, 313, 00848 107, 107, 314, 642, 641, 315, 330, 649, 316, 649, 00849 317, 318, 636, 297, 319, 252, 320, 349, 320, 252, 00850 00851 252, 252, 252, 252, 255, 252, 252, 252, 324, 252, 00852 252, 252, 107, 329, 325, 107, 327, 326, 107, 633, 00853 107, 107, 328, 107, 107, 669, 107, 670, 107, 107, 00854 107, 630, 107, 107, 107, 333, 107, 331, 332, 107, 00855 629, 107, 107, 107, 107, 107, 396, 628, 107, 107, 00856 107, 334, 107, 335, 336, 107, 336, 107, 107, 107, 00857 626, 402, 337, 107, 624, 399, 106, 338, 623, 339, 00858 107, 107, 510, 107, 107, 340, 345, 341, 342, 106, 00859 342, 107, 107, 107, 107, 374, 621, 107, 347, 343, 00860 107, 107, 107, 348, 349, 348, 346, 107, 107, 107, 00861 00862 344, 350, 620, 120, 351, 106, 107, 107, 368, 619, 00863 369, 271, 107, 618, 107, 375, 370, 375, 371, 372, 00864 107, 372, 301, 105, 301, 107, 107, 106, 377, 378, 00865 105, 617, 107, 107, 107, 376, 107, 107, 107, 107, 00866 612, 107, 379, 107, 107, 609, 606, 107, 107, 380, 00867 107, 599, 382, 381, 320, 107, 320, 403, 398, 598, 00868 597, 107, 255, 397, 107, 107, 107, 107, 107, 594, 00869 107, 107, 593, 107, 401, 592, 107, 107, 400, 107, 00870 107, 107, 107, 107, 404, 405, 649, 107, 649, 406, 00871 107, 591, 407, 107, 107, 107, 585, 107, 107, 385, 00872 00873 107, 107, 584, 107, 409, 420, 107, 420, 408, 107, 00874 583, 107, 107, 107, 336, 273, 336, 107, 582, 338, 00875 107, 338, 337, 338, 581, 338, 107, 410, 578, 341, 00876 107, 410, 688, 341, 688, 571, 421, 107, 297, 297, 00877 107, 411, 107, 107, 107, 411, 569, 107, 417, 107, 00878 568, 107, 412, 107, 107, 107, 412, 107, 418, 120, 00879 567, 107, 419, 107, 348, 107, 348, 107, 368, 566, 00880 368, 273, 350, 565, 272, 351, 436, 368, 371, 368, 00881 439, 107, 439, 443, 564, 436, 107, 371, 107, 375, 00882 107, 375, 440, 107, 107, 563, 107, 105, 441, 107, 00883 00884 107, 562, 445, 444, 446, 448, 447, 448, 107, 442, 00885 107, 107, 107, 105, 107, 462, 558, 106, 107, 107, 00886 557, 556, 107, 107, 555, 107, 107, 554, 107, 107, 00887 688, 463, 688, 107, 464, 465, 107, 465, 467, 107, 00888 385, 107, 107, 466, 272, 107, 550, 106, 107, 470, 00889 272, 107, 107, 579, 107, 579, 107, 468, 469, 349, 00890 469, 107, 107, 549, 107, 107, 105, 548, 547, 351, 00891 106, 107, 107, 580, 546, 107, 107, 107, 107, 273, 00892 273, 471, 107, 107, 415, 545, 415, 472, 107, 107, 00893 475, 480, 476, 477, 544, 478, 416, 107, 342, 479, 00894 00895 107, 342, 107, 342, 420, 416, 420, 107, 107, 107, 00896 543, 107, 411, 489, 481, 489, 539, 494, 107, 495, 00897 439, 490, 439, 412, 537, 372, 297, 372, 372, 273, 00898 372, 107, 440, 372, 107, 421, 372, 440, 372, 496, 00899 107, 107, 536, 271, 297, 532, 107, 107, 107, 107, 00900 500, 498, 107, 499, 531, 107, 107, 107, 107, 530, 00901 529, 107, 107, 107, 271, 107, 104, 107, 104, 512, 00902 107, 501, 107, 514, 105, 514, 517, 513, 107, 528, 00903 465, 107, 465, 518, 107, 107, 107, 107, 466, 527, 00904 273, 469, 107, 469, 523, 107, 107, 502, 515, 105, 00905 00906 520, 107, 351, 516, 522, 477, 107, 477, 107, 477, 00907 372, 477, 521, 349, 521, 511, 372, 107, 524, 372, 00908 105, 372, 519, 351, 106, 510, 107, 411, 107, 385, 00909 107, 411, 107, 509, 533, 525, 533, 107, 412, 508, 00910 507, 107, 412, 526, 489, 107, 489, 107, 514, 494, 00911 514, 495, 490, 506, 505, 504, 107, 372, 120, 534, 00912 372, 494, 372, 495, 535, 107, 538, 385, 107, 372, 00913 542, 107, 372, 515, 372, 107, 107, 107, 516, 107, 00914 107, 385, 551, 107, 551, 503, 107, 107, 497, 107, 00915 105, 540, 273, 107, 106, 472, 552, 541, 552, 438, 00916 00917 107, 107, 107, 107, 105, 107, 438, 107, 106, 297, 00918 273, 107, 107, 521, 297, 521, 107, 493, 492, 107, 00919 107, 105, 107, 296, 351, 553, 107, 559, 107, 491, 00920 561, 107, 560, 533, 570, 533, 107, 296, 572, 107, 00921 573, 488, 576, 271, 576, 107, 574, 486, 575, 107, 00922 577, 107, 296, 551, 106, 551, 485, 552, 534, 552, 00923 107, 105, 107, 535, 588, 105, 588, 107, 484, 107, 00924 107, 414, 474, 589, 107, 587, 473, 107, 595, 600, 00925 107, 601, 414, 107, 107, 596, 586, 602, 512, 603, 00926 372, 107, 372, 604, 590, 604, 607, 107, 607, 107, 00927 00928 461, 605, 576, 273, 576, 297, 107, 192, 192, 192, 00929 577, 572, 107, 572, 572, 192, 572, 460, 192, 610, 00930 459, 575, 610, 613, 575, 613, 608, 107, 588, 625, 00931 588, 614, 627, 411, 627, 615, 411, 589, 107, 107, 00932 458, 589, 107, 600, 412, 600, 107, 412, 607, 107, 00933 607, 634, 631, 603, 600, 107, 600, 297, 590, 632, 00934 457, 637, 634, 637, 603, 622, 604, 622, 604, 638, 00935 644, 456, 644, 639, 605, 613, 455, 613, 608, 297, 00936 627, 107, 627, 614, 107, 271, 660, 615, 107, 589, 00937 454, 107, 453, 679, 107, 107, 654, 661, 662, 107, 00938 00939 663, 107, 107, 452, 450, 637, 372, 637, 449, 372, 00940 107, 372, 372, 638, 297, 438, 297, 639, 372, 435, 00941 434, 372, 639, 372, 666, 644, 667, 644, 678, 433, 00942 678, 662, 372, 663, 297, 372, 105, 372, 432, 372, 00943 106, 662, 372, 663, 372, 680, 431, 681, 430, 372, 00944 429, 428, 372, 372, 372, 666, 372, 667, 372, 666, 00945 427, 667, 426, 372, 425, 424, 372, 372, 372, 685, 00946 372, 685, 372, 678, 660, 678, 680, 686, 681, 423, 00947 107, 105, 107, 422, 372, 414, 680, 372, 681, 372, 00948 685, 107, 685, 395, 372, 390, 389, 372, 686, 372, 00949 00950 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 00951 91, 91, 91, 91, 91, 95, 95, 95, 95, 102, 00952 102, 102, 102, 102, 107, 387, 107, 145, 145, 386, 00953 145, 145, 148, 148, 385, 148, 148, 151, 151, 151, 00954 151, 151, 181, 181, 181, 181, 181, 106, 384, 106, 00955 222, 222, 222, 222, 222, 248, 248, 383, 248, 248, 00956 252, 252, 373, 252, 252, 256, 256, 367, 256, 256, 00957 413, 413, 413, 413, 413, 437, 437, 437, 437, 437, 00958 611, 611, 611, 611, 611, 616, 616, 616, 616, 616, 00959 635, 635, 635, 635, 635, 640, 640, 640, 640, 640, 00960 00961 647, 647, 647, 647, 647, 664, 664, 664, 664, 664, 00962 366, 365, 364, 363, 362, 361, 358, 357, 356, 355, 00963 354, 353, 352, 298, 297, 296, 295, 294, 293, 292, 00964 291, 290, 287, 286, 285, 284, 283, 282, 281, 96, 00965 220, 96, 239, 238, 237, 236, 235, 234, 233, 232, 00966 231, 230, 229, 228, 227, 226, 225, 224, 163, 161, 00967 156, 223, 96, 146, 143, 141, 107, 103, 101, 96, 00968 96, 180, 179, 178, 173, 172, 171, 170, 165, 163, 00969 161, 156, 146, 143, 141, 103, 96, 701, 31, 701, 00970 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00971 00972 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00973 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00974 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 00975 701 00976 } ; 00977 00978 static yyconst flex_int16_t yy_chk[2132] = 00979 { 0, 00980 0, 73, 1, 73, 1, 1, 725, 2, 1, 2, 00981 2, 724, 37, 2, 37, 37, 1, 38, 723, 38, 00982 38, 2, 3, 3, 3, 3, 3, 3, 3, 3, 00983 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00984 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00985 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00986 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 00987 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 00988 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 00989 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 00990 00991 5, 5, 5, 5, 5, 5, 7, 36, 7, 7, 00992 36, 8, 7, 8, 8, 721, 314, 8, 36, 65, 00993 7, 65, 65, 314, 720, 8, 9, 9, 9, 9, 00994 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 00995 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 00996 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 00997 9, 9, 9, 9, 9, 9, 9, 9, 11, 150, 00998 11, 11, 39, 12, 11, 12, 12, 80, 288, 12, 00999 150, 81, 11, 80, 288, 39, 81, 12, 13, 13, 01000 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01001 01002 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01003 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01004 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01005 15, 317, 15, 15, 66, 16, 15, 16, 16, 719, 01006 99, 16, 99, 99, 15, 317, 159, 66, 159, 16, 01007 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01008 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01009 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01010 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01011 17, 17, 19, 19, 19, 19, 19, 19, 19, 19, 01012 01013 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01014 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01015 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01016 19, 19, 19, 19, 21, 21, 21, 21, 21, 21, 01017 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 01018 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 01019 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 01020 21, 21, 21, 21, 21, 21, 23, 68, 23, 23, 01021 68, 23, 23, 25, 716, 25, 25, 230, 68, 25, 01022 23, 41, 23, 41, 23, 23, 23, 25, 230, 41, 01023 01024 23, 715, 23, 41, 318, 23, 23, 23, 23, 23, 01025 26, 421, 26, 26, 421, 27, 26, 27, 27, 318, 01026 28, 27, 28, 28, 26, 29, 28, 29, 29, 27, 01027 30, 29, 30, 30, 28, 42, 30, 42, 43, 29, 01028 43, 45, 714, 42, 30, 45, 43, 42, 45, 45, 01029 43, 46, 711, 149, 45, 149, 149, 160, 46, 160, 01030 49, 46, 42, 46, 46, 43, 44, 49, 44, 47, 01031 709, 708, 46, 49, 44, 426, 47, 426, 44, 48, 01032 700, 50, 47, 44, 48, 48, 48, 47, 50, 699, 01033 44, 51, 698, 52, 50, 48, 44, 70, 51, 70, 01034 01035 52, 696, 55, 53, 51, 51, 52, 53, 52, 55, 01036 53, 52, 56, 54, 695, 55, 53, 54, 694, 56, 01037 54, 54, 57, 693, 55, 56, 54, 70, 56, 57, 01038 72, 54, 72, 86, 297, 57, 94, 57, 692, 94, 01039 297, 72, 104, 297, 104, 297, 86, 94, 86, 107, 01040 104, 86, 106, 108, 106, 108, 107, 110, 109, 110, 01041 106, 691, 107, 110, 108, 109, 111, 119, 110, 119, 01042 113, 109, 690, 111, 112, 112, 112, 113, 119, 111, 01043 114, 689, 154, 113, 154, 112, 687, 114, 121, 684, 01044 121, 114, 121, 114, 115, 115, 115, 116, 126, 121, 01045 01046 126, 683, 115, 126, 116, 115, 115, 118, 117, 126, 01047 116, 117, 154, 116, 118, 117, 122, 583, 122, 583, 01048 118, 117, 123, 122, 118, 124, 123, 122, 123, 115, 01049 682, 125, 124, 125, 124, 677, 675, 123, 125, 257, 01050 257, 257, 125, 124, 127, 128, 127, 130, 127, 129, 01051 129, 673, 128, 128, 130, 672, 129, 127, 128, 131, 01052 130, 671, 129, 132, 134, 132, 131, 668, 133, 191, 01053 133, 191, 131, 134, 132, 134, 182, 191, 131, 133, 01054 135, 133, 135, 182, 134, 135, 136, 664, 659, 182, 01055 138, 135, 136, 137, 136, 137, 138, 137, 138, 158, 01056 01057 139, 158, 658, 136, 137, 657, 139, 138, 139, 140, 01058 158, 140, 183, 140, 183, 185, 184, 139, 184, 183, 01059 656, 185, 140, 185, 186, 183, 186, 184, 341, 186, 01060 341, 189, 185, 189, 187, 186, 187, 188, 187, 188, 01061 341, 190, 189, 194, 188, 187, 655, 190, 188, 190, 01062 654, 195, 194, 199, 194, 199, 653, 195, 190, 195, 01063 385, 385, 385, 194, 199, 612, 651, 612, 195, 196, 01064 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 01065 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 01066 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 01067 01068 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 01069 196, 197, 198, 650, 201, 200, 201, 197, 201, 197, 01070 198, 200, 198, 200, 647, 643, 200, 201, 197, 642, 01071 204, 198, 200, 202, 203, 202, 203, 204, 203, 640, 01072 205, 202, 205, 204, 202, 638, 206, 203, 206, 635, 01073 207, 205, 209, 634, 207, 206, 207, 206, 208, 209, 01074 208, 209, 544, 633, 544, 207, 210, 211, 630, 208, 01075 209, 212, 210, 211, 210, 211, 213, 212, 213, 212, 01076 629, 213, 544, 210, 211, 214, 243, 213, 212, 214, 01077 215, 214, 215, 243, 628, 217, 216, 217, 626, 243, 01078 01079 214, 215, 216, 217, 216, 624, 218, 217, 218, 623, 01080 240, 218, 219, 216, 219, 621, 620, 218, 240, 219, 01081 240, 241, 241, 219, 241, 244, 242, 244, 242, 240, 01082 245, 619, 618, 241, 242, 616, 244, 245, 242, 246, 01083 247, 246, 247, 245, 249, 251, 249, 251, 615, 614, 01084 246, 247, 249, 258, 611, 258, 251, 253, 258, 253, 01085 259, 278, 259, 278, 258, 253, 610, 259, 260, 278, 01086 260, 259, 260, 265, 608, 253, 253, 253, 253, 253, 01087 265, 260, 253, 606, 605, 253, 265, 617, 253, 617, 01088 253, 253, 602, 599, 253, 256, 256, 598, 256, 256, 01089 01090 256, 256, 256, 256, 256, 256, 256, 256, 261, 256, 01091 256, 256, 261, 264, 261, 264, 262, 261, 262, 597, 01092 262, 267, 263, 261, 264, 648, 266, 648, 267, 262, 01093 263, 594, 263, 266, 267, 268, 269, 266, 267, 266, 01094 593, 263, 268, 269, 321, 270, 321, 592, 268, 269, 01095 273, 269, 270, 270, 271, 321, 271, 273, 270, 327, 01096 590, 327, 271, 273, 586, 324, 271, 272, 585, 272, 01097 327, 324, 584, 324, 274, 272, 274, 272, 272, 272, 01098 272, 274, 324, 275, 276, 299, 582, 274, 276, 272, 01099 275, 276, 299, 277, 277, 277, 275, 276, 299, 279, 01100 01101 272, 277, 581, 279, 277, 277, 279, 280, 296, 580, 01102 296, 280, 279, 578, 280, 300, 296, 300, 296, 296, 01103 280, 296, 301, 300, 301, 303, 302, 300, 302, 303, 01104 301, 577, 303, 302, 304, 300, 305, 306, 303, 302, 01105 574, 304, 304, 305, 306, 569, 567, 304, 307, 305, 01106 306, 564, 307, 306, 320, 307, 320, 328, 323, 563, 01107 562, 307, 320, 322, 328, 322, 323, 322, 323, 558, 01108 328, 325, 557, 325, 326, 556, 322, 323, 325, 326, 01109 329, 326, 325, 330, 329, 330, 649, 329, 649, 331, 01110 326, 555, 332, 329, 330, 331, 550, 331, 332, 549, 01111 01112 332, 333, 548, 333, 334, 351, 331, 351, 333, 332, 01113 547, 334, 333, 335, 336, 335, 336, 334, 546, 338, 01114 335, 338, 336, 339, 545, 339, 335, 338, 543, 338, 01115 343, 339, 676, 339, 676, 539, 351, 343, 537, 536, 01116 344, 338, 345, 343, 346, 339, 535, 344, 343, 345, 01117 534, 346, 338, 344, 347, 345, 339, 346, 344, 345, 01118 532, 347, 346, 378, 348, 378, 348, 347, 368, 531, 01119 368, 347, 348, 530, 378, 348, 368, 369, 368, 369, 01120 371, 374, 371, 376, 529, 369, 377, 369, 374, 375, 01121 376, 375, 371, 377, 374, 528, 376, 375, 374, 377, 01122 01123 379, 527, 379, 377, 380, 382, 381, 382, 381, 375, 01124 381, 379, 380, 382, 380, 396, 523, 382, 397, 381, 01125 522, 519, 396, 380, 516, 397, 398, 515, 396, 399, 01126 688, 397, 688, 398, 398, 400, 399, 400, 401, 398, 01127 511, 402, 399, 400, 399, 401, 509, 400, 402, 405, 01128 403, 401, 403, 579, 402, 579, 405, 402, 404, 404, 01129 404, 403, 405, 508, 406, 407, 404, 507, 506, 404, 01130 404, 406, 407, 579, 505, 408, 409, 406, 407, 408, 01131 407, 406, 408, 409, 415, 504, 415, 409, 408, 409, 01132 414, 418, 414, 416, 503, 416, 415, 417, 414, 417, 01133 01134 418, 414, 418, 414, 420, 416, 420, 419, 417, 419, 01135 502, 418, 414, 429, 419, 429, 497, 438, 419, 438, 01136 439, 429, 439, 414, 493, 438, 492, 440, 438, 462, 01137 438, 462, 439, 440, 443, 420, 440, 440, 440, 441, 01138 462, 443, 491, 441, 488, 487, 441, 443, 445, 444, 01139 446, 443, 441, 444, 486, 445, 444, 446, 447, 485, 01140 484, 445, 444, 446, 445, 447, 448, 463, 448, 463, 01141 464, 447, 464, 466, 448, 466, 467, 464, 463, 483, 01142 465, 464, 465, 468, 467, 468, 467, 468, 465, 482, 01143 470, 469, 470, 469, 474, 467, 468, 448, 466, 469, 01144 01145 471, 470, 469, 466, 473, 477, 471, 477, 471, 478, 01146 697, 478, 472, 472, 472, 461, 697, 471, 479, 697, 01147 472, 697, 469, 472, 472, 460, 479, 477, 479, 459, 01148 480, 478, 480, 458, 490, 480, 490, 479, 477, 457, 01149 456, 480, 478, 481, 489, 481, 489, 481, 514, 494, 01150 514, 494, 489, 455, 454, 453, 481, 494, 498, 490, 01151 494, 495, 494, 495, 490, 498, 496, 452, 501, 495, 01152 501, 498, 495, 514, 495, 496, 499, 496, 514, 501, 01153 500, 450, 512, 499, 512, 449, 496, 500, 442, 499, 01154 512, 499, 518, 500, 512, 517, 513, 500, 513, 437, 01155 01156 518, 517, 518, 517, 513, 520, 436, 520, 513, 435, 01157 520, 518, 517, 521, 434, 521, 520, 433, 432, 525, 01158 524, 521, 524, 431, 521, 513, 525, 524, 526, 430, 01159 526, 524, 525, 533, 538, 533, 538, 428, 540, 526, 01160 540, 427, 542, 541, 542, 538, 540, 425, 540, 541, 01161 542, 541, 424, 551, 542, 551, 423, 552, 533, 552, 01162 541, 551, 553, 533, 554, 552, 554, 560, 422, 553, 01163 559, 413, 412, 554, 560, 553, 411, 559, 559, 565, 01164 560, 565, 410, 559, 561, 560, 552, 565, 561, 565, 01165 565, 561, 565, 566, 554, 566, 568, 561, 568, 570, 01166 01167 395, 566, 576, 570, 576, 568, 570, 571, 571, 571, 01168 576, 572, 570, 572, 573, 571, 573, 394, 571, 572, 01169 393, 572, 573, 575, 573, 575, 568, 587, 588, 587, 01170 588, 575, 591, 572, 591, 575, 573, 588, 587, 595, 01171 392, 591, 596, 600, 572, 600, 595, 573, 607, 596, 01172 607, 600, 595, 600, 601, 596, 601, 607, 588, 596, 01173 391, 603, 601, 603, 601, 622, 604, 622, 604, 603, 01174 609, 390, 609, 603, 604, 613, 389, 613, 607, 609, 01175 627, 625, 627, 613, 631, 625, 631, 613, 625, 627, 01176 388, 661, 387, 661, 625, 631, 622, 632, 636, 632, 01177 01178 636, 632, 661, 386, 384, 637, 636, 637, 383, 636, 01179 632, 636, 639, 637, 373, 370, 367, 637, 639, 366, 01180 365, 639, 639, 639, 641, 644, 641, 644, 660, 364, 01181 660, 662, 641, 662, 644, 641, 660, 641, 363, 662, 01182 660, 663, 662, 663, 662, 665, 362, 665, 361, 663, 01183 360, 359, 663, 665, 663, 666, 665, 666, 665, 667, 01184 358, 667, 357, 666, 356, 355, 666, 667, 666, 674, 01185 667, 674, 667, 678, 679, 678, 680, 674, 680, 354, 01186 679, 678, 679, 353, 680, 340, 681, 680, 681, 680, 01187 685, 679, 685, 319, 681, 316, 315, 681, 685, 681, 01188 01189 702, 702, 702, 702, 702, 703, 703, 703, 703, 703, 01190 704, 704, 704, 704, 704, 705, 705, 705, 705, 706, 01191 706, 706, 706, 706, 707, 313, 707, 710, 710, 312, 01192 710, 710, 712, 712, 311, 712, 712, 713, 713, 713, 01193 713, 713, 717, 717, 717, 717, 717, 718, 310, 718, 01194 722, 722, 722, 722, 722, 726, 726, 309, 726, 726, 01195 727, 727, 298, 727, 727, 728, 728, 295, 728, 728, 01196 729, 729, 729, 729, 729, 730, 730, 730, 730, 730, 01197 731, 731, 731, 731, 731, 732, 732, 732, 732, 732, 01198 733, 733, 733, 733, 733, 734, 734, 734, 734, 734, 01199 01200 735, 735, 735, 735, 735, 736, 736, 736, 736, 736, 01201 294, 293, 292, 291, 290, 289, 287, 286, 285, 284, 01202 283, 282, 281, 239, 238, 237, 236, 235, 234, 233, 01203 232, 231, 229, 228, 227, 226, 225, 224, 223, 222, 01204 220, 181, 180, 179, 178, 177, 176, 175, 174, 173, 01205 172, 171, 170, 169, 168, 167, 166, 165, 164, 162, 01206 157, 155, 151, 147, 144, 142, 120, 102, 100, 95, 01207 92, 89, 88, 87, 85, 84, 83, 82, 79, 76, 01208 74, 71, 63, 60, 58, 40, 34, 31, 701, 701, 01209 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 01210 01211 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 01212 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 01213 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 01214 701 01215 } ; 01216 01217 extern int fcodeYY_flex_debug; 01218 int fcodeYY_flex_debug = 0; 01219 01220 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; 01221 static char *yy_full_match; 01222 static int yy_lp; 01223 static int yy_looking_for_trail_begin = 0; 01224 static int yy_full_lp; 01225 static int *yy_full_state; 01226 #define YY_TRAILING_MASK 0x2000 01227 #define YY_TRAILING_HEAD_MASK 0x4000 01228 #define REJECT \ 01229 { \ 01230 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ \ 01231 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ 01232 (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \ 01233 (yy_state_ptr) = yy_full_state; /* restore orig. state */ \ 01234 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ 01235 ++(yy_lp); \ 01236 goto find_rule; \ 01237 } 01238 01239 #define yymore() yymore_used_but_not_detected 01240 #define YY_MORE_ADJ 0 01241 #define YY_RESTORE_YY_MORE_OFFSET 01242 char *fcodeYYtext; 01243 #line 1 "fortrancode.l" 01244 /****************************************************************************** 01245 * 01246 * Parser for syntax hightlighting and references for Fortran90 F subset 01247 * 01248 * Copyright (C) by Anke Visser 01249 * based on the work of Dimitri van Heesch. 01250 * 01251 * Permission to use, copy, modify, and distribute this software and its 01252 * documentation under the terms of the GNU General Public License is hereby 01253 * granted. No representations are made about the suitability of this software 01254 * for any purpose. It is provided "as is" without express or implied warranty. 01255 * See the GNU General Public License for more details. 01256 * 01257 * Documents produced by Doxygen are derivative works derived from the 01258 * input used in their production; they are not affected by this license. 01259 * 01260 */ 01268 #line 28 "fortrancode.l" 01269 01270 /* 01271 * includes 01272 */ 01273 #include "qtbc.h" 01274 #include <stdio.h> 01275 #include <assert.h> 01276 #include <ctype.h> 01277 #include <qregexp.h> 01278 #include <qdir.h> 01279 #include <qstringlist.h> 01280 #include "entry.h" 01281 #include "doxygen.h" 01282 #include "message.h" 01283 #include "outputlist.h" 01284 #include "util.h" 01285 #include "membername.h" 01286 #include "searchindex.h" 01287 #include "defargs.h" 01288 01289 #define YY_NEVER_INTERACTIVE 1 01290 #define YY_NO_TOP_STATE 1 01291 01292 //-------------------------------------------------------------------------------- 01293 01297 class UseEntry 01298 { 01299 public: 01300 QCString module; // just for debug 01301 QStringList onlyNames; /* entries of the ONLY-part */ 01302 }; 01303 01308 class UseSDict : public SDict<UseEntry> 01309 { 01310 public: 01311 UseSDict() : SDict<UseEntry>(17) {} 01312 }; 01313 01314 /*===================================================================*/ 01315 /* 01316 * statics 01317 */ 01318 01319 static QCString docBlock; 01320 static QCString currentModule=0; 01321 static UseSDict *useMembers= new UseSDict; 01322 static UseEntry *useEntry = 0; 01323 static QStack<QStringList> useStack; 01324 static QStringList *currentUseNames= new QStringList; 01325 static QCString str=""; 01326 01327 static CodeOutputInterface * g_code; 01328 01329 // TODO: is this still needed? if so, make it work 01330 static QCString g_parmType; 01331 static QCString g_parmName; 01332 01333 static const char * g_inputString; 01334 static int g_inputPosition; 01335 static int g_inputLines; 01336 static int g_yyLineNr; 01337 static bool g_needsTermination; 01338 01339 static bool g_insideBody; 01340 static const char * g_currentFontClass; 01341 01342 static bool g_exampleBlock; 01343 static QCString g_exampleName; 01344 static QCString g_exampleFile; 01345 01346 static FileDef * g_sourceFileDef; 01347 static Definition * g_currentDefinition; 01348 static MemberDef * g_currentMemberDef; 01349 static bool g_includeCodeFragment; 01350 01351 static char stringStartSymbol; // single or double quote 01352 01353 static void endFontClass() 01354 { 01355 if (g_currentFontClass) 01356 { 01357 g_code->endFontClass(); 01358 g_currentFontClass=0; 01359 } 01360 } 01361 01362 static void startFontClass(const char *s) 01363 { 01364 endFontClass(); 01365 g_code->startFontClass(s); 01366 g_currentFontClass=s; 01367 } 01368 01369 static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") 01370 { 01371 static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); 01372 if (searchEngineEnabled) 01373 { 01374 Doxygen::searchIndex->setCurrentDoc(name,base,anchor); 01375 } 01376 } 01377 01378 static void addToSearchIndex(const char *text) 01379 { 01380 static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); 01381 if (searchEngineEnabled) 01382 { 01383 Doxygen::searchIndex->addWord(text,FALSE); 01384 } 01385 } 01386 01391 static void startCodeLine() 01392 { 01393 if (g_sourceFileDef) 01394 { 01395 //QCString lineNumber,lineAnchor; 01396 //lineNumber.sprintf("%05d",g_yyLineNr); 01397 //lineAnchor.sprintf("l%05d",g_yyLineNr); 01398 01399 Definition *d = g_sourceFileDef->getSourceDefinition(g_yyLineNr); 01400 //printf("startCodeLine %d d=%s\n", g_yyLineNr,d ? d->name().data() : "<null>"); 01401 if (!g_includeCodeFragment && d) 01402 { 01403 g_currentDefinition = d; 01404 g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr); 01405 g_insideBody = FALSE; 01406 g_parmType.resize(0); 01407 g_parmName.resize(0); 01408 QCString lineAnchor; 01409 lineAnchor.sprintf("l%05d",g_yyLineNr); 01410 if (g_currentMemberDef) 01411 { 01412 g_code->writeLineNumber(g_currentMemberDef->getReference(), 01413 g_currentMemberDef->getOutputFileBase(), 01414 g_currentMemberDef->anchor(),g_yyLineNr); 01415 setCurrentDoc( 01416 g_currentMemberDef->qualifiedName(), 01417 g_sourceFileDef->getSourceFileBase(), 01418 lineAnchor); 01419 } 01420 else if (d->isLinkableInProject()) 01421 { 01422 g_code->writeLineNumber(d->getReference(), 01423 d->getOutputFileBase(), 01424 0,g_yyLineNr); 01425 setCurrentDoc( 01426 d->qualifiedName(), 01427 g_sourceFileDef->getSourceFileBase(), 01428 lineAnchor); 01429 } 01430 } 01431 else 01432 { 01433 g_code->writeLineNumber(0,0,0,g_yyLineNr); 01434 } 01435 } 01436 g_code->startCodeLine(); 01437 if (g_currentFontClass) 01438 { 01439 g_code->startFontClass(g_currentFontClass); 01440 } 01441 } 01442 01443 01444 static void endFontClass(); 01445 static void endCodeLine() 01446 { 01447 if (g_currentFontClass) { g_code->endFontClass(); } 01448 g_code->endCodeLine(); 01449 } 01450 01454 static void codifyLines(char *text) 01455 { 01456 //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); 01457 char *p=text,*sp=p; 01458 char c; 01459 bool done=FALSE; 01460 while (!done) 01461 { 01462 sp=p; 01463 while ((c=*p++) && c!='\n'); 01464 if (c=='\n') 01465 { 01466 g_yyLineNr++; 01467 *(p-1)='\0'; 01468 g_code->codify(sp); 01469 endCodeLine(); 01470 if (g_yyLineNr<g_inputLines) 01471 { 01472 startCodeLine(); 01473 } 01474 } 01475 else 01476 { 01477 g_code->codify(sp); 01478 done=TRUE; 01479 } 01480 } 01481 } 01482 01483 static void codifyLines(QCString str) 01484 { 01485 char *tmp= (char *) malloc(str.length()+1); 01486 strcpy(tmp, str); 01487 codifyLines(tmp); 01488 free(tmp); 01489 } 01490 01495 static void writeMultiLineCodeLink(CodeOutputInterface &ol, 01496 const char *ref,const char *file, 01497 const char *anchor,const char *text) 01498 { 01499 bool done=FALSE; 01500 char *p=(char *)text; 01501 while (!done) 01502 { 01503 char *sp=p; 01504 char c; 01505 while ((c=*p++) && c!='\n'); 01506 if (c=='\n') 01507 { 01508 g_yyLineNr++; 01509 *(p-1)='\0'; 01510 //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp); 01511 ol.writeCodeLink(ref,file,anchor,sp,0); 01512 endCodeLine(); 01513 if (g_yyLineNr<g_inputLines) 01514 { 01515 startCodeLine(); 01516 } 01517 } 01518 else 01519 { 01520 //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp); 01521 ol.writeCodeLink(ref,file,anchor,sp,0); 01522 done=TRUE; 01523 } 01524 } 01525 } 01526 01532 static void addDocCrossReference(MemberDef *src, MemberDef *dst) 01533 { 01534 if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types 01535 //printf("======= addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data()); 01536 if ((Config_getBool("REFERENCED_BY_RELATION") || Config_getBool("CALLER_GRAPH")) && 01537 (src->isFunction())) 01538 { 01539 dst->addSourceReferencedBy(src); 01540 } 01541 if ((Config_getBool("REFERENCES_RELATION") || Config_getBool("CALL_GRAPH")) && (src->isFunction())) 01542 { 01543 src->addSourceReferences(dst); 01544 } 01545 } 01546 01547 //------------------------------------------------------------------------------- 01556 static bool getFortranTypeDefs(const QCString &tname, const QCString &moduleName, 01557 ClassDef *&cd, UseSDict *usedict=0) 01558 { 01559 if (tname.isEmpty()) return FALSE; /* empty name => nothing to link */ 01560 01561 //cout << "=== search for type: " << tname << endl; 01562 01563 // search for type 01564 if ((cd=Doxygen::classSDict->find(tname))) 01565 { 01566 //cout << "=== type found in global module" << endl; 01567 return TRUE; 01568 } 01569 else if (moduleName && (cd= Doxygen::classSDict->find(moduleName+"::"+tname))) 01570 { 01571 //cout << "=== type found in local module" << endl; 01572 return TRUE; 01573 } 01574 else 01575 { 01576 UseEntry *use; 01577 for (UseSDict::Iterator di(*usedict); (use=di.current()); ++di) 01578 if ((cd= Doxygen::classSDict->find(use->module+"::"+tname))) 01579 { 01580 //cout << "=== type found in used module" << endl; 01581 return TRUE; 01582 } 01583 } 01584 01585 return FALSE; 01586 } 01587 01596 static bool getFortranDefs(const QCString &memberName, const QCString &moduleName, 01597 MemberDef *&md, UseSDict *usedict=0) 01598 { 01599 if (memberName.isEmpty()) return FALSE; /* empty name => nothing to link */ 01600 01601 // search for function 01602 MemberName *mn = Doxygen::functionNameSDict->find(memberName); 01603 01604 if (mn) // name is known 01605 { 01606 MemberListIterator mli(*mn); 01607 for (mli.toFirst();(md=mli.current());++mli) // all found functions with given name 01608 { 01609 FileDef *fd=md->getFileDef(); 01610 GroupDef *gd=md->getGroupDef(); 01611 01612 //cout << "found link with same name: " << fd->fileName() << " " << memberName; 01613 //if (md->getNamespaceDef() != 0) cout << " in namespace " << md->getNamespaceDef()->name();cout << endl; 01614 01615 if ((gd && gd->isLinkable()) || (fd && fd->isLinkable())) 01616 { 01617 NamespaceDef *nspace= md->getNamespaceDef(); 01618 01619 if (nspace == 0) 01620 { // found function in global scope 01621 return TRUE; 01622 } 01623 else if (moduleName == nspace->name()) 01624 { // found in local scope 01625 return TRUE; 01626 } 01627 else 01628 { // else search in used modules 01629 QCString moduleName= nspace->name(); 01630 UseEntry *ue= usedict->find(moduleName); 01631 if (ue) 01632 { 01633 // check if only-list exists and if current entry exists is this list 01634 QStringList &only= ue->onlyNames; 01635 if (only.isEmpty()) 01636 { 01637 //cout << " found in module " << moduleName << " entry " << memberName << endl; 01638 return TRUE; // whole module used 01639 } 01640 else 01641 { 01642 for ( QStringList::Iterator it = only.begin(); it != only.end(); ++it) 01643 { 01644 //cout << " search in only: " << moduleName << ":: " << memberName << "==" << (*it)<< endl; 01645 if (memberName == (QCString)(*it)) 01646 return TRUE; // found in ONLY-part of use list 01647 } 01648 } 01649 } 01650 } 01651 } // if linkable 01652 } // for 01653 } 01654 return FALSE; 01655 } 01656 01661 static bool getGenericProcedureLink(const ClassDef *cd, 01662 const char *memberText, 01663 CodeOutputInterface &ol) 01664 { 01665 (void)cd; 01666 (void)memberText; 01667 (void)ol; 01668 return FALSE; 01669 } 01670 01671 static bool getLink(UseSDict *usedict, // dictonary with used modules 01672 const char *memberText, // exact member text 01673 CodeOutputInterface &ol, 01674 const char *text) 01675 { 01676 MemberDef *md; 01677 QCString memberName= removeRedundantWhiteSpace(memberText); 01678 //printf("Trying `%s'::`%s'\n",c.data(),m.data()); 01679 01680 if (getFortranDefs(memberName, currentModule, md, usedict) && md->isLinkable()) 01681 { 01682 //if (md->isVariable()) return FALSE; // variables aren't handled yet 01683 01684 Definition *d = md->getOuterScope()==Doxygen::globalScope ? 01685 md->getBodyDef() : md->getOuterScope(); 01686 if (md->getGroupDef()) d = md->getGroupDef(); 01687 if (d && d->isLinkable()) 01688 { 01689 if (g_currentDefinition && g_currentMemberDef && md!=g_currentMemberDef && g_insideBody) 01690 { 01691 addDocCrossReference(g_currentMemberDef,md); 01692 } 01693 ol.linkableSymbol(g_yyLineNr,md->name(),md, 01694 g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); 01695 writeMultiLineCodeLink(ol,md->getReference(), 01696 md->getOutputFileBase(), 01697 md->anchor(), 01698 text ? text : memberText); 01699 addToSearchIndex(text ? text : memberText); 01700 return TRUE; 01701 } 01702 } 01703 return FALSE; 01704 } 01705 01706 01707 static void generateLink(CodeOutputInterface &ol, char *lname) 01708 { 01709 ClassDef *cd=0; 01710 01711 // check if lname is a linkable type or interface 01712 if ( (getFortranTypeDefs(lname, currentModule, cd, useMembers)) && cd->isLinkable() ) 01713 { 01714 if ( (cd->compoundType() == ClassDef::Class) && // was Entry::INTERFACE_SEC) && 01715 (getGenericProcedureLink(cd, lname, ol)) ) 01716 { 01717 //cout << "=== generic procedure resolved" << endl; 01718 } 01719 else 01720 { // write type or interface link 01721 ol.linkableSymbol(g_yyLineNr, lname, cd, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); 01722 writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,lname); 01723 addToSearchIndex(lname); 01724 } 01725 } 01726 // check for function/variable 01727 else if (getLink(useMembers, lname, ol, lname)) 01728 { 01729 //cout << "=== found link for " << lname << endl; 01730 } 01731 else 01732 { 01733 // nothing found, just write out the word 01734 ol.linkableSymbol(g_yyLineNr, lname, 0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); 01735 //startFontClass("charliteral"); //test 01736 codifyLines(lname); 01737 //endFontClass(); //test 01738 addToSearchIndex(lname); 01739 } 01740 } 01741 01743 static int countLines() 01744 { 01745 const char *p=g_inputString; 01746 char c; 01747 int count=1; 01748 while ((c=*p)) 01749 { 01750 p++ ; 01751 if (c=='\n') count++; 01752 } 01753 if (p>g_inputString && *(p-1)!='\n') 01754 { // last line does not end with a \n, so we add an extra 01755 // line and explicitly terminate the line after parsing. 01756 count++, 01757 g_needsTermination=TRUE; 01758 } 01759 return count; 01760 } 01761 01762 //---------------------------------------------------------------------------- 01764 void startUseScope() 01765 { 01766 //fprintf("===> startUse %s",fcodeYYtext); 01767 useStack.push(currentUseNames); 01768 currentUseNames= new QStringList; 01769 } 01770 01772 void endUseScope() 01773 { 01774 //fprintf(stderr,"===> endUse %s",fcodeYYtext); 01775 //UseSDict::Iterator di(*useMembers); UseEntry *ue; 01776 //for (di.toFirst(); ue=di.current(); ++di){cout << ue->module ;} cout << endl; 01777 01778 for ( QStringList::Iterator it = currentUseNames->begin(); it != currentUseNames->end(); ++it) 01779 { 01780 useMembers->remove(*it); 01781 } 01782 delete currentUseNames; 01783 currentUseNames= useStack.pop(); 01784 if (currentUseNames == 0) 01785 { 01786 fprintf(stderr,"fortrancode.l: stack empty!"); 01787 //exit(-1); 01788 } 01789 } 01790 01791 void addUse(QString moduleName) 01792 { 01793 currentUseNames->append(moduleName); 01794 } 01795 //---------------------------------------------------------------------------- 01796 01797 /* -----------------------------------------------------------------*/ 01798 #undef YY_INPUT 01799 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); 01800 01801 static int yyread(char *buf,int max_size) 01802 { 01803 int c=0; 01804 while( c < max_size && g_inputString[g_inputPosition] ) 01805 { 01806 *buf = g_inputString[g_inputPosition++] ; 01807 c++; buf++; 01808 } 01809 return c; 01810 } 01811 01812 /* Assume that attribute statements are almost the same as attributes. */ 01813 /* | */ 01814 /*%option debug*/ 01815 01816 01817 01818 01819 01820 01821 01822 01823 01824 01825 01826 01827 01828 01829 #line 1830 "<stdout>" 01830 01831 #define INITIAL 0 01832 #define Start 1 01833 #define SubCall 2 01834 #define FuncDef 3 01835 #define ClassName 4 01836 #define ClassVar 5 01837 #define Subprog 6 01838 #define DocBlock 7 01839 #define Use 8 01840 #define UseOnly 9 01841 #define TypeDecl 10 01842 #define Declaration 11 01843 #define DeclContLine 12 01844 #define Parameterlist 13 01845 #define String 14 01846 01847 #ifndef YY_NO_UNISTD_H 01848 /* Special case for "unistd.h", since it is non-ANSI. We include it way 01849 * down here because we want the user's section 1 to have been scanned first. 01850 * The user has a chance to override it with an option. 01851 */ 01852 #include <unistd.h> 01853 #endif 01854 01855 #ifndef YY_EXTRA_TYPE 01856 #define YY_EXTRA_TYPE void * 01857 #endif 01858 01859 static int yy_init_globals (void ); 01860 01861 /* Macros after this point can all be overridden by user definitions in 01862 * section 1. 01863 */ 01864 01865 #ifndef YY_SKIP_YYWRAP 01866 #ifdef __cplusplus 01867 extern "C" int fcodeYYwrap (void ); 01868 #else 01869 extern int fcodeYYwrap (void ); 01870 #endif 01871 #endif 01872 01873 static void yyunput (int c,char *buf_ptr ); 01874 01875 #ifndef yytext_ptr 01876 static void yy_flex_strncpy (char *,yyconst char *,int ); 01877 #endif 01878 01879 #ifdef YY_NEED_STRLEN 01880 static int yy_flex_strlen (yyconst char * ); 01881 #endif 01882 01883 #ifndef YY_NO_INPUT 01884 01885 #ifdef __cplusplus 01886 static int yyinput (void ); 01887 #else 01888 static int input (void ); 01889 #endif 01890 01891 #endif 01892 01893 static int yy_start_stack_ptr = 0; 01894 static int yy_start_stack_depth = 0; 01895 static int *yy_start_stack = NULL; 01896 01897 static void yy_push_state (int new_state ); 01898 01899 static void yy_pop_state (void ); 01900 01901 static int yy_top_state (void ); 01902 01903 /* Amount of stuff to slurp up with each read. */ 01904 #ifndef YY_READ_BUF_SIZE 01905 #define YY_READ_BUF_SIZE 8192 01906 #endif 01907 01908 /* Copy whatever the last rule matched to the standard output. */ 01909 #ifndef ECHO 01910 /* This used to be an fputs(), but since the string might contain NUL's, 01911 * we now use fwrite(). 01912 */ 01913 #define ECHO (void) fwrite( fcodeYYtext, fcodeYYleng, 1, fcodeYYout ) 01914 #endif 01915 01916 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 01917 * is returned in "result". 01918 */ 01919 #ifndef YY_INPUT 01920 #define YY_INPUT(buf,result,max_size) \ 01921 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 01922 { \ 01923 int c = '*'; \ 01924 size_t n; \ 01925 for ( n = 0; n < max_size && \ 01926 (c = getc( fcodeYYin )) != EOF && c != '\n'; ++n ) \ 01927 buf[n] = (char) c; \ 01928 if ( c == '\n' ) \ 01929 buf[n++] = (char) c; \ 01930 if ( c == EOF && ferror( fcodeYYin ) ) \ 01931 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01932 result = n; \ 01933 } \ 01934 else \ 01935 { \ 01936 errno=0; \ 01937 while ( (result = fread(buf, 1, max_size, fcodeYYin))==0 && ferror(fcodeYYin)) \ 01938 { \ 01939 if( errno != EINTR) \ 01940 { \ 01941 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01942 break; \ 01943 } \ 01944 errno=0; \ 01945 clearerr(fcodeYYin); \ 01946 } \ 01947 }\ 01948 \ 01949 01950 #endif 01951 01952 /* No semi-colon after return; correct usage is to write "yyterminate();" - 01953 * we don't want an extra ';' after the "return" because that will cause 01954 * some compilers to complain about unreachable statements. 01955 */ 01956 #ifndef yyterminate 01957 #define yyterminate() return YY_NULL 01958 #endif 01959 01960 /* Number of entries by which start-condition stack grows. */ 01961 #ifndef YY_START_STACK_INCR 01962 #define YY_START_STACK_INCR 25 01963 #endif 01964 01965 /* Report a fatal error. */ 01966 #ifndef YY_FATAL_ERROR 01967 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 01968 #endif 01969 01970 /* end tables serialization structures and prototypes */ 01971 01972 /* Default declaration of generated scanner - a define so the user can 01973 * easily add parameters. 01974 */ 01975 #ifndef YY_DECL 01976 #define YY_DECL_IS_OURS 1 01977 01978 extern int fcodeYYlex (void); 01979 01980 #define YY_DECL int fcodeYYlex (void) 01981 #endif /* !YY_DECL */ 01982 01983 /* Code executed at the beginning of each rule, after fcodeYYtext and fcodeYYleng 01984 * have been set up. 01985 */ 01986 #ifndef YY_USER_ACTION 01987 #define YY_USER_ACTION 01988 #endif 01989 01990 /* Code executed at the end of each rule. */ 01991 #ifndef YY_BREAK 01992 #define YY_BREAK break; 01993 #endif 01994 01995 #define YY_RULE_SETUP \ 01996 YY_USER_ACTION 01997 02000 YY_DECL 02001 { 02002 register yy_state_type yy_current_state; 02003 register char *yy_cp, *yy_bp; 02004 register int yy_act; 02005 02006 #line 617 "fortrancode.l" 02007 02008 /*==================================================================*/ 02009 02010 /*-------- ignore ------------------------------------------------------------*/ 02011 02012 #line 2013 "<stdout>" 02013 02014 if ( !(yy_init) ) 02015 { 02016 (yy_init) = 1; 02017 02018 #ifdef YY_USER_INIT 02019 YY_USER_INIT; 02020 #endif 02021 02022 /* Create the reject buffer large enough to save one state per allowed character. */ 02023 if ( ! (yy_state_buf) ) 02024 (yy_state_buf) = (yy_state_type *)fcodeYYalloc(YY_STATE_BUF_SIZE ); 02025 02026 if ( ! (yy_start) ) 02027 (yy_start) = 1; /* first start state */ 02028 02029 if ( ! fcodeYYin ) 02030 fcodeYYin = stdin; 02031 02032 if ( ! fcodeYYout ) 02033 fcodeYYout = stdout; 02034 02035 if ( ! YY_CURRENT_BUFFER ) { 02036 fcodeYYensure_buffer_stack (); 02037 YY_CURRENT_BUFFER_LVALUE = 02038 fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); 02039 } 02040 02041 fcodeYY_load_buffer_state( ); 02042 } 02043 02044 while ( 1 ) /* loops until end-of-file is reached */ 02045 { 02046 yy_cp = (yy_c_buf_p); 02047 02048 /* Support of fcodeYYtext. */ 02049 *yy_cp = (yy_hold_char); 02050 02051 /* yy_bp points to the position in yy_ch_buf of the start of 02052 * the current run. 02053 */ 02054 yy_bp = yy_cp; 02055 02056 yy_current_state = (yy_start); 02057 02058 (yy_state_ptr) = (yy_state_buf); 02059 *(yy_state_ptr)++ = yy_current_state; 02060 02061 yy_match: 02062 do 02063 { 02064 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 02065 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02066 { 02067 yy_current_state = (int) yy_def[yy_current_state]; 02068 if ( yy_current_state >= 702 ) 02069 yy_c = yy_meta[(unsigned int) yy_c]; 02070 } 02071 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02072 *(yy_state_ptr)++ = yy_current_state; 02073 ++yy_cp; 02074 } 02075 while ( yy_base[yy_current_state] != 2089 ); 02076 02077 yy_find_action: 02078 yy_current_state = *--(yy_state_ptr); 02079 (yy_lp) = yy_accept[yy_current_state]; 02080 find_rule: /* we branch to this label when backing up */ 02081 for ( ; ; ) /* until we find what rule we matched */ 02082 { 02083 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) 02084 { 02085 yy_act = yy_acclist[(yy_lp)]; 02086 if ( yy_act & YY_TRAILING_HEAD_MASK || 02087 yy_looking_for_trail_begin ) 02088 { 02089 if ( yy_act == yy_looking_for_trail_begin ) 02090 { 02091 yy_looking_for_trail_begin = 0; 02092 yy_act &= ~YY_TRAILING_HEAD_MASK; 02093 break; 02094 } 02095 } 02096 else if ( yy_act & YY_TRAILING_MASK ) 02097 { 02098 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; 02099 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; 02100 (yy_full_match) = yy_cp; 02101 yy_full_state = (yy_state_ptr); 02102 yy_full_lp = (yy_lp); 02103 } 02104 else 02105 { 02106 (yy_full_match) = yy_cp; 02107 yy_full_state = (yy_state_ptr); 02108 yy_full_lp = (yy_lp); 02109 break; 02110 } 02111 ++(yy_lp); 02112 goto find_rule; 02113 } 02114 --yy_cp; 02115 yy_current_state = *--(yy_state_ptr); 02116 (yy_lp) = yy_accept[yy_current_state]; 02117 } 02118 02119 YY_DO_BEFORE_ACTION; 02120 02121 do_action: /* This label is used only to access EOF actions. */ 02122 02123 switch ( yy_act ) 02124 { /* beginning of action switch */ 02125 case 1: 02126 YY_RULE_SETUP 02127 #line 622 "fortrancode.l" 02128 { // do not search keywords, intrinsics... TODO: complete list 02129 codifyLines(fcodeYYtext); 02130 } 02131 YY_BREAK 02132 /*-------- inner construct ---------------------------------------------------*/ 02133 case 2: 02134 /* rule 2 can match eol */ 02135 YY_RULE_SETUP 02136 #line 627 "fortrancode.l" 02137 { // hightlight rest of fortran statements 02138 /* font class is defined e.g. in doxygen.css */ 02139 startFontClass("keyword"); 02140 codifyLines(fcodeYYtext); 02141 endFontClass(); 02142 } 02143 YY_BREAK 02144 case 3: 02145 /* rule 3 can match eol */ 02146 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ 02147 (yy_c_buf_p) = yy_cp -= 1; 02148 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ 02149 YY_RULE_SETUP 02150 #line 633 "fortrancode.l" 02151 { 02152 startFontClass("keyword"); 02153 codifyLines(fcodeYYtext); 02154 endFontClass(); 02155 } 02156 YY_BREAK 02157 /*-------- use statement -------------------------------------------*/ 02158 case 4: 02159 YY_RULE_SETUP 02160 #line 640 "fortrancode.l" 02161 { 02162 codifyLines(fcodeYYtext); 02163 yy_push_state(YY_START); 02164 BEGIN(Use); 02165 } 02166 YY_BREAK 02167 case 5: 02168 YY_RULE_SETUP 02169 #line 645 "fortrancode.l" 02170 { 02171 startFontClass("keywordflow"); 02172 codifyLines(fcodeYYtext); 02173 endFontClass(); 02174 02175 /* append module name to use dict */ 02176 useEntry = new UseEntry(); 02177 useEntry->module = fcodeYYtext; 02178 useMembers->append(fcodeYYtext, useEntry); 02179 addUse(fcodeYYtext); 02180 } 02181 YY_BREAK 02182 case 6: 02183 YY_RULE_SETUP 02184 #line 656 "fortrancode.l" 02185 { // TODO: rename 02186 codifyLines(fcodeYYtext); 02187 yy_push_state(YY_START); 02188 BEGIN(UseOnly); 02189 } 02190 YY_BREAK 02191 case 7: 02192 YY_RULE_SETUP 02193 #line 661 "fortrancode.l" 02194 { codifyLines(fcodeYYtext); } 02195 YY_BREAK 02196 case 8: 02197 YY_RULE_SETUP 02198 #line 662 "fortrancode.l" 02199 { 02200 codifyLines(fcodeYYtext); 02201 useEntry->onlyNames.append(fcodeYYtext); 02202 } 02203 YY_BREAK 02204 case 9: 02205 /* rule 9 can match eol */ 02206 YY_RULE_SETUP 02207 #line 666 "fortrancode.l" 02208 { 02209 unput(*fcodeYYtext); 02210 yy_pop_state(); 02211 } 02212 YY_BREAK 02213 /*-------- fortran module -----------------------------------------*/ 02214 case 10: 02215 /* rule 10 can match eol */ 02216 YY_RULE_SETUP 02217 #line 672 "fortrancode.l" 02218 { // 02219 startUseScope(); 02220 startFontClass("keyword"); 02221 codifyLines(fcodeYYtext); 02222 endFontClass(); 02223 yy_push_state(YY_START); 02224 BEGIN(ClassName); 02225 if (!strcmp(fcodeYYtext,"module")) currentModule="module"; 02226 } 02227 YY_BREAK 02228 case 11: 02229 YY_RULE_SETUP 02230 #line 681 "fortrancode.l" 02231 { 02232 if (currentModule == "module") currentModule=fcodeYYtext; 02233 generateLink(*g_code,fcodeYYtext); 02234 yy_pop_state(); 02235 } 02236 YY_BREAK 02237 case 12: 02238 /* rule 12 can match eol */ 02239 YY_RULE_SETUP 02240 #line 686 "fortrancode.l" 02241 { // interface may be without name 02242 yy_pop_state(); 02243 REJECT; 02244 } 02245 YY_BREAK 02246 case 13: 02247 YY_RULE_SETUP 02248 #line 690 "fortrancode.l" 02249 { // just reset currentModule, rest is done in following rule 02250 currentModule=0; 02251 REJECT; 02252 } 02253 YY_BREAK 02254 case 14: 02255 YY_RULE_SETUP 02256 #line 694 "fortrancode.l" 02257 { // 02258 endUseScope(); 02259 startFontClass("keyword"); 02260 codifyLines(fcodeYYtext); 02261 endFontClass(); 02262 } 02263 YY_BREAK 02264 /*-------- subprog definition -------------------------------------*/ 02265 case 15: 02266 /* rule 15 can match eol */ 02267 YY_RULE_SETUP 02268 #line 702 "fortrancode.l" 02269 { // TYPE_SPEC is for old function style function result 02270 startFontClass("keyword"); 02271 codifyLines(fcodeYYtext); 02272 endFontClass(); 02273 } 02274 YY_BREAK 02275 case 16: 02276 YY_RULE_SETUP 02277 #line 707 "fortrancode.l" 02278 { // Fortran subroutine or function found 02279 startFontClass("keyword"); 02280 codifyLines(fcodeYYtext); 02281 endFontClass(); 02282 yy_push_state(YY_START); 02283 BEGIN(Subprog); 02284 } 02285 YY_BREAK 02286 case 17: 02287 YY_RULE_SETUP 02288 #line 714 "fortrancode.l" 02289 { // subroutine/function name 02290 //cout << "===> start procedure " << fcodeYYtext << endl; 02291 startUseScope(); 02292 generateLink(*g_code,fcodeYYtext); 02293 } 02294 YY_BREAK 02295 case 18: 02296 YY_RULE_SETUP 02297 #line 719 "fortrancode.l" 02298 { // ignore rest of line 02299 codifyLines(fcodeYYtext); 02300 } 02301 YY_BREAK 02302 case 19: 02303 /* rule 19 can match eol */ 02304 YY_RULE_SETUP 02305 #line 722 "fortrancode.l" 02306 { codifyLines(fcodeYYtext); 02307 yy_pop_state(); 02308 } 02309 YY_BREAK 02310 case 20: 02311 YY_RULE_SETUP 02312 #line 725 "fortrancode.l" 02313 { // Fortran subroutine or function ends 02314 //cout << "===> end function " << fcodeYYtext << endl; 02315 endUseScope(); 02316 startFontClass("keyword"); 02317 codifyLines(fcodeYYtext); 02318 endFontClass(); 02319 } 02320 YY_BREAK 02321 /*-------- variable declaration ----------------------------------*/ 02322 case 21: 02323 YY_RULE_SETUP 02324 #line 733 "fortrancode.l" 02325 { 02326 yy_push_state(YY_START); 02327 BEGIN(TypeDecl); 02328 startFontClass("keywordtype"); 02329 g_code->codify(fcodeYYtext); 02330 endFontClass(); 02331 } 02332 YY_BREAK 02333 case 22: 02334 YY_RULE_SETUP 02335 #line 740 "fortrancode.l" 02336 { // link type 02337 g_insideBody=TRUE; 02338 generateLink(*g_code,fcodeYYtext); 02339 g_insideBody=FALSE; 02340 } 02341 YY_BREAK 02342 case 23: 02343 YY_RULE_SETUP 02344 #line 745 "fortrancode.l" 02345 { 02346 BEGIN(Declaration); 02347 startFontClass("keywordtype"); 02348 g_code->codify(fcodeYYtext); 02349 endFontClass(); 02350 } 02351 YY_BREAK 02352 case 24: 02353 /* rule 24 can match eol */ 02354 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ 02355 (yy_c_buf_p) = yy_cp -= 1; 02356 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ 02357 YY_RULE_SETUP 02358 #line 751 "fortrancode.l" 02359 { 02360 yy_push_state(YY_START); 02361 BEGIN(Declaration); 02362 startFontClass("keywordtype"); 02363 g_code->codify(fcodeYYtext); 02364 endFontClass(); 02365 } 02366 YY_BREAK 02367 case 25: 02368 /* rule 25 can match eol */ 02369 YY_RULE_SETUP 02370 #line 758 "fortrancode.l" 02371 { 02372 startFontClass("keywordtype"); 02373 g_code->codify(fcodeYYtext); 02374 endFontClass(); 02375 } 02376 YY_BREAK 02377 case 26: 02378 /* rule 26 can match eol */ 02379 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ 02380 (yy_c_buf_p) = yy_cp -= 1; 02381 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ 02382 YY_RULE_SETUP 02383 #line 763 "fortrancode.l" 02384 { //| variable deklaration 02385 startFontClass("keywordtype"); 02386 g_code->codify(fcodeYYtext); 02387 endFontClass(); 02388 } 02389 YY_BREAK 02390 case 27: 02391 YY_RULE_SETUP 02392 #line 768 "fortrancode.l" 02393 { // continuation line 02394 yy_push_state(YY_START); 02395 BEGIN(DeclContLine); 02396 } 02397 YY_BREAK 02398 case 28: 02399 /* rule 28 can match eol */ 02400 YY_RULE_SETUP 02401 #line 772 "fortrancode.l" 02402 { // declaration not yet finished 02403 codifyLines(fcodeYYtext); 02404 yy_pop_state(); 02405 } 02406 YY_BREAK 02407 case 29: 02408 /* rule 29 can match eol */ 02409 YY_RULE_SETUP 02410 #line 776 "fortrancode.l" 02411 { // end declaration line 02412 codifyLines(fcodeYYtext); 02413 yy_pop_state(); 02414 } 02415 YY_BREAK 02416 /*-------- subprog calls -----------------------------------------*/ 02417 case 30: 02418 YY_RULE_SETUP 02419 #line 783 "fortrancode.l" 02420 { 02421 codifyLines(fcodeYYtext); 02422 yy_push_state(YY_START); 02423 BEGIN(SubCall); 02424 } 02425 YY_BREAK 02426 case 31: 02427 YY_RULE_SETUP 02428 #line 788 "fortrancode.l" 02429 { // subroutine call 02430 g_insideBody=TRUE; 02431 generateLink(*g_code, fcodeYYtext); 02432 g_insideBody=FALSE; 02433 yy_pop_state(); 02434 } 02435 YY_BREAK 02436 case 32: 02437 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ 02438 (yy_c_buf_p) = yy_cp -= 1; 02439 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ 02440 YY_RULE_SETUP 02441 #line 794 "fortrancode.l" 02442 { // function call 02443 g_insideBody=TRUE; 02444 generateLink(*g_code, fcodeYYtext); 02445 g_insideBody=FALSE; 02446 } 02447 YY_BREAK 02448 /*-------- comments ---------------------------------------------------*/ 02449 case 33: 02450 /* rule 33 can match eol */ 02451 YY_RULE_SETUP 02452 #line 801 "fortrancode.l" 02453 { // start comment line or comment block 02454 yy_push_state(YY_START); 02455 BEGIN(DocBlock); 02456 docBlock=fcodeYYtext; 02457 } 02458 YY_BREAK 02459 case 34: 02460 YY_RULE_SETUP 02461 #line 807 "fortrancode.l" 02462 { // contents of current comment line 02463 docBlock+=fcodeYYtext; 02464 } 02465 YY_BREAK 02466 case 35: 02467 /* rule 35 can match eol */ 02468 YY_RULE_SETUP 02469 #line 810 "fortrancode.l" 02470 { //| comment block (next line is also comment line) 02471 docBlock+=fcodeYYtext; 02472 } 02473 YY_BREAK 02474 case 36: 02475 /* rule 36 can match eol */ 02476 YY_RULE_SETUP 02477 #line 813 "fortrancode.l" 02478 { // comment block ends at the end of this line 02479 docBlock+=fcodeYYtext; 02480 // remove special comment (default config) 02481 if (Config_getBool("STRIP_CODE_COMMENTS")) 02482 { 02483 g_yyLineNr+=((QCString)docBlock).contains('\n'); 02484 endCodeLine(); 02485 if (g_yyLineNr<g_inputLines) 02486 { 02487 startCodeLine(); 02488 } 02489 } 02490 else // do not remove comment 02491 { 02492 startFontClass("comment"); 02493 codifyLines(docBlock); 02494 endFontClass(); 02495 } 02496 yy_pop_state(); 02497 } 02498 YY_BREAK 02499 case 37: 02500 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ 02501 (yy_c_buf_p) = yy_cp -= 1; 02502 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ 02503 YY_RULE_SETUP 02504 #line 834 "fortrancode.l" 02505 { // normal comment 02506 if(YY_START == String) REJECT; // ignore in strings 02507 startFontClass("comment"); 02508 codifyLines(fcodeYYtext); 02509 endFontClass(); 02510 } 02511 YY_BREAK 02512 /*------ preprocessor --------------------------------------------*/ 02513 case 38: 02514 /* rule 38 can match eol */ 02515 YY_RULE_SETUP 02516 #line 841 "fortrancode.l" 02517 { startFontClass("preprocessor"); 02518 codifyLines(fcodeYYtext); 02519 endFontClass(); 02520 } 02521 YY_BREAK 02522 /*------ variable references? -------------------------------------*/ 02523 case 39: 02524 YY_RULE_SETUP 02525 #line 846 "fortrancode.l" 02526 { 02527 g_insideBody=TRUE; 02528 generateLink(*g_code, fcodeYYtext); 02529 g_insideBody=FALSE; 02530 } 02531 YY_BREAK 02532 /*------ strings --------------------------------------------------*/ 02533 case 40: 02534 YY_RULE_SETUP 02535 #line 852 "fortrancode.l" 02536 { str+=fcodeYYtext; /* ignore \\ */} 02537 YY_BREAK 02538 case 41: 02539 YY_RULE_SETUP 02540 #line 853 "fortrancode.l" 02541 { str+=fcodeYYtext; /* ignore \" */} 02542 YY_BREAK 02543 case 42: 02544 YY_RULE_SETUP 02545 #line 855 "fortrancode.l" 02546 { // string ends with next quote without previous backspace 02547 if(fcodeYYtext[0]!=stringStartSymbol) REJECT; // single vs double quote 02548 str+=fcodeYYtext; 02549 startFontClass("stringliteral"); 02550 codifyLines(str); 02551 endFontClass(); 02552 yy_pop_state(); 02553 } 02554 YY_BREAK 02555 case 43: 02556 YY_RULE_SETUP 02557 #line 863 "fortrancode.l" 02558 { /* string starts */ 02559 /* if(YY_START == StrIgnore) REJECT; // ignore in simple comments */ 02560 yy_push_state(YY_START); 02561 stringStartSymbol=fcodeYYtext[0]; // single or double quote 02562 BEGIN(String); 02563 str=fcodeYYtext; 02564 } 02565 YY_BREAK 02566 case 44: 02567 YY_RULE_SETUP 02568 #line 870 "fortrancode.l" 02569 {str+=fcodeYYtext;} 02570 YY_BREAK 02571 /*-----------------------------------------------------------------------------*/ 02572 case 45: 02573 /* rule 45 can match eol */ 02574 YY_RULE_SETUP 02575 #line 873 "fortrancode.l" 02576 { 02577 codifyLines(fcodeYYtext); 02578 } 02579 YY_BREAK 02580 case 46: 02581 YY_RULE_SETUP 02582 #line 876 "fortrancode.l" 02583 { 02584 g_code->codify(fcodeYYtext); 02585 } 02586 YY_BREAK 02587 case 47: 02588 YY_RULE_SETUP 02589 #line 879 "fortrancode.l" 02590 ECHO; 02591 YY_BREAK 02592 #line 2593 "<stdout>" 02593 case YY_STATE_EOF(INITIAL): 02594 case YY_STATE_EOF(Start): 02595 case YY_STATE_EOF(SubCall): 02596 case YY_STATE_EOF(FuncDef): 02597 case YY_STATE_EOF(ClassName): 02598 case YY_STATE_EOF(ClassVar): 02599 case YY_STATE_EOF(Subprog): 02600 case YY_STATE_EOF(DocBlock): 02601 case YY_STATE_EOF(Use): 02602 case YY_STATE_EOF(UseOnly): 02603 case YY_STATE_EOF(TypeDecl): 02604 case YY_STATE_EOF(Declaration): 02605 case YY_STATE_EOF(DeclContLine): 02606 case YY_STATE_EOF(Parameterlist): 02607 case YY_STATE_EOF(String): 02608 yyterminate(); 02609 02610 case YY_END_OF_BUFFER: 02611 { 02612 /* Amount of text matched not including the EOB char. */ 02613 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 02614 02615 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 02616 *yy_cp = (yy_hold_char); 02617 YY_RESTORE_YY_MORE_OFFSET 02618 02619 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 02620 { 02621 /* We're scanning a new file or input source. It's 02622 * possible that this happened because the user 02623 * just pointed fcodeYYin at a new source and called 02624 * fcodeYYlex(). If so, then we have to assure 02625 * consistency between YY_CURRENT_BUFFER and our 02626 * globals. Here is the right place to do so, because 02627 * this is the first action (other than possibly a 02628 * back-up) that will match for the new input source. 02629 */ 02630 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 02631 YY_CURRENT_BUFFER_LVALUE->yy_input_file = fcodeYYin; 02632 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 02633 } 02634 02635 /* Note that here we test for yy_c_buf_p "<=" to the position 02636 * of the first EOB in the buffer, since yy_c_buf_p will 02637 * already have been incremented past the NUL character 02638 * (since all states make transitions on EOB to the 02639 * end-of-buffer state). Contrast this with the test 02640 * in input(). 02641 */ 02642 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 02643 { /* This was really a NUL. */ 02644 yy_state_type yy_next_state; 02645 02646 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 02647 02648 yy_current_state = yy_get_previous_state( ); 02649 02650 /* Okay, we're now positioned to make the NUL 02651 * transition. We couldn't have 02652 * yy_get_previous_state() go ahead and do it 02653 * for us because it doesn't know how to deal 02654 * with the possibility of jamming (and we don't 02655 * want to build jamming into it because then it 02656 * will run more slowly). 02657 */ 02658 02659 yy_next_state = yy_try_NUL_trans( yy_current_state ); 02660 02661 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 02662 02663 if ( yy_next_state ) 02664 { 02665 /* Consume the NUL. */ 02666 yy_cp = ++(yy_c_buf_p); 02667 yy_current_state = yy_next_state; 02668 goto yy_match; 02669 } 02670 02671 else 02672 { 02673 yy_cp = (yy_c_buf_p); 02674 goto yy_find_action; 02675 } 02676 } 02677 02678 else switch ( yy_get_next_buffer( ) ) 02679 { 02680 case EOB_ACT_END_OF_FILE: 02681 { 02682 (yy_did_buffer_switch_on_eof) = 0; 02683 02684 if ( fcodeYYwrap( ) ) 02685 { 02686 /* Note: because we've taken care in 02687 * yy_get_next_buffer() to have set up 02688 * fcodeYYtext, we can now set up 02689 * yy_c_buf_p so that if some total 02690 * hoser (like flex itself) wants to 02691 * call the scanner after we return the 02692 * YY_NULL, it'll still work - another 02693 * YY_NULL will get returned. 02694 */ 02695 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 02696 02697 yy_act = YY_STATE_EOF(YY_START); 02698 goto do_action; 02699 } 02700 02701 else 02702 { 02703 if ( ! (yy_did_buffer_switch_on_eof) ) 02704 YY_NEW_FILE; 02705 } 02706 break; 02707 } 02708 02709 case EOB_ACT_CONTINUE_SCAN: 02710 (yy_c_buf_p) = 02711 (yytext_ptr) + yy_amount_of_matched_text; 02712 02713 yy_current_state = yy_get_previous_state( ); 02714 02715 yy_cp = (yy_c_buf_p); 02716 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 02717 goto yy_match; 02718 02719 case EOB_ACT_LAST_MATCH: 02720 (yy_c_buf_p) = 02721 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 02722 02723 yy_current_state = yy_get_previous_state( ); 02724 02725 yy_cp = (yy_c_buf_p); 02726 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 02727 goto yy_find_action; 02728 } 02729 break; 02730 } 02731 02732 default: 02733 YY_FATAL_ERROR( 02734 "fatal flex scanner internal error--no action found" ); 02735 } /* end of action switch */ 02736 } /* end of scanning one token */ 02737 } /* end of fcodeYYlex */ 02738 02739 /* yy_get_next_buffer - try to read in a new buffer 02740 * 02741 * Returns a code representing an action: 02742 * EOB_ACT_LAST_MATCH - 02743 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 02744 * EOB_ACT_END_OF_FILE - end of file 02745 */ 02746 static int yy_get_next_buffer (void) 02747 { 02748 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 02749 register char *source = (yytext_ptr); 02750 register int number_to_move, i; 02751 int ret_val; 02752 02753 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 02754 YY_FATAL_ERROR( 02755 "fatal flex scanner internal error--end of buffer missed" ); 02756 02757 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 02758 { /* Don't try to fill the buffer, so this is an EOF. */ 02759 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 02760 { 02761 /* We matched a single character, the EOB, so 02762 * treat this as a final EOF. 02763 */ 02764 return EOB_ACT_END_OF_FILE; 02765 } 02766 02767 else 02768 { 02769 /* We matched some text prior to the EOB, first 02770 * process it. 02771 */ 02772 return EOB_ACT_LAST_MATCH; 02773 } 02774 } 02775 02776 /* Try to read more data. */ 02777 02778 /* First move last chars to start of buffer. */ 02779 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 02780 02781 for ( i = 0; i < number_to_move; ++i ) 02782 *(dest++) = *(source++); 02783 02784 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 02785 /* don't do the read, it's not guaranteed to return an EOF, 02786 * just force an EOF 02787 */ 02788 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 02789 02790 else 02791 { 02792 int num_to_read = 02793 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 02794 02795 while ( num_to_read <= 0 ) 02796 { /* Not enough room in the buffer - grow it. */ 02797 02798 YY_FATAL_ERROR( 02799 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 02800 02801 } 02802 02803 if ( num_to_read > YY_READ_BUF_SIZE ) 02804 num_to_read = YY_READ_BUF_SIZE; 02805 02806 /* Read in more data. */ 02807 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 02808 (yy_n_chars), num_to_read ); 02809 02810 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02811 } 02812 02813 if ( (yy_n_chars) == 0 ) 02814 { 02815 if ( number_to_move == YY_MORE_ADJ ) 02816 { 02817 ret_val = EOB_ACT_END_OF_FILE; 02818 fcodeYYrestart(fcodeYYin ); 02819 } 02820 02821 else 02822 { 02823 ret_val = EOB_ACT_LAST_MATCH; 02824 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 02825 YY_BUFFER_EOF_PENDING; 02826 } 02827 } 02828 02829 else 02830 ret_val = EOB_ACT_CONTINUE_SCAN; 02831 02832 (yy_n_chars) += number_to_move; 02833 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 02834 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 02835 02836 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 02837 02838 return ret_val; 02839 } 02840 02841 /* yy_get_previous_state - get the state just before the EOB char was reached */ 02842 02843 static yy_state_type yy_get_previous_state (void) 02844 { 02845 register yy_state_type yy_current_state; 02846 register char *yy_cp; 02847 02848 yy_current_state = (yy_start); 02849 02850 (yy_state_ptr) = (yy_state_buf); 02851 *(yy_state_ptr)++ = yy_current_state; 02852 02853 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 02854 { 02855 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 02856 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02857 { 02858 yy_current_state = (int) yy_def[yy_current_state]; 02859 if ( yy_current_state >= 702 ) 02860 yy_c = yy_meta[(unsigned int) yy_c]; 02861 } 02862 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02863 *(yy_state_ptr)++ = yy_current_state; 02864 } 02865 02866 return yy_current_state; 02867 } 02868 02869 /* yy_try_NUL_trans - try to make a transition on the NUL character 02870 * 02871 * synopsis 02872 * next_state = yy_try_NUL_trans( current_state ); 02873 */ 02874 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 02875 { 02876 register int yy_is_jam; 02877 02878 register YY_CHAR yy_c = 1; 02879 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02880 { 02881 yy_current_state = (int) yy_def[yy_current_state]; 02882 if ( yy_current_state >= 702 ) 02883 yy_c = yy_meta[(unsigned int) yy_c]; 02884 } 02885 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02886 yy_is_jam = (yy_current_state == 701); 02887 if ( ! yy_is_jam ) 02888 *(yy_state_ptr)++ = yy_current_state; 02889 02890 return yy_is_jam ? 0 : yy_current_state; 02891 } 02892 02893 static void yyunput (int c, register char * yy_bp ) 02894 { 02895 register char *yy_cp; 02896 02897 yy_cp = (yy_c_buf_p); 02898 02899 /* undo effects of setting up fcodeYYtext */ 02900 *yy_cp = (yy_hold_char); 02901 02902 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02903 { /* need to shift things up to make room */ 02904 /* +2 for EOB chars. */ 02905 register int number_to_move = (yy_n_chars) + 2; 02906 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 02907 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 02908 register char *source = 02909 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 02910 02911 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 02912 *--dest = *--source; 02913 02914 yy_cp += (int) (dest - source); 02915 yy_bp += (int) (dest - source); 02916 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 02917 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 02918 02919 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02920 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 02921 } 02922 02923 *--yy_cp = (char) c; 02924 02925 (yytext_ptr) = yy_bp; 02926 (yy_hold_char) = *yy_cp; 02927 (yy_c_buf_p) = yy_cp; 02928 } 02929 02930 #ifndef YY_NO_INPUT 02931 #ifdef __cplusplus 02932 static int yyinput (void) 02933 #else 02934 static int input (void) 02935 #endif 02936 02937 { 02938 int c; 02939 02940 *(yy_c_buf_p) = (yy_hold_char); 02941 02942 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 02943 { 02944 /* yy_c_buf_p now points to the character we want to return. 02945 * If this occurs *before* the EOB characters, then it's a 02946 * valid NUL; if not, then we've hit the end of the buffer. 02947 */ 02948 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 02949 /* This was really a NUL. */ 02950 *(yy_c_buf_p) = '\0'; 02951 02952 else 02953 { /* need more input */ 02954 int offset = (yy_c_buf_p) - (yytext_ptr); 02955 ++(yy_c_buf_p); 02956 02957 switch ( yy_get_next_buffer( ) ) 02958 { 02959 case EOB_ACT_LAST_MATCH: 02960 /* This happens because yy_g_n_b() 02961 * sees that we've accumulated a 02962 * token and flags that we need to 02963 * try matching the token before 02964 * proceeding. But for input(), 02965 * there's no matching to consider. 02966 * So convert the EOB_ACT_LAST_MATCH 02967 * to EOB_ACT_END_OF_FILE. 02968 */ 02969 02970 /* Reset buffer status. */ 02971 fcodeYYrestart(fcodeYYin ); 02972 02973 /*FALLTHROUGH*/ 02974 02975 case EOB_ACT_END_OF_FILE: 02976 { 02977 if ( fcodeYYwrap( ) ) 02978 return 0; 02979 02980 if ( ! (yy_did_buffer_switch_on_eof) ) 02981 YY_NEW_FILE; 02982 #ifdef __cplusplus 02983 return yyinput(); 02984 #else 02985 return input(); 02986 #endif 02987 } 02988 02989 case EOB_ACT_CONTINUE_SCAN: 02990 (yy_c_buf_p) = (yytext_ptr) + offset; 02991 break; 02992 } 02993 } 02994 } 02995 02996 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 02997 *(yy_c_buf_p) = '\0'; /* preserve fcodeYYtext */ 02998 (yy_hold_char) = *++(yy_c_buf_p); 02999 03000 return c; 03001 } 03002 #endif /* ifndef YY_NO_INPUT */ 03003 03009 void fcodeYYrestart (FILE * input_file ) 03010 { 03011 03012 if ( ! YY_CURRENT_BUFFER ){ 03013 fcodeYYensure_buffer_stack (); 03014 YY_CURRENT_BUFFER_LVALUE = 03015 fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); 03016 } 03017 03018 fcodeYY_init_buffer(YY_CURRENT_BUFFER,input_file ); 03019 fcodeYY_load_buffer_state( ); 03020 } 03021 03026 void fcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 03027 { 03028 03029 /* TODO. We should be able to replace this entire function body 03030 * with 03031 * fcodeYYpop_buffer_state(); 03032 * fcodeYYpush_buffer_state(new_buffer); 03033 */ 03034 fcodeYYensure_buffer_stack (); 03035 if ( YY_CURRENT_BUFFER == new_buffer ) 03036 return; 03037 03038 if ( YY_CURRENT_BUFFER ) 03039 { 03040 /* Flush out information for old buffer. */ 03041 *(yy_c_buf_p) = (yy_hold_char); 03042 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 03043 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03044 } 03045 03046 YY_CURRENT_BUFFER_LVALUE = new_buffer; 03047 fcodeYY_load_buffer_state( ); 03048 03049 /* We don't actually know whether we did this switch during 03050 * EOF (fcodeYYwrap()) processing, but the only time this flag 03051 * is looked at is after fcodeYYwrap() is called, so it's safe 03052 * to go ahead and always set it. 03053 */ 03054 (yy_did_buffer_switch_on_eof) = 1; 03055 } 03056 03057 static void fcodeYY_load_buffer_state (void) 03058 { 03059 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 03060 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 03061 fcodeYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 03062 (yy_hold_char) = *(yy_c_buf_p); 03063 } 03064 03071 YY_BUFFER_STATE fcodeYY_create_buffer (FILE * file, int size ) 03072 { 03073 YY_BUFFER_STATE b; 03074 03075 b = (YY_BUFFER_STATE) fcodeYYalloc(sizeof( struct yy_buffer_state ) ); 03076 if ( ! b ) 03077 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_create_buffer()" ); 03078 03079 b->yy_buf_size = size; 03080 03081 /* yy_ch_buf has to be 2 characters longer than the size given because 03082 * we need to put in 2 end-of-buffer characters. 03083 */ 03084 b->yy_ch_buf = (char *) fcodeYYalloc(b->yy_buf_size + 2 ); 03085 if ( ! b->yy_ch_buf ) 03086 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_create_buffer()" ); 03087 03088 b->yy_is_our_buffer = 1; 03089 03090 fcodeYY_init_buffer(b,file ); 03091 03092 return b; 03093 } 03094 03099 void fcodeYY_delete_buffer (YY_BUFFER_STATE b ) 03100 { 03101 03102 if ( ! b ) 03103 return; 03104 03105 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 03106 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 03107 03108 if ( b->yy_is_our_buffer ) 03109 fcodeYYfree((void *) b->yy_ch_buf ); 03110 03111 fcodeYYfree((void *) b ); 03112 } 03113 03114 #ifndef __cplusplus 03115 extern int isatty (int ); 03116 #endif /* __cplusplus */ 03117 03118 /* Initializes or reinitializes a buffer. 03119 * This function is sometimes called more than once on the same buffer, 03120 * such as during a fcodeYYrestart() or at EOF. 03121 */ 03122 static void fcodeYY_init_buffer (YY_BUFFER_STATE b, FILE * file ) 03123 03124 { 03125 int oerrno = errno; 03126 03127 fcodeYY_flush_buffer(b ); 03128 03129 b->yy_input_file = file; 03130 b->yy_fill_buffer = 1; 03131 03132 /* If b is the current buffer, then fcodeYY_init_buffer was _probably_ 03133 * called from fcodeYYrestart() or through yy_get_next_buffer. 03134 * In that case, we don't want to reset the lineno or column. 03135 */ 03136 if (b != YY_CURRENT_BUFFER){ 03137 b->yy_bs_lineno = 1; 03138 b->yy_bs_column = 0; 03139 } 03140 03141 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 03142 03143 errno = oerrno; 03144 } 03145 03150 void fcodeYY_flush_buffer (YY_BUFFER_STATE b ) 03151 { 03152 if ( ! b ) 03153 return; 03154 03155 b->yy_n_chars = 0; 03156 03157 /* We always need two end-of-buffer characters. The first causes 03158 * a transition to the end-of-buffer state. The second causes 03159 * a jam in that state. 03160 */ 03161 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 03162 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 03163 03164 b->yy_buf_pos = &b->yy_ch_buf[0]; 03165 03166 b->yy_at_bol = 1; 03167 b->yy_buffer_status = YY_BUFFER_NEW; 03168 03169 if ( b == YY_CURRENT_BUFFER ) 03170 fcodeYY_load_buffer_state( ); 03171 } 03172 03179 void fcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ) 03180 { 03181 if (new_buffer == NULL) 03182 return; 03183 03184 fcodeYYensure_buffer_stack(); 03185 03186 /* This block is copied from fcodeYY_switch_to_buffer. */ 03187 if ( YY_CURRENT_BUFFER ) 03188 { 03189 /* Flush out information for old buffer. */ 03190 *(yy_c_buf_p) = (yy_hold_char); 03191 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 03192 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03193 } 03194 03195 /* Only push if top exists. Otherwise, replace top. */ 03196 if (YY_CURRENT_BUFFER) 03197 (yy_buffer_stack_top)++; 03198 YY_CURRENT_BUFFER_LVALUE = new_buffer; 03199 03200 /* copied from fcodeYY_switch_to_buffer. */ 03201 fcodeYY_load_buffer_state( ); 03202 (yy_did_buffer_switch_on_eof) = 1; 03203 } 03204 03209 void fcodeYYpop_buffer_state (void) 03210 { 03211 if (!YY_CURRENT_BUFFER) 03212 return; 03213 03214 fcodeYY_delete_buffer(YY_CURRENT_BUFFER ); 03215 YY_CURRENT_BUFFER_LVALUE = NULL; 03216 if ((yy_buffer_stack_top) > 0) 03217 --(yy_buffer_stack_top); 03218 03219 if (YY_CURRENT_BUFFER) { 03220 fcodeYY_load_buffer_state( ); 03221 (yy_did_buffer_switch_on_eof) = 1; 03222 } 03223 } 03224 03225 /* Allocates the stack if it does not exist. 03226 * Guarantees space for at least one push. 03227 */ 03228 static void fcodeYYensure_buffer_stack (void) 03229 { 03230 int num_to_alloc; 03231 03232 if (!(yy_buffer_stack)) { 03233 03234 /* First allocation is just for 2 elements, since we don't know if this 03235 * scanner will even need a stack. We use 2 instead of 1 to avoid an 03236 * immediate realloc on the next call. 03237 */ 03238 num_to_alloc = 1; 03239 (yy_buffer_stack) = (struct yy_buffer_state**)fcodeYYalloc 03240 (num_to_alloc * sizeof(struct yy_buffer_state*) 03241 ); 03242 03243 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 03244 03245 (yy_buffer_stack_max) = num_to_alloc; 03246 (yy_buffer_stack_top) = 0; 03247 return; 03248 } 03249 03250 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 03251 03252 /* Increase the buffer to prepare for a possible push. */ 03253 int grow_size = 8 /* arbitrary grow size */; 03254 03255 num_to_alloc = (yy_buffer_stack_max) + grow_size; 03256 (yy_buffer_stack) = (struct yy_buffer_state**)fcodeYYrealloc 03257 ((yy_buffer_stack), 03258 num_to_alloc * sizeof(struct yy_buffer_state*) 03259 ); 03260 03261 /* zero only the new slots.*/ 03262 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 03263 (yy_buffer_stack_max) = num_to_alloc; 03264 } 03265 } 03266 03273 YY_BUFFER_STATE fcodeYY_scan_buffer (char * base, yy_size_t size ) 03274 { 03275 YY_BUFFER_STATE b; 03276 03277 if ( size < 2 || 03278 base[size-2] != YY_END_OF_BUFFER_CHAR || 03279 base[size-1] != YY_END_OF_BUFFER_CHAR ) 03280 /* They forgot to leave room for the EOB's. */ 03281 return 0; 03282 03283 b = (YY_BUFFER_STATE) fcodeYYalloc(sizeof( struct yy_buffer_state ) ); 03284 if ( ! b ) 03285 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_scan_buffer()" ); 03286 03287 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 03288 b->yy_buf_pos = b->yy_ch_buf = base; 03289 b->yy_is_our_buffer = 0; 03290 b->yy_input_file = 0; 03291 b->yy_n_chars = b->yy_buf_size; 03292 b->yy_is_interactive = 0; 03293 b->yy_at_bol = 1; 03294 b->yy_fill_buffer = 0; 03295 b->yy_buffer_status = YY_BUFFER_NEW; 03296 03297 fcodeYY_switch_to_buffer(b ); 03298 03299 return b; 03300 } 03301 03310 YY_BUFFER_STATE fcodeYY_scan_string (yyconst char * yystr ) 03311 { 03312 03313 return fcodeYY_scan_bytes(yystr,strlen(yystr) ); 03314 } 03315 03323 YY_BUFFER_STATE fcodeYY_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 03324 { 03325 YY_BUFFER_STATE b; 03326 char *buf; 03327 yy_size_t n; 03328 int i; 03329 03330 /* Get memory for full buffer, including space for trailing EOB's. */ 03331 n = _yybytes_len + 2; 03332 buf = (char *) fcodeYYalloc(n ); 03333 if ( ! buf ) 03334 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_scan_bytes()" ); 03335 03336 for ( i = 0; i < _yybytes_len; ++i ) 03337 buf[i] = yybytes[i]; 03338 03339 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 03340 03341 b = fcodeYY_scan_buffer(buf,n ); 03342 if ( ! b ) 03343 YY_FATAL_ERROR( "bad buffer in fcodeYY_scan_bytes()" ); 03344 03345 /* It's okay to grow etc. this buffer, and we should throw it 03346 * away when we're done. 03347 */ 03348 b->yy_is_our_buffer = 1; 03349 03350 return b; 03351 } 03352 03353 static void yy_push_state (int new_state ) 03354 { 03355 if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) 03356 { 03357 yy_size_t new_size; 03358 03359 (yy_start_stack_depth) += YY_START_STACK_INCR; 03360 new_size = (yy_start_stack_depth) * sizeof( int ); 03361 03362 if ( ! (yy_start_stack) ) 03363 (yy_start_stack) = (int *) fcodeYYalloc(new_size ); 03364 03365 else 03366 (yy_start_stack) = (int *) fcodeYYrealloc((void *) (yy_start_stack),new_size ); 03367 03368 if ( ! (yy_start_stack) ) 03369 YY_FATAL_ERROR( 03370 "out of memory expanding start-condition stack" ); 03371 } 03372 03373 (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; 03374 03375 BEGIN(new_state); 03376 } 03377 03378 static void yy_pop_state (void) 03379 { 03380 if ( --(yy_start_stack_ptr) < 0 ) 03381 YY_FATAL_ERROR( "start-condition stack underflow" ); 03382 03383 BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); 03384 } 03385 03386 static int yy_top_state (void) 03387 { 03388 return (yy_start_stack)[(yy_start_stack_ptr) - 1]; 03389 } 03390 03391 #ifndef YY_EXIT_FAILURE 03392 #define YY_EXIT_FAILURE 2 03393 #endif 03394 03395 static void yy_fatal_error (yyconst char* msg ) 03396 { 03397 (void) fprintf( stderr, "%s\n", msg ); 03398 exit( YY_EXIT_FAILURE ); 03399 } 03400 03401 /* Redefine yyless() so it works in section 3 code. */ 03402 03403 #undef yyless 03404 #define yyless(n) \ 03405 do \ 03406 { \ 03407 /* Undo effects of setting up fcodeYYtext. */ \ 03408 int yyless_macro_arg = (n); \ 03409 YY_LESS_LINENO(yyless_macro_arg);\ 03410 fcodeYYtext[fcodeYYleng] = (yy_hold_char); \ 03411 (yy_c_buf_p) = fcodeYYtext + yyless_macro_arg; \ 03412 (yy_hold_char) = *(yy_c_buf_p); \ 03413 *(yy_c_buf_p) = '\0'; \ 03414 fcodeYYleng = yyless_macro_arg; \ 03415 } \ 03416 while ( 0 ) 03417 03418 /* Accessor methods (get/set functions) to struct members. */ 03419 03423 int fcodeYYget_lineno (void) 03424 { 03425 03426 return fcodeYYlineno; 03427 } 03428 03432 FILE *fcodeYYget_in (void) 03433 { 03434 return fcodeYYin; 03435 } 03436 03440 FILE *fcodeYYget_out (void) 03441 { 03442 return fcodeYYout; 03443 } 03444 03448 int fcodeYYget_leng (void) 03449 { 03450 return fcodeYYleng; 03451 } 03452 03457 char *fcodeYYget_text (void) 03458 { 03459 return fcodeYYtext; 03460 } 03461 03466 void fcodeYYset_lineno (int line_number ) 03467 { 03468 03469 fcodeYYlineno = line_number; 03470 } 03471 03478 void fcodeYYset_in (FILE * in_str ) 03479 { 03480 fcodeYYin = in_str ; 03481 } 03482 03483 void fcodeYYset_out (FILE * out_str ) 03484 { 03485 fcodeYYout = out_str ; 03486 } 03487 03488 int fcodeYYget_debug (void) 03489 { 03490 return fcodeYY_flex_debug; 03491 } 03492 03493 void fcodeYYset_debug (int bdebug ) 03494 { 03495 fcodeYY_flex_debug = bdebug ; 03496 } 03497 03498 static int yy_init_globals (void) 03499 { 03500 /* Initialization is the same as for the non-reentrant scanner. 03501 * This function is called from fcodeYYlex_destroy(), so don't allocate here. 03502 */ 03503 03504 (yy_buffer_stack) = 0; 03505 (yy_buffer_stack_top) = 0; 03506 (yy_buffer_stack_max) = 0; 03507 (yy_c_buf_p) = (char *) 0; 03508 (yy_init) = 0; 03509 (yy_start) = 0; 03510 03511 (yy_start_stack_ptr) = 0; 03512 (yy_start_stack_depth) = 0; 03513 (yy_start_stack) = NULL; 03514 03515 (yy_state_buf) = 0; 03516 (yy_state_ptr) = 0; 03517 (yy_full_match) = 0; 03518 (yy_lp) = 0; 03519 03520 /* Defined in main.c */ 03521 #ifdef YY_STDINIT 03522 fcodeYYin = stdin; 03523 fcodeYYout = stdout; 03524 #else 03525 fcodeYYin = (FILE *) 0; 03526 fcodeYYout = (FILE *) 0; 03527 #endif 03528 03529 /* For future reference: Set errno on error, since we are called by 03530 * fcodeYYlex_init() 03531 */ 03532 return 0; 03533 } 03534 03535 /* fcodeYYlex_destroy is for both reentrant and non-reentrant scanners. */ 03536 int fcodeYYlex_destroy (void) 03537 { 03538 03539 /* Pop the buffer stack, destroying each element. */ 03540 while(YY_CURRENT_BUFFER){ 03541 fcodeYY_delete_buffer(YY_CURRENT_BUFFER ); 03542 YY_CURRENT_BUFFER_LVALUE = NULL; 03543 fcodeYYpop_buffer_state(); 03544 } 03545 03546 /* Destroy the stack itself. */ 03547 fcodeYYfree((yy_buffer_stack) ); 03548 (yy_buffer_stack) = NULL; 03549 03550 /* Destroy the start condition stack. */ 03551 fcodeYYfree((yy_start_stack) ); 03552 (yy_start_stack) = NULL; 03553 03554 fcodeYYfree ( (yy_state_buf) ); 03555 (yy_state_buf) = NULL; 03556 03557 /* Reset the globals. This is important in a non-reentrant scanner so the next time 03558 * fcodeYYlex() is called, initialization will occur. */ 03559 yy_init_globals( ); 03560 03561 return 0; 03562 } 03563 03564 /* 03565 * Internal utility routines. 03566 */ 03567 03568 #ifndef yytext_ptr 03569 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 03570 { 03571 register int i; 03572 for ( i = 0; i < n; ++i ) 03573 s1[i] = s2[i]; 03574 } 03575 #endif 03576 03577 #ifdef YY_NEED_STRLEN 03578 static int yy_flex_strlen (yyconst char * s ) 03579 { 03580 register int n; 03581 for ( n = 0; s[n]; ++n ) 03582 ; 03583 03584 return n; 03585 } 03586 #endif 03587 03588 void *fcodeYYalloc (yy_size_t size ) 03589 { 03590 return (void *) malloc( size ); 03591 } 03592 03593 void *fcodeYYrealloc (void * ptr, yy_size_t size ) 03594 { 03595 /* The cast to (char *) in the following accommodates both 03596 * implementations that use char* generic pointers, and those 03597 * that use void* generic pointers. It works with the latter 03598 * because both ANSI C and C++ allow castless assignment from 03599 * any pointer type to void*, and deal with argument conversions 03600 * as though doing an assignment. 03601 */ 03602 return (void *) realloc( (char *) ptr, size ); 03603 } 03604 03605 void fcodeYYfree (void * ptr ) 03606 { 03607 free( (char *) ptr ); /* see fcodeYYrealloc() for (char *) cast */ 03608 } 03609 03610 #define YYTABLES_NAME "yytables" 03611 03612 #line 879 "fortrancode.l" 03613 03614 03615 03616 /*@ ---------------------------------------------------------------------------- 03617 */ 03618 03619 /*===================================================================*/ 03620 03621 void resetFortranCodeParserState() {} 03622 03623 void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s, 03624 bool exBlock, const char *exName,FileDef *fd, 03625 int startLine,int endLine,bool inlineFragment, 03626 MemberDef *memberDef) 03627 { 03628 //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); 03629 03630 // used parameters 03631 (void)memberDef; 03632 (void)className; 03633 03634 if (s.isEmpty()) return; 03635 g_code = &od; 03636 g_inputString = s; 03637 g_inputPosition = 0; 03638 g_currentFontClass = 0; 03639 g_needsTermination = FALSE; 03640 if (endLine!=-1) 03641 g_inputLines = endLine+1; 03642 else 03643 g_inputLines = countLines(); 03644 03645 if (startLine!=-1) 03646 g_yyLineNr = startLine; 03647 else 03648 g_yyLineNr = 1; 03649 03650 g_exampleBlock = exBlock; 03651 g_exampleName = exName; 03652 g_sourceFileDef = fd; 03653 if (exBlock && fd==0) 03654 { 03655 // create a dummy filedef for the example 03656 g_sourceFileDef = new FileDef("",exName); 03657 } 03658 if (g_sourceFileDef) 03659 { 03660 setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); 03661 } 03662 g_currentDefinition = 0; 03663 g_currentMemberDef = 0; 03664 if (!g_exampleName.isEmpty()) 03665 { 03666 g_exampleFile = convertNameToFile(g_exampleName+"-example"); 03667 } 03668 g_includeCodeFragment = inlineFragment; 03669 startCodeLine(); 03670 g_parmName.resize(0); 03671 g_parmType.resize(0); 03672 fcodeYYrestart( fcodeYYin ); 03673 BEGIN( Start ); 03674 fcodeYYlex(); 03675 if (g_needsTermination) 03676 { 03677 endFontClass(); 03678 g_code->endCodeLine(); 03679 } 03680 if (exBlock && g_sourceFileDef) 03681 { 03682 // delete the temporary file definition used for this example 03683 delete g_sourceFileDef; 03684 g_sourceFileDef=0; 03685 } 03686 return; 03687 } 03688 03689 #if !defined(YY_FLEX_SUBMINOR_VERSION) 03690 extern "C" { // some bogus code to keep the compiler happy 03691 void fcodeYYdummy() { yy_flex_realloc(0,0); } 03692 } 03693 #elif YY_FLEX_SUBMINOR_VERSION<33 03694 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!" 03695 #else 03696 extern "C" { // some bogus code to keep the compiler happy 03697 void fcodeYYdummy() { yy_top_state(); } 03698 } 03699 #endif 03700 03701