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 fscanYYrestart(fscanYYin ) 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 fscanYYleng; 00155 00156 extern FILE *fscanYYin, *fscanYYout; 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 fscanYYtext. */ \ 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 fscanYYtext 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 fscanYYrestart()), so that the user can continue scanning by 00248 * just pointing fscanYYin 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 fscanYYtext is formed. */ 00276 static char yy_hold_char; 00277 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00278 int fscanYYleng; 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 fscanYYwrap()'s to do buffer switches 00286 * instead of setting up a fresh fscanYYin. A bit of a hack ... 00287 */ 00288 static int yy_did_buffer_switch_on_eof; 00289 00290 void fscanYYrestart (FILE *input_file ); 00291 void fscanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00292 YY_BUFFER_STATE fscanYY_create_buffer (FILE *file,int size ); 00293 void fscanYY_delete_buffer (YY_BUFFER_STATE b ); 00294 void fscanYY_flush_buffer (YY_BUFFER_STATE b ); 00295 void fscanYYpush_buffer_state (YY_BUFFER_STATE new_buffer ); 00296 void fscanYYpop_buffer_state (void ); 00297 00298 static void fscanYYensure_buffer_stack (void ); 00299 static void fscanYY_load_buffer_state (void ); 00300 static void fscanYY_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00301 00302 #define YY_FLUSH_BUFFER fscanYY_flush_buffer(YY_CURRENT_BUFFER ) 00303 00304 YY_BUFFER_STATE fscanYY_scan_buffer (char *base,yy_size_t size ); 00305 YY_BUFFER_STATE fscanYY_scan_string (yyconst char *yy_str ); 00306 YY_BUFFER_STATE fscanYY_scan_bytes (yyconst char *bytes,int len ); 00307 00308 void *fscanYYalloc (yy_size_t ); 00309 void *fscanYYrealloc (void *,yy_size_t ); 00310 void fscanYYfree (void * ); 00311 00312 #define yy_new_buffer fscanYY_create_buffer 00313 00314 #define yy_set_interactive(is_interactive) \ 00315 { \ 00316 if ( ! YY_CURRENT_BUFFER ){ \ 00317 fscanYYensure_buffer_stack (); \ 00318 YY_CURRENT_BUFFER_LVALUE = \ 00319 fscanYY_create_buffer(fscanYYin,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 fscanYYensure_buffer_stack (); \ 00328 YY_CURRENT_BUFFER_LVALUE = \ 00329 fscanYY_create_buffer(fscanYYin,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 fscanYYwrap(n) 1 00339 #define YY_SKIP_YYWRAP 00340 00341 typedef unsigned char YY_CHAR; 00342 00343 FILE *fscanYYin = (FILE *) 0, *fscanYYout = (FILE *) 0; 00344 00345 typedef int yy_state_type; 00346 00347 extern int fscanYYlineno; 00348 00349 int fscanYYlineno = 1; 00350 00351 extern char *fscanYYtext; 00352 #define yytext_ptr fscanYYtext 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 fscanYYtext. 00361 */ 00362 #define YY_DO_BEFORE_ACTION \ 00363 (yytext_ptr) = yy_bp; \ 00364 fscanYYleng = (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 70 00370 #define YY_END_OF_BUFFER 71 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[1444] = 00379 { 0, 00380 57, 57, 39, 39, 43, 43, 65, 65, 63, 63, 00381 71, 69, 70, 68, 70, 69, 70, 6, 69, 70, 00382 69, 70, 69, 70, 57, 69, 70, 58, 69, 70, 00383 69, 70, 60, 68, 70, 69, 70, 69, 70, 69, 00384 70, 37, 69, 70, 37, 69, 70, 37, 69, 70, 00385 37, 69, 70, 37, 69, 70, 37, 69, 70, 37, 00386 69, 70, 37, 69, 70, 37, 69, 70, 37, 69, 00387 70, 37, 69, 70, 37, 69, 70, 37, 69, 70, 00388 37, 69, 70, 69, 70, 34, 37, 69, 70, 34, 00389 37, 69, 70, 34, 37, 69, 70, 34, 37, 69, 00390 00391 70, 34, 37, 69, 70, 34, 37, 69, 70, 34, 00392 37, 69, 70, 34, 37, 69, 70, 34, 37, 69, 00393 70, 34, 37, 69, 70, 34, 37, 69, 70, 34, 00394 37, 69, 70, 34, 37, 69, 70, 34, 37, 69, 00395 70, 37, 69, 70, 37, 69, 70, 37, 69, 70, 00396 37, 69, 70, 37, 69, 70, 34, 37, 69, 70, 00397 34, 37, 69, 70, 34, 37, 69, 70, 34, 37, 00398 69, 70, 34, 37, 69, 70, 25, 69, 70, 37, 00399 69, 70, 34, 37, 69, 70, 42, 69, 70, 39, 00400 42, 69, 70, 42, 69, 70, 6, 42, 69, 70, 00401 00402 42, 69, 70, 38, 42, 69, 70, 42, 69, 70, 00403 42, 69, 70, 42, 69, 70, 42, 69, 70, 42, 00404 69, 70, 42, 69, 70, 42, 69, 70, 42, 69, 00405 70, 42, 69, 70, 42, 69, 70, 43, 69, 70, 00406 48, 68, 70, 69, 70, 44, 69, 70, 69, 70, 00407 46, 69, 70, 47, 69, 70, 54, 69, 70, 54, 00408 69, 70, 53, 68, 70, 53, 54, 69, 70, 6, 00409 54, 69, 70, 54, 69, 70, 49, 54, 69, 70, 00410 52, 54, 69, 70, 54, 69, 70, 51, 69, 70, 00411 51, 69, 70, 6, 51, 69, 70, 51, 69, 70, 00412 00413 50, 51, 69, 70, 51, 69, 70, 30, 69, 70, 00414 30, 69, 70, 37, 69, 70, 37, 69, 70, 37, 00415 69, 70, 37, 69, 70, 37, 69, 70, 37, 69, 00416 70, 37, 69, 70, 37, 69, 70, 69, 70, 34, 00417 37, 69, 70, 34, 37, 69, 70, 34, 37, 69, 00418 70, 34, 37, 69, 70, 34, 37, 69, 70, 34, 00419 37, 69, 70, 34, 37, 69, 70, 34, 37, 69, 00420 70, 22, 69, 70, 22, 69, 70, 22, 69, 70, 00421 6, 22, 69, 70, 22, 69, 70, 22, 69, 70, 00422 22, 69, 70, 22, 69, 70, 22, 69, 70, 22, 00423 00424 69, 70, 22, 69, 70, 22, 69, 70, 22, 69, 00425 70, 22, 69, 70, 22, 69, 70, 22, 69, 70, 00426 9, 69, 70, 8, 68, 70, 9, 69, 70, 6, 00427 9, 69, 70, 9, 69, 70, 9, 69, 70, 5, 00428 69, 70, 5, 69, 70, 4, 5, 6, 69, 70, 00429 5, 69, 70, 5, 69, 70, 16, 68, 70, 11, 00430 69, 70, 69, 70, 69, 70, 15, 69, 70, 14, 00431 69, 70, 21, 68, 70, 20, 69, 70, 65, 69, 00432 70, 67, 68, 70, 65, 69, 70, 6, 65, 69, 00433 70, 65, 69, 70, 65, 69, 70, 63, 69, 70, 00434 00435 63, 69, 70, 6, 63, 69, 70, 63, 69, 70, 00436 63, 69, 70, 7, 1, 3, 2, 57, 58, 58, 00437 58, 60, 59, 64, 37, 37, 37, 37, 37, 37, 00438 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 00439 37, 37, 37, 37, 37, 37, 37, 37, 34, 34, 00440 34, 34, 34, 37, 34, 37, 34, 37, 34, 37, 00441 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00442 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00443 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00444 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00445 00446 37, 37, 37, 37, 37, 34, 37, 34, 37, 34, 00447 37, 34, 37, 34, 37, 25, 25, 25, 37, 37, 00448 34, 37, 34, 37, 39, 38, 38, 41, 43, 46, 00449 47, 62, 44, 44, 44, 45, 46, 52, 52, 30, 00450 30, 30, 30, 30, 37, 37, 37, 37, 37, 37, 00451 37, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00452 34, 37, 34, 37, 34, 37, 34, 37, 8, 1, 00453 8, 11, 12, 11, 11, 14, 15, 15, 15, 14, 00454 20, 20, 20, 65, 7, 65, 65, 3, 65, 2, 00455 65, 63, 7, 63, 63, 3, 63, 2, 63, 37, 00456 00457 37, 37, 37, 37, 32, 37, 37, 37, 37, 37, 00458 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 00459 37, 37, 34, 34, 34, 34, 34, 34, 34, 37, 00460 34, 37, 34, 37, 34, 37, 34, 37, 32, 34, 00461 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00462 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00463 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00464 37, 34, 37, 24, 37, 37, 37, 37, 24, 34, 00465 37, 34, 37, 34, 37, 34, 37, 37, 37, 34, 00466 37, 34, 37, 30, 30, 37, 37, 37, 37, 37, 00467 00468 37, 37, 37, 34, 37, 34, 37, 34, 37, 34, 00469 37, 34, 37, 34, 37, 34, 37, 34, 37, 18, 00470 66, 66, 37, 37, 37, 37, 37, 32, 32, 32, 00471 37, 32, 37, 32, 37, 37, 37, 37, 37, 37, 00472 37, 37, 37, 37, 37, 37,16439, 37, 37,16419, 00473 16420, 37, 37, 37, 10, 34, 34, 34, 34, 37, 00474 34, 37, 34, 37, 34, 37, 34, 37, 32, 32, 00475 34, 37, 32, 32, 34, 37, 32, 34, 37, 34, 00476 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00477 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00478 00479 37,16439, 34, 37, 34, 37,16419,16420, 34, 37, 00480 34, 37, 34, 37, 10, 24, 24, 24, 37, 24, 00481 37, 24, 37, 37, 37, 37, 24, 24, 34, 37, 00482 24, 24, 34, 37, 24, 34, 37, 34, 37, 34, 00483 37, 34, 37, 37, 37, 34, 37, 34, 37, 40, 00484 30, 30, 37, 37, 37, 37, 37, 37, 37, 34, 00485 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00486 37, 34, 37, 18, 18,16439, 37, 37, 37, 37, 00487 37, 32, 32, 37, 37, 37, 37, 37, 37, 37, 00488 37, 37, 37, 37, 33,16439, 33, 37, 37, 37, 00489 00490 37, 37, 34, 34, 34, 34, 37, 34, 37, 34, 00491 37, 34, 37, 34, 37, 32, 32, 32, 34, 34, 00492 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00493 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00494 37, 34, 37, 33,16439, 34, 37, 34, 37, 34, 00495 37, 34, 37, 34, 37, 24, 24, 37, 37, 28, 00496 24, 24, 24, 34, 34, 37, 34, 37, 28, 37, 00497 37, 34, 37, 34, 37, 30, 30, 37, 37, 37, 00498 37, 37, 33, 34, 37, 34, 37, 34, 37, 34, 00499 37, 34, 37, 33, 18,16439, 13, 37, 37, 37, 00500 00501 37, 37, 32, 32, 37, 37, 37, 37, 37, 37, 00502 37, 37, 37, 37, 37,16419,16420,16439,16439,16439, 00503 37, 37, 37, 8227, 8228, 37, 34, 34, 34, 34, 00504 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00505 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00506 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00507 37, 34, 37,16419,16420,16439, 34,16439, 34, 37, 00508 34, 37, 34, 37, 34, 37, 24, 24, 23, 37, 00509 37, 23, 34, 37, 34, 37, 37, 37,16419,16420, 00510 34, 37, 34, 37,16419,16420, 30, 29, 30, 37, 00511 00512 37, 37, 37, 37, 34, 37, 34, 37, 34, 37, 00513 34, 37, 34, 37, 34, 18,16439,16439, 37, 37, 00514 37, 32, 32, 37, 37, 37, 37, 37, 33,16439, 00515 37, 37, 8227, 8227, 37, 34, 34, 34, 34, 37, 00516 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00517 34, 37, 34, 37, 34, 37, 34, 37, 34, 37, 00518 34, 37, 24, 24, 37, 34, 37, 37,16419,16420, 00519 27, 34, 37,16419,16420, 37, 34, 37, 18,16439, 00520 37, 37, 37, 32, 32, 37, 37, 37, 37, 37, 00521 61, 37, 34, 34, 34, 34, 37, 34, 37, 34, 00522 00523 37, 34, 37, 34, 37, 34, 37, 34, 37, 34, 00524 37, 34, 37, 61, 34, 37, 24, 24, 23, 23, 00525 26, 37, 31, 34, 37, 18, 37, 37,16439, 37, 00526 16419,16420, 32, 32, 56, 37, 37, 61, 61, 37, 00527 34, 34, 34, 34, 37, 34, 37,16439, 34, 37, 00528 16419,16420, 56, 17, 34, 37, 34, 37, 34, 37, 00529 61, 61, 34, 37, 24, 24, 37, 31, 34, 37, 00530 16439, 18, 37, 33,16439, 32, 32,16419,16420, 37, 00531 37, 17, 34, 34, 34, 37, 33,16439, 34,16419, 00532 16420, 34, 37, 34, 37, 24, 24, 33, 33,16439, 00533 00534 18,16439,16439,16439, 32, 32, 37, 37,16439, 34, 00535 16439, 17, 34, 37, 34, 37, 28, 34,16439,16439, 00536 18,16439, 32, 32, 37, 37, 17, 17, 34, 37, 00537 34, 37,16439, 18, 32, 8247, 37, 8247, 34, 37, 00538 18, 17, 19 00539 } ; 00540 00541 static yyconst flex_int16_t yy_accept[1196] = 00542 { 0, 00543 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 00544 3, 3, 3, 3, 3, 3, 3, 4, 5, 6, 00545 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 00546 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 00547 7, 8, 9, 10, 11, 11, 11, 12, 14, 16, 00548 18, 21, 23, 25, 28, 31, 33, 36, 38, 40, 00549 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 00550 72, 75, 78, 81, 84, 86, 90, 94, 98, 102, 00551 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 00552 145, 148, 151, 154, 157, 161, 165, 169, 173, 177, 00553 00554 180, 183, 187, 190, 194, 197, 201, 204, 208, 211, 00555 214, 217, 220, 223, 226, 229, 232, 235, 238, 241, 00556 244, 246, 249, 251, 254, 257, 260, 263, 266, 270, 00557 274, 277, 281, 285, 288, 291, 294, 298, 301, 305, 00558 308, 311, 314, 317, 320, 323, 326, 329, 332, 335, 00559 338, 340, 344, 348, 352, 356, 360, 364, 368, 372, 00560 375, 378, 381, 385, 388, 391, 394, 397, 400, 403, 00561 406, 409, 412, 415, 418, 421, 424, 427, 430, 434, 00562 437, 440, 443, 446, 451, 454, 457, 460, 463, 465, 00563 467, 470, 473, 476, 479, 482, 485, 488, 492, 495, 00564 00565 498, 501, 504, 508, 511, 514, 515, 515, 516, 517, 00566 518, 519, 520, 521, 522, 522, 523, 523, 523, 524, 00567 524, 524, 524, 525, 526, 527, 528, 529, 530, 531, 00568 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 00569 542, 543, 544, 545, 546, 547, 548, 549, 549, 550, 00570 551, 552, 553, 553, 555, 555, 557, 559, 561, 563, 00571 565, 567, 569, 571, 573, 575, 577, 579, 581, 583, 00572 585, 587, 589, 591, 593, 595, 597, 599, 601, 602, 00573 603, 604, 605, 606, 608, 610, 612, 614, 616, 617, 00574 618, 619, 620, 621, 623, 625, 626, 627, 628, 629, 00575 00576 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 00577 629, 630, 630, 631, 632, 633, 634, 635, 636, 636, 00578 637, 638, 638, 639, 640, 641, 642, 643, 644, 645, 00579 646, 647, 648, 649, 650, 651, 652, 653, 653, 655, 00580 657, 659, 661, 663, 665, 667, 669, 669, 669, 669, 00581 669, 669, 669, 669, 669, 669, 669, 669, 670, 672, 00582 673, 674, 675, 676, 676, 676, 676, 677, 678, 679, 00583 680, 681, 682, 683, 684, 685, 685, 685, 687, 688, 00584 690, 692, 693, 695, 696, 698, 700, 701, 702, 703, 00585 704, 705, 707, 708, 709, 710, 711, 712, 713, 714, 00586 00587 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 00588 725, 726, 727, 728, 728, 729, 731, 733, 735, 737, 00589 739, 742, 744, 746, 748, 750, 752, 754, 756, 758, 00590 760, 762, 764, 766, 768, 770, 772, 774, 776, 777, 00591 778, 779, 782, 784, 786, 788, 789, 790, 792, 794, 00592 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 00593 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 00594 804, 806, 808, 810, 812, 814, 816, 818, 820, 820, 00595 820, 820, 821, 821, 821, 821, 821, 821, 821, 821, 00596 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 00597 00598 832, 834, 836, 837, 838, 839, 840, 841, 842, 843, 00599 844, 845, 846, 848, 849, 852, 853, 854, 855, 856, 00600 857, 858, 859, 861, 863, 865, 867, 869, 870, 873, 00601 874, 877, 880, 882, 884, 886, 888, 890, 892, 894, 00602 896, 898, 900, 903, 905, 909, 911, 913, 915, 916, 00603 917, 918, 920, 922, 924, 925, 926, 927, 928, 931, 00604 932, 935, 938, 940, 942, 944, 945, 946, 948, 950, 00605 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 00606 951, 951, 952, 953, 954, 955, 956, 956, 957, 958, 00607 959, 960, 962, 964, 966, 966, 968, 970, 972, 974, 00608 00609 974, 974, 974, 975, 976, 976, 976, 976, 976, 977, 00610 977, 977, 977, 978, 979, 980, 981, 982, 983, 984, 00611 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 00612 995, 997, 997, 997, 998, 999, 1000, 1001, 1001, 1001, 00613 1002, 1003, 1003, 1003, 1004, 1005, 1006, 1008, 1010, 1012, 00614 1014, 1016, 1017, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 00615 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1046, 1048, 00616 1050, 1052, 1052, 1054, 1056, 1056, 1056, 1057, 1058, 1059, 00617 1060, 1061, 1061, 1062, 1063, 1065, 1067, 1069, 1070, 1071, 00618 1072, 1074, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 00619 00620 1076, 1076, 1076, 1076, 1077, 1078, 1079, 1080, 1081, 1081, 00621 1082, 1083, 1084, 1084, 1084, 1084, 1084, 1086, 1088, 1090, 00622 1092, 1094, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 00623 1096, 1096, 1096, 1096, 1097, 1097, 1097, 1097, 1097, 1097, 00624 1097, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 00625 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 00626 1118, 1119, 1119, 1120, 1120, 1121, 1122, 1123, 1124, 1125, 00627 1126, 1127, 1127, 1128, 1129, 1130, 1132, 1134, 1136, 1138, 00628 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, 00629 1160, 1162, 1166, 1167, 1167, 1169, 1171, 1173, 1175, 1177, 00630 00631 1177, 1178, 1179, 1181, 1182, 1182, 1182, 1185, 1187, 1188, 00632 1191, 1193, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 00633 1197, 1197, 1198, 1200, 1201, 1202, 1203, 1203, 1204, 1205, 00634 1205, 1205, 1205, 1205, 1205, 1205, 1207, 1209, 1211, 1213, 00635 1215, 1215, 1215, 1216, 1216, 1216, 1216, 1216, 1217, 1217, 00636 1217, 1217, 1217, 1217, 1218, 1218, 1219, 1219, 1219, 1219, 00637 1219, 1220, 1221, 1222, 1222, 1223, 1224, 1225, 1226, 1226, 00638 1226, 1227, 1228, 1229, 1231, 1232, 1233, 1233, 1233, 1234, 00639 1235, 1236, 1237, 1238, 1239, 1241, 1243, 1245, 1245, 1247, 00640 1249, 1249, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1261, 00641 00642 1261, 1263, 1264, 1265, 1266, 1266, 1266, 1268, 1271, 1271, 00643 1272, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 00644 1276, 1277, 1277, 1277, 1279, 1279, 1279, 1279, 1280, 1280, 00645 1280, 1280, 1281, 1281, 1281, 1281, 1282, 1283, 1284, 1284, 00646 1285, 1286, 1287, 1287, 1287, 1287, 1288, 1289, 1290, 1291, 00647 1291, 1292, 1293, 1294, 1295, 1296, 1298, 1300, 1302, 1304, 00648 1304, 1304, 1304, 1306, 1308, 1310, 1312, 1314, 1314, 1315, 00649 1317, 1318, 1319, 1320, 1320, 1320, 1321, 1321, 1322, 1322, 00650 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1323, 1323, 1324, 00651 1326, 1326, 1326, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 00652 00653 1330, 1333, 1333, 1334, 1335, 1336, 1336, 1336, 1337, 1338, 00654 1339, 1340, 1341, 1342, 1343, 1344, 1346, 1349, 1353, 1354, 00655 1354, 1354, 1357, 1359, 1361, 1362, 1363, 1365, 1366, 1367, 00656 1367, 1367, 1367, 1367, 1367, 1367, 1368, 1368, 1369, 1371, 00657 1372, 1372, 1373, 1373, 1373, 1373, 1373, 1374, 1376, 1376, 00658 1376, 1376, 1376, 1376, 1377, 1378, 1378, 1380, 1380, 1380, 00659 1381, 1382, 1384, 1385, 1387, 1389, 1389, 1389, 1389, 1389, 00660 1392, 1392, 1392, 1392, 1394, 1396, 1397, 1398, 1398, 1398, 00661 1398, 1398, 1398, 1398, 1398, 1398, 1399, 1399, 1399, 1399, 00662 1400, 1400, 1401, 1401, 1401, 1401, 1402, 1402, 1402, 1402, 00663 00664 1403, 1403, 1404, 1404, 1404, 1405, 1405, 1405, 1406, 1407, 00665 1407, 1407, 1408, 1409, 1410, 1410, 1412, 1412, 1412, 1412, 00666 1413, 1415, 1417, 1417, 1418, 1418, 1418, 1418, 1418, 1418, 00667 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1419, 1419, 1420, 00668 1420, 1420, 1421, 1421, 1422, 1422, 1422, 1422, 1422, 1423, 00669 1423, 1424, 1425, 1426, 1427, 1427, 1427, 1428, 1429, 1431, 00670 1433, 1433, 1433, 1433, 1433, 1434, 1434, 1435, 1435, 1435, 00671 1435, 1435, 1436, 1437, 1438, 1438, 1438, 1439, 1441, 1441, 00672 1441, 1442, 1442, 1442, 1442, 1442, 1443, 1443, 1443, 1443, 00673 1443, 1443, 1443, 1444, 1444 00674 00675 } ; 00676 00677 static yyconst flex_int32_t yy_ec[256] = 00678 { 0, 00679 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00682 1, 2, 4, 5, 1, 1, 6, 7, 8, 9, 00683 10, 11, 1, 12, 1, 1, 1, 13, 13, 13, 00684 13, 13, 13, 13, 13, 13, 13, 14, 1, 15, 00685 16, 17, 1, 1, 20, 21, 22, 23, 24, 25, 00686 26, 27, 28, 19, 19, 29, 30, 31, 32, 33, 00687 19, 34, 35, 36, 37, 38, 19, 39, 40, 19, 00688 1, 18, 1, 1, 19, 1, 20, 21, 22, 23, 00689 00690 24, 25, 26, 27, 28, 19, 19, 29, 30, 31, 00691 32, 33, 19, 34, 35, 36, 37, 38, 19, 39, 00692 40, 19, 1, 1, 1, 1, 1, 1, 1, 1, 00693 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00694 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00695 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00696 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00697 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00698 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00699 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00700 00701 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00702 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00703 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00704 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00705 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00706 1, 1, 1, 1, 1 00707 } ; 00708 00709 static yyconst flex_int32_t yy_meta[41] = 00710 { 0, 00711 1, 2, 3, 1, 1, 4, 1, 1, 5, 6, 00712 1, 7, 8, 9, 10, 1, 10, 1, 11, 11, 00713 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 00714 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 00715 } ; 00716 00717 static yyconst flex_int16_t yy_base[1271] = 00718 { 0, 00719 0, 6, 24, 0, 63, 0, 81, 121, 138, 143, 00720 13, 71, 179, 0, 196, 200, 236, 0, 276, 0, 00721 315, 332, 348, 364, 382, 0, 421, 456, 492, 0, 00722 357, 421, 429, 456, 532, 0, 572, 0, 612, 0, 00723 464, 650, 656, 662, 161, 219, 4149, 4150, 4150, 0, 00724 4150, 4145, 320, 4145, 6, 340, 4150, 4136, 345, 4128, 00725 63, 425, 665, 666, 669, 429, 670, 671, 680, 675, 00726 464, 698, 704, 693, 694, 714, 724, 730, 199, 715, 00727 294, 346, 327, 658, 718, 724, 738, 739, 737, 754, 00728 708, 4110, 767, 768, 751, 349, 767, 765, 775, 435, 00729 00730 41, 785, 4150, 163, 0, 4150, 4140, 4140, 4127, 422, 00731 4111, 4111, 4099, 4106, 4103, 766, 4115, 4114, 804, 4150, 00732 4118, 470, 4122, 4129, 4150, 4150, 223, 4150, 0, 4150, 00733 4127, 4150, 4127, 457, 4150, 0, 4150, 4125, 4150, 697, 00734 728, 805, 808, 817, 819, 820, 821, 823, 818, 835, 00735 4125, 736, 829, 832, 835, 833, 845, 853, 854, 4150, 00736 866, 4109, 4150, 4122, 871, 851, 4092, 4092, 4085, 4090, 00737 4088, 4087, 4094, 4080, 4076, 4112, 4150, 4111, 4110, 4109, 00738 879, 4150, 0, 4150, 4108, 885, 4150, 831, 729, 886, 00739 771, 4108, 4150, 886, 0, 19, 62, 0, 4106, 897, 00740 00741 0, 315, 0, 4105, 899, 4150, 4104, 4150, 4150, 4150, 00742 4104, 900, 0, 903, 909, 4150, 4095, 4094, 4150, 894, 00743 4066, 4065, 4150, 908, 0, 914, 917, 918, 919, 920, 00744 922, 928, 930, 931, 934, 939, 942, 947, 948, 951, 00745 950, 962, 961, 967, 971, 977, 979, 984, 985, 987, 00746 1002, 1012, 993, 868, 4091, 1004, 990, 999, 1000, 1007, 00747 1008, 1009, 1020, 1018, 1024, 1021, 1032, 1033, 1034, 1035, 00748 1043, 1051, 1053, 1049, 1063, 1059, 1065, 1050, 1083, 1088, 00749 1094, 1010, 1096, 1076, 1087, 1085, 1096, 1088, 1112, 0, 00750 1118, 1121, 1124, 1108, 1111, 1139, 4098, 4097, 4150, 4069, 00751 00752 4067, 4060, 4059, 4058, 4059, 4064, 4063, 4069, 4051, 4054, 00753 1144, 4077, 4083, 4150, 4150, 1141, 0, 1142, 4074, 4150, 00754 4080, 1140, 4079, 4077, 1144, 0, 1152, 1153, 1155, 1157, 00755 1156, 1158, 1161, 1166, 1167, 1169, 1172, 4076, 1167, 1171, 00756 1177, 1165, 1164, 1180, 1188, 1184, 4051, 4040, 4005, 4018, 00757 4008, 4002, 4009, 3954, 3956, 3954, 3941, 4150, 4150, 1212, 00758 4150, 3961, 1215, 937, 3939, 1211, 3921, 1177, 0, 1213, 00759 3920, 1216, 0, 1224, 0, 344, 469, 0, 3909, 0, 00760 0, 0, 0, 3905, 0, 0, 1225, 1226, 1228, 1227, 00761 1229, 1261, 1230, 1242, 1296, 1297, 1298, 1239, 1300, 1299, 00762 00763 1309, 1310, 1308, 1311, 1321, 1323, 1327, 1340, 1244, 1341, 00764 1350, 1355, 1356, 3897, 4150, 1112, 1339, 1343, 1355, 1351, 00765 1391, 1362, 1358, 1408, 1406, 1409, 1419, 1416, 1417, 1425, 00766 1429, 1432, 1436, 1438, 1447, 1451, 1460, 1492, 1527, 1528, 00767 1471, 1564, 1439, 1454, 1458, 1529, 1530, 1512, 1519, 3873, 00768 3880, 3879, 1284, 3872, 3879, 3865, 3857, 3865, 3869, 3866, 00769 1599, 1532, 1354, 1600, 1601, 1547, 1602, 1603, 1605, 1604, 00770 1593, 1525, 1603, 1617, 1614, 1615, 1623, 1627, 3857, 3856, 00771 3865, 3883, 3861, 3858, 3853, 3742, 3748, 3742, 3751, 3745, 00772 3768, 4150, 1647, 1650, 1651, 1652, 1655, 0, 1637, 3738, 00773 00774 1684, 3716, 1719, 1720, 1721, 1722, 1660, 1723, 1724, 1725, 00775 1661, 1735, 1762, 1733, 1764, 1752, 1736, 1777, 3705, 1779, 00776 1787, 1789, 1772, 1783, 1740, 1644, 1780, 1804, 3701, 1246, 00777 1839, 3700, 1787, 1790, 1801, 1810, 1798, 1418, 1713, 1853, 00778 1804, 1854, 1888, 1864, 1890, 1613, 1871, 1892, 1339, 0, 00779 1881, 3698, 1924, 3697, 1959, 1960, 1965, 1966, 3695, 1552, 00780 1999, 3694, 1878, 1949, 2038, 1973, 1974, 1889, 1957, 3671, 00781 3661, 3655, 3657, 3657, 3652, 3650, 3643, 3656, 3647, 4150, 00782 3648, 2035, 2036, 2038, 2039, 2040, 327, 2048, 2050, 2064, 00783 2074, 2058, 1963, 2030, 2058, 2065, 2066, 2075, 2093, 3651, 00784 00785 3639, 3638, 0, 826, 3629, 3638, 3640, 3632, 2102, 3615, 00786 1554, 3606, 2095, 2099, 2110, 2101, 2111, 3607, 3606, 2113, 00787 2125, 2116, 2126, 2135, 2136, 2137, 2139, 2141, 2145, 2151, 00788 2158, 3630, 4, 4150, 2164, 2165, 2169, 164, 3623, 2166, 00789 2174, 1742, 3626, 2182, 2183, 2198, 2188, 2187, 2189, 2196, 00790 2200, 1989, 2187, 0, 2167, 2206, 2212, 2210, 2216, 2218, 00791 2220, 2224, 2230, 2234, 2232, 2238, 2265, 3623, 2245, 2246, 00792 2248, 2277, 2260, 2262, 2220, 3622, 3579, 3566, 2275, 2289, 00793 2294, 654, 2299, 2301, 0, 2283, 2285, 2311, 2308, 2312, 00794 2292, 2300, 3558, 3532, 3532, 3526, 3529, 3528, 3534, 3531, 00795 00796 3518, 3530, 3515, 2320, 2323, 2324, 2325, 2329, 3510, 2334, 00797 2335, 2341, 3537, 660, 2352, 3536, 2335, 2336, 2342, 2346, 00798 2344, 2370, 3533, 2373, 3532, 3517, 3514, 3512, 3504, 3506, 00799 3496, 3499, 3493, 2375, 3506, 1245, 3478, 3475, 3474, 2378, 00800 3499, 4150, 2377, 2379, 2382, 2383, 2391, 3477, 3486, 2385, 00801 2388, 2393, 2410, 2396, 2401, 2412, 2411, 2416, 2420, 2432, 00802 2426, 3494, 2440, 1619, 2446, 2443, 2449, 2467, 2430, 4150, 00803 2451, 3493, 2476, 2477, 2482, 2436, 2465, 2466, 2479, 2101, 00804 2476, 2376, 2482, 2508, 2493, 2491, 2495, 2501, 2502, 2505, 00805 2517, 2528, 2534, 3491, 2549, 2521, 2535, 2545, 2539, 3490, 00806 00807 3474, 3462, 2544, 2552, 1885, 1454, 2467, 2546, 2573, 2585, 00808 2568, 2599, 3457, 3464, 3471, 2581, 3455, 3469, 3451, 3450, 00809 3459, 2598, 2599, 2601, 2602, 2604, 3448, 2610, 2614, 2619, 00810 3470, 2622, 1803, 2633, 3469, 2606, 2621, 2623, 2622, 2630, 00811 2656, 3455, 2649, 3454, 3426, 3422, 3458, 3410, 3407, 3322, 00812 3326, 2128, 3344, 2594, 2069, 2662, 3321, 3328, 3306, 3281, 00813 2660, 2664, 2663, 2153, 3264, 3229, 2665, 2668, 2630, 2670, 00814 2673, 2676, 2679, 2681, 2678, 2698, 2705, 3257, 0, 2702, 00815 2706, 2711, 2716, 2724, 2708, 2714, 2553, 2740, 2718, 2721, 00816 2742, 2729, 2732, 2735, 2739, 2745, 2743, 2747, 2774, 2783, 00817 00818 2797, 3220, 3219, 2824, 3202, 3174, 2825, 449, 2829, 4150, 00819 1675, 2832, 3172, 3138, 3139, 2836, 2826, 3119, 3106, 3105, 00820 2836, 2283, 3101, 2823, 2842, 3056, 2498, 3055, 3034, 2513, 00821 3008, 2837, 3014, 2985, 2985, 2850, 2853, 2855, 2969, 2966, 00822 2920, 2863, 2846, 2919, 2911, 2867, 2864, 2875, 2877, 2915, 00823 2878, 2879, 2891, 2893, 2899, 2886, 2887, 2893, 2901, 2921, 00824 1297, 739, 2902, 2908, 2905, 2909, 2911, 0, 2953, 2915, 00825 2887, 2862, 2892, 2844, 2850, 2942, 2992, 4150, 2995, 2846, 00826 2833, 2998, 2822, 2803, 2760, 2746, 2995, 2744, 0, 2978, 00827 2724, 2722, 2721, 2725, 2691, 2685, 2678, 2678, 3005, 3005, 00828 00829 3018, 2672, 2665, 2653, 2666, 2261, 2616, 3011, 3019, 0, 00830 3022, 3025, 3031, 3039, 3041, 3026, 3055, 3058, 3066, 3049, 00831 1069, 3044, 3042, 3046, 3083, 0, 3100, 2616, 2598, 2589, 00832 2566, 2564, 3124, 3126, 2545, 3128, 2546, 0, 3129, 3132, 00833 2544, 2539, 2490, 2449, 2430, 2442, 3136, 3150, 2443, 3142, 00834 3160, 2431, 2418, 2407, 2329, 3146, 343, 2302, 2349, 3159, 00835 3160, 3174, 3175, 3162, 3191, 2259, 3195, 2243, 3169, 908, 00836 1960, 3013, 3196, 3050, 3176, 0, 2205, 2190, 2203, 2188, 00837 3204, 2196, 3205, 2139, 3180, 3208, 2164, 3209, 2137, 3212, 00838 2136, 3218, 2108, 3222, 2087, 2086, 2057, 2011, 1946, 3223, 00839 00840 1959, 3226, 3237, 1917, 1899, 1898, 1878, 1857, 1856, 1798, 00841 3231, 3236, 3241, 3253, 1808, 3254, 1770, 1772, 3234, 3268, 00842 3244, 3118, 1735, 4150, 1747, 1651, 3250, 3271, 1619, 3281, 00843 3283, 1613, 3285, 1519, 3292, 1527, 3288, 1479, 3282, 3302, 00844 1457, 3303, 1425, 1362, 1351, 1313, 1304, 1309, 3306, 1209, 00845 0, 1179, 3308, 3306, 3263, 1131, 3304, 3320, 3307, 3313, 00846 1094, 3334, 1009, 1032, 3322, 994, 983, 964, 970, 927, 00847 914, 884, 868, 3319, 3325, 850, 3321, 3326, 818, 782, 00848 0, 775, 772, 693, 3349, 4150, 657, 457, 463, 348, 00849 192, 138, 4150, 4150, 3359, 3370, 3381, 3392, 3403, 3414, 00850 00851 3425, 3436, 3447, 3455, 3466, 3474, 3484, 3494, 3502, 3510, 00852 3521, 3529, 3537, 3545, 3553, 3564, 3575, 3586, 3597, 3608, 00853 3619, 3623, 3627, 3637, 3648, 3658, 3662, 3666, 3670, 3675, 00854 3679, 3683, 3693, 3704, 3715, 3726, 3737, 3748, 3759, 3769, 00855 3780, 3791, 3802, 3813, 3824, 3835, 3846, 3857, 3868, 3876, 00856 3886, 3890, 3898, 3909, 3913, 3924, 3935, 3946, 3957, 3967, 00857 3978, 3989, 4000, 4011, 4022, 4032, 4043, 4054, 4065, 4075 00858 } ; 00859 00860 static yyconst flex_int16_t yy_def[1271] = 00861 { 0, 00862 1195, 1195, 1194, 3, 1195, 5, 1194, 1194, 7, 8, 00863 5, 5, 1194, 13, 7, 8, 1194, 17, 1194, 19, 00864 1196, 1196, 1197, 1197, 1194, 25, 7, 8, 1194, 29, 00865 1198, 1198, 1199, 1199, 1194, 35, 1194, 37, 1194, 39, 00866 1200, 1200, 1201, 1201, 5, 5, 1194, 1194, 1194, 1202, 00867 1194, 1203, 1194, 1194, 1204, 1194, 1194, 1205, 1194, 1202, 00868 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00869 1206, 1206, 1206, 1206, 1207, 1208, 1208, 1208, 78, 78, 00870 78, 78, 78, 78, 78, 78, 78, 78, 78, 1206, 00871 1206, 70, 1206, 1206, 78, 78, 78, 78, 78, 1209, 00872 00873 70, 78, 1194, 1194, 1202, 1194, 1203, 1194, 1194, 1194, 00874 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00875 1202, 1210, 1211, 1194, 1194, 1194, 1194, 1194, 1202, 1194, 00876 1203, 1194, 1194, 1194, 1194, 1202, 1194, 1203, 1194, 1194, 00877 1212, 1212, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00878 1207, 78, 78, 78, 78, 78, 78, 78, 78, 1194, 00879 1194, 1202, 1194, 1203, 1194, 1194, 1194, 1194, 1194, 1194, 00880 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1202, 1194, 1203, 00881 1194, 1194, 1202, 1194, 1203, 1194, 1194, 1213, 1194, 1194, 00882 1214, 1194, 1194, 1215, 1216, 1194, 1217, 1216, 1218, 1216, 00883 00884 1219, 1220, 1219, 1221, 1219, 1194, 1203, 1194, 1194, 1194, 00885 1194, 1204, 1222, 1204, 1194, 1194, 1205, 1205, 1194, 1194, 00886 1194, 1194, 1194, 1206, 1223, 1206, 1206, 1206, 1206, 1206, 00887 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00888 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 1224, 1224, 00889 1224, 1224, 1194, 78, 1225, 1226, 78, 78, 78, 78, 00890 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 00891 78, 78, 78, 78, 78, 78, 78, 78, 1206, 1206, 00892 1206, 1206, 1206, 78, 78, 78, 78, 78, 1209, 1227, 00893 1209, 1206, 1206, 78, 78, 1194, 1194, 1194, 1194, 1194, 00894 00895 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00896 1194, 1211, 1194, 1194, 1194, 1210, 1228, 1210, 1211, 1194, 00897 1194, 1194, 1194, 1194, 1212, 1229, 1212, 1212, 1212, 1206, 00898 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 78, 78, 00899 78, 78, 78, 78, 78, 78, 1194, 1194, 1194, 1194, 00900 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1213, 00901 1194, 1230, 1213, 1194, 1194, 1194, 1194, 1214, 1231, 1214, 00902 1194, 1215, 1232, 1215, 1216, 1194, 1194, 1216, 1218, 1216, 00903 1216, 1219, 1219, 1221, 1219, 1219, 1206, 1206, 1206, 1206, 00904 1206, 1194, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00905 00906 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1233, 1224, 00907 1224, 1224, 1224, 1225, 1194, 78, 78, 78, 78, 78, 00908 1194, 78, 78, 78, 78, 78, 78, 78, 78, 78, 00909 78, 78, 78, 78, 78, 78, 78, 1194, 1206, 1206, 00910 1206, 1194, 78, 78, 78, 1206, 1206, 78, 78, 1194, 00911 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00912 1212, 1212, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00913 78, 78, 78, 78, 78, 78, 78, 78, 1194, 1194, 00914 1194, 1234, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00915 1194, 1194, 1206, 1206, 1206, 1206, 1206, 1235, 1235, 392, 00916 00917 1194, 392, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00918 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1194, 1224, 00919 1224, 1224, 78, 78, 78, 78, 78, 1235, 421, 1236, 00920 1194, 421, 78, 78, 78, 78, 78, 78, 78, 78, 00921 78, 78, 78, 78, 78, 78, 78, 78, 1194, 1237, 00922 1237, 438, 1194, 438, 1206, 1206, 1206, 1237, 442, 1238, 00923 1194, 442, 78, 78, 78, 1206, 1206, 78, 78, 1194, 00924 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00925 1194, 1212, 1212, 1206, 1206, 1206, 1194, 1206, 1206, 513, 00926 1206, 78, 78, 78, 1194, 78, 78, 543, 78, 1194, 00927 00928 1194, 1194, 1234, 1234, 1194, 1194, 1194, 1194, 1194, 1194, 00929 1194, 1194, 1206, 1206, 1206, 1206, 1206, 1235, 1235, 1206, 00930 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00931 1194, 1239, 1194, 1194, 1206, 1206, 1206, 1240, 1194, 1206, 00932 1206, 1194, 1241, 1224, 1224, 1224, 78, 78, 78, 78, 00933 78, 1235, 1236, 1235, 78, 78, 78, 78, 78, 78, 00934 78, 78, 78, 78, 78, 78, 1194, 1242, 78, 78, 00935 78, 1240, 78, 78, 1194, 1243, 1237, 1237, 1206, 1206, 00936 1194, 1194, 1237, 1238, 1237, 78, 78, 1194, 1206, 1206, 00937 78, 78, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00938 00939 1194, 1194, 1194, 1212, 1212, 1206, 1206, 1206, 1194, 1206, 00940 1206, 1194, 1244, 1194, 1194, 1245, 78, 78, 78, 78, 00941 78, 1194, 1246, 1194, 1247, 1194, 1194, 1194, 1234, 1194, 00942 1194, 1194, 1194, 1194, 1248, 1194, 1194, 1194, 1194, 1194, 00943 1249, 1194, 1206, 1206, 1206, 1206, 1206, 1235, 1235, 1206, 00944 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 00945 1194, 1239, 1194, 1194, 1194, 1206, 1206, 1206, 1250, 1194, 00946 1206, 1241, 1224, 1224, 1224, 78, 78, 78, 78, 78, 00947 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 00948 78, 78, 1194, 1242, 1194, 78, 78, 78, 78, 1243, 00949 00950 1237, 1237, 1206, 1206, 1194, 1194, 78, 78, 1206, 1206, 00951 78, 78, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00952 1194, 1212, 1212, 1206, 1206, 1206, 1194, 1206, 1206, 1194, 00953 1244, 1194, 1194, 1194, 1245, 78, 78, 78, 78, 78, 00954 1194, 1246, 1194, 1247, 1194, 1194, 1194, 1234, 1194, 1194, 00955 1194, 1194, 1248, 1194, 1194, 1194, 1194, 1194, 1194, 1249, 00956 1206, 1206, 1206, 1194, 1235, 1235, 1206, 1206, 1194, 1194, 00957 1206, 1206, 1206, 1194, 1206, 1206, 1194, 1251, 1252, 1250, 00958 1206, 1224, 1224, 1224, 78, 78, 78, 1194, 78, 78, 00959 1194, 1225, 78, 78, 78, 78, 78, 78, 1194, 1194, 00960 00961 78, 1237, 1237, 1206, 1194, 1194, 78, 810, 1240, 1194, 00962 812, 1240, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00963 1206, 1194, 1194, 78, 1194, 1194, 1194, 1234, 1194, 1194, 00964 1194, 1194, 1194, 1194, 1194, 1206, 1206, 1206, 1194, 1235, 00965 1235, 1206, 1194, 1194, 1194, 1206, 1206, 1206, 1206, 1251, 00966 1253, 1206, 1224, 1224, 1224, 78, 78, 78, 78, 1225, 00967 1225, 1225, 78, 78, 78, 78, 78, 900, 1194, 78, 00968 1237, 1237, 1194, 1194, 1194, 1194, 1240, 1194, 1240, 1194, 00969 1194, 1194, 1194, 1194, 1194, 1194, 1206, 1194, 1254, 78, 00970 1194, 1194, 1234, 1194, 1194, 1194, 1194, 1194, 1206, 513, 00971 00972 810, 1194, 1235, 1235, 1194, 1194, 1194, 1206, 1206, 1255, 00973 1253, 1206, 1224, 1224, 1224, 78, 543, 812, 1194, 1225, 00974 1225, 78, 78, 78, 1194, 969, 78, 1237, 1237, 1194, 00975 1194, 1194, 1194, 1194, 1194, 513, 1194, 1254, 543, 1194, 00976 1194, 1234, 1194, 1194, 1194, 1194, 1206, 1194, 1256, 1194, 00977 1240, 1257, 1194, 1235, 1235, 1194, 1194, 1194, 1194, 1206, 00978 1206, 1224, 1224, 78, 1194, 1258, 1240, 1259, 1225, 1194, 00979 1225, 1225, 1260, 78, 78, 1237, 1237, 1194, 1194, 1194, 00980 1194, 1261, 1194, 1194, 1194, 1194, 1262, 1194, 1194, 1194, 00981 1263, 1194, 1264, 1194, 1194, 1234, 1194, 1194, 1194, 1194, 00982 00983 1256, 1194, 1194, 1265, 765, 1257, 1194, 1235, 1235, 1194, 00984 1194, 1206, 1206, 1194, 1258, 1194, 1259, 1225, 1225, 1266, 00985 78, 78, 1194, 1194, 1261, 1194, 1194, 1194, 1262, 1194, 00986 1194, 1267, 1194, 1194, 1194, 1263, 1194, 1264, 1194, 1194, 00987 1268, 1194, 1194, 1234, 1194, 1194, 1194, 1265, 1194, 1194, 00988 1235, 1235, 1206, 1206, 1194, 1269, 1270, 1266, 78, 78, 00989 1267, 1194, 1194, 1268, 1194, 1194, 1234, 1194, 1194, 1194, 00990 1194, 1235, 1194, 1206, 1269, 1269, 1194, 78, 1194, 1194, 00991 1234, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00992 1194, 1194, 1194, 0, 1194, 1194, 1194, 1194, 1194, 1194, 00993 00994 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00995 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00996 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00997 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00998 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 00999 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01000 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194 01001 } ; 01002 01003 static yyconst flex_int16_t yy_nxt[4191] = 01004 { 0, 01005 1194, 1194, 49, 50, 51, 764, 52, 51, 49, 50, 01006 51, 212, 52, 51, 48, 49, 765, 53, 213, 1194, 01007 376, 48, 377, 53, 48, 54, 49, 50, 51, 55, 01008 52, 51, 48, 48, 48, 48, 48, 48, 48, 48, 01009 48, 53, 55, 55, 55, 55, 55, 55, 55, 55, 01010 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 01011 55, 55, 55, 55, 56, 57, 50, 51, 224, 52, 01012 51, 58, 48, 49, 292, 225, 375, 293, 375, 48, 01013 53, 48, 59, 49, 60, 51, 61, 52, 51, 48, 01014 48, 48, 48, 48, 48, 48, 48, 48, 53, 61, 01015 01016 62, 61, 63, 64, 65, 66, 61, 61, 67, 68, 01017 61, 61, 69, 70, 71, 72, 73, 74, 61, 61, 01018 61, 48, 75, 49, 60, 51, 76, 52, 51, 48, 01019 48, 48, 48, 48, 48, 48, 48, 48, 53, 76, 01020 77, 76, 78, 79, 80, 81, 76, 76, 82, 83, 01021 76, 76, 84, 85, 86, 87, 88, 89, 76, 76, 01022 76, 90, 48, 49, 296, 638, 95, 91, 854, 48, 01023 92, 93, 96, 94, 297, 97, 98, 639, 99, 48, 01024 48, 49, 50, 51, 100, 52, 51, 48, 48, 48, 01025 48, 48, 48, 48, 48, 48, 53, 100, 100, 100, 01026 01027 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 01028 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 01029 48, 49, 832, 95, 322, 257, 261, 48, 101, 93, 01030 262, 94, 102, 98, 323, 99, 103, 104, 49, 105, 01031 106, 103, 107, 106, 103, 103, 103, 108, 103, 109, 01032 103, 103, 103, 110, 103, 111, 103, 103, 112, 113, 01033 103, 103, 103, 114, 103, 103, 103, 115, 116, 103, 01034 117, 118, 103, 103, 103, 103, 48, 119, 120, 121, 01035 51, 122, 52, 51, 123, 48, 48, 124, 48, 48, 01036 48, 125, 48, 53, 122, 122, 122, 122, 122, 122, 01037 01038 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 01039 122, 122, 122, 122, 122, 122, 127, 128, 129, 130, 01040 257, 131, 130, 132, 209, 257, 133, 209, 587, 382, 01041 265, 382, 134, 127, 128, 129, 130, 210, 131, 130, 01042 132, 215, 216, 133, 638, 376, 220, 377, 217, 134, 01043 49, 136, 137, 257, 138, 137, 639, 139, 267, 177, 01044 178, 179, 709, 180, 179, 140, 49, 136, 137, 221, 01045 138, 137, 257, 139, 181, 257, 266, 257, 763, 222, 01046 285, 140, 48, 48, 49, 50, 51, 141, 52, 51, 01047 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 01048 01049 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 01050 141, 141, 141, 141, 142, 141, 141, 141, 141, 141, 01051 141, 141, 48, 177, 178, 179, 209, 180, 179, 209, 01052 224, 49, 183, 184, 224, 185, 184, 225, 181, 210, 01053 289, 225, 143, 144, 145, 61, 186, 290, 146, 147, 01054 977, 978, 978, 227, 148, 149, 150, 151, 49, 183, 01055 184, 209, 185, 184, 209, 234, 196, 197, 198, 224, 01056 199, 198, 491, 186, 210, 316, 225, 152, 153, 154, 01057 76, 200, 317, 155, 156, 492, 1193, 242, 1192, 157, 01058 158, 159, 160, 161, 49, 162, 163, 160, 164, 163, 01059 01060 160, 160, 160, 160, 160, 160, 160, 160, 160, 165, 01061 160, 160, 160, 166, 167, 168, 169, 160, 160, 170, 01062 171, 172, 160, 160, 160, 173, 174, 175, 160, 160, 01063 160, 160, 48, 48, 187, 50, 51, 188, 52, 51, 01064 48, 48, 48, 189, 48, 48, 48, 48, 48, 53, 01065 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 01066 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 01067 188, 188, 48, 190, 187, 50, 51, 191, 52, 51, 01068 48, 48, 48, 192, 48, 48, 48, 48, 48, 53, 01069 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 01070 01071 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 01072 191, 191, 48, 48, 193, 50, 51, 194, 52, 51, 01073 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 01074 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 01075 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 01076 194, 194, 196, 197, 198, 805, 199, 198, 49, 202, 01077 203, 833, 204, 203, 49, 202, 203, 200, 204, 203, 01078 224, 224, 834, 205, 224, 224, 224, 225, 225, 205, 01079 224, 225, 225, 225, 257, 224, 806, 225, 1191, 257, 01080 268, 228, 225, 230, 238, 248, 229, 231, 224, 232, 01081 01082 235, 209, 236, 224, 209, 225, 239, 233, 240, 224, 01083 225, 241, 237, 224, 210, 253, 225, 243, 250, 254, 01084 225, 251, 255, 245, 1190, 253, 256, 247, 252, 254, 01085 364, 253, 255, 325, 244, 254, 256, 269, 255, 280, 01086 326, 257, 256, 246, 257, 263, 257, 273, 415, 270, 01087 257, 271, 258, 264, 272, 257, 259, 274, 276, 224, 01088 365, 260, 339, 257, 257, 257, 225, 340, 257, 257, 01089 257, 278, 224, 224, 275, 1021, 368, 257, 277, 225, 01090 225, 284, 257, 369, 279, 305, 269, 245, 287, 264, 01091 282, 257, 233, 257, 276, 1169, 257, 306, 270, 307, 01092 01093 286, 257, 308, 272, 269, 311, 257, 283, 1189, 1188, 01094 325, 257, 312, 224, 288, 313, 270, 326, 294, 314, 01095 225, 295, 224, 224, 224, 224, 224, 604, 224, 225, 01096 225, 225, 225, 225, 330, 225, 360, 243, 328, 331, 01097 224, 329, 361, 362, 230, 1187, 336, 225, 332, 333, 01098 334, 1176, 335, 729, 245, 257, 261, 233, 257, 257, 01099 341, 257, 342, 257, 344, 343, 257, 220, 345, 1173, 01100 264, 257, 274, 276, 337, 209, 257, 347, 209, 257, 01101 257, 358, 348, 209, 257, 257, 209, 366, 210, 209, 01102 221, 372, 209, 346, 257, 220, 210, 367, 373, 257, 01103 01104 222, 380, 210, 385, 380, 212, 385, 1151, 212, 638, 01105 215, 216, 213, 224, 381, 213, 386, 217, 221, 224, 01106 225, 639, 224, 224, 224, 224, 225, 224, 222, 225, 01107 225, 225, 225, 224, 225, 224, 224, 388, 364, 224, 01108 225, 1184, 225, 225, 224, 387, 225, 224, 389, 390, 01109 392, 225, 224, 224, 225, 224, 224, 1183, 391, 225, 01110 225, 394, 225, 225, 396, 393, 224, 224, 365, 395, 01111 401, 1173, 224, 225, 225, 399, 224, 397, 400, 225, 01112 398, 402, 224, 225, 224, 248, 253, 405, 253, 225, 01113 249, 225, 249, 255, 253, 255, 403, 409, 404, 409, 01114 01115 1182, 255, 408, 253, 406, 253, 1181, 249, 250, 407, 01116 255, 251, 255, 253, 409, 224, 257, 249, 252, 417, 01117 255, 257, 225, 411, 409, 257, 257, 416, 1180, 402, 01118 257, 257, 412, 257, 257, 257, 418, 419, 257, 257, 01119 257, 1165, 421, 1179, 257, 420, 257, 257, 413, 257, 01120 257, 257, 257, 422, 423, 257, 424, 425, 257, 257, 01121 257, 257, 428, 257, 257, 257, 257, 427, 426, 257, 01122 429, 430, 431, 437, 257, 257, 257, 257, 415, 257, 01123 257, 257, 257, 434, 257, 257, 433, 432, 224, 257, 01124 257, 257, 435, 224, 257, 225, 257, 436, 442, 224, 01125 01126 225, 224, 257, 1162, 1072, 438, 225, 257, 225, 443, 01127 439, 257, 429, 257, 257, 431, 444, 289, 257, 257, 01128 445, 400, 257, 289, 290, 440, 224, 257, 441, 224, 01129 290, 449, 1176, 225, 257, 448, 225, 257, 257, 257, 01130 296, 322, 257, 523, 447, 311, 316, 316, 446, 325, 01131 297, 323, 312, 317, 317, 313, 326, 325, 325, 314, 01132 325, 224, 224, 224, 326, 326, 224, 326, 225, 225, 01133 225, 224, 224, 225, 224, 462, 463, 224, 225, 225, 01134 461, 225, 368, 466, 225, 464, 471, 474, 469, 369, 01135 257, 257, 468, 257, 465, 257, 257, 257, 257, 475, 01136 01137 472, 467, 257, 257, 470, 476, 257, 477, 257, 1172, 01138 257, 257, 366, 473, 257, 257, 478, 360, 368, 257, 01139 360, 372, 367, 361, 362, 369, 361, 362, 373, 372, 01140 224, 224, 224, 224, 224, 224, 373, 225, 225, 225, 01141 225, 225, 225, 1171, 224, 253, 855, 224, 414, 497, 01142 496, 225, 255, 503, 225, 654, 493, 856, 509, 494, 01143 495, 498, 499, 504, 498, 498, 500, 498, 498, 498, 01144 498, 498, 498, 501, 498, 498, 498, 498, 498, 502, 01145 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 01146 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 01147 01148 502, 224, 224, 224, 224, 224, 415, 573, 225, 225, 01149 225, 225, 225, 224, 224, 224, 224, 574, 1149, 505, 01150 225, 225, 225, 225, 507, 508, 224, 1020, 224, 506, 01151 510, 1170, 224, 225, 515, 225, 511, 512, 513, 225, 01152 549, 519, 253, 1169, 514, 224, 249, 255, 517, 255, 01153 518, 253, 225, 409, 516, 249, 253, 253, 255, 224, 01154 249, 249, 409, 255, 255, 257, 225, 409, 409, 257, 01155 257, 527, 524, 1168, 257, 525, 522, 257, 526, 534, 01156 520, 257, 257, 1167, 257, 533, 257, 584, 257, 257, 01157 521, 498, 528, 257, 498, 498, 529, 498, 498, 530, 01158 01159 498, 498, 498, 531, 498, 498, 498, 498, 498, 532, 01160 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 01161 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 01162 532, 535, 257, 537, 257, 257, 538, 257, 539, 257, 01163 257, 536, 257, 257, 257, 257, 540, 257, 257, 662, 01164 257, 257, 1166, 542, 541, 257, 257, 543, 257, 545, 01165 257, 549, 257, 257, 257, 257, 1165, 257, 544, 257, 01166 257, 546, 547, 257, 548, 563, 224, 257, 257, 564, 01167 257, 565, 257, 225, 257, 257, 257, 905, 1139, 257, 01168 906, 257, 550, 551, 557, 550, 550, 552, 550, 550, 01169 01170 550, 550, 550, 550, 553, 550, 550, 550, 550, 550, 01171 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 01172 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 01173 554, 554, 224, 224, 224, 224, 1137, 325, 257, 225, 01174 225, 225, 225, 257, 326, 257, 1163, 569, 587, 568, 01175 257, 257, 224, 556, 414, 740, 257, 593, 567, 225, 01176 583, 685, 741, 555, 550, 558, 566, 550, 550, 559, 01177 550, 550, 560, 550, 550, 550, 561, 550, 550, 550, 01178 550, 550, 562, 562, 562, 562, 562, 562, 562, 562, 01179 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 01180 01181 562, 562, 562, 562, 325, 224, 224, 224, 224, 224, 01182 224, 326, 225, 225, 225, 225, 225, 225, 595, 257, 01183 764, 586, 1162, 594, 257, 588, 592, 591, 1130, 257, 01184 589, 765, 585, 590, 257, 506, 582, 596, 499, 257, 01185 257, 257, 597, 257, 673, 257, 257, 536, 257, 257, 01186 599, 598, 224, 257, 257, 224, 224, 224, 257, 225, 01187 224, 618, 225, 225, 225, 224, 224, 225, 613, 614, 01188 257, 619, 225, 225, 650, 257, 979, 978, 978, 615, 01189 629, 625, 616, 617, 498, 498, 1085, 498, 498, 498, 01190 498, 498, 498, 498, 498, 498, 501, 498, 498, 498, 01191 01192 498, 498, 501, 501, 501, 501, 501, 501, 501, 501, 01193 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 01194 501, 501, 501, 501, 224, 224, 224, 224, 224, 224, 01195 224, 225, 225, 225, 225, 225, 225, 225, 224, 257, 01196 224, 224, 663, 642, 257, 225, 622, 225, 225, 624, 01197 643, 623, 620, 627, 626, 621, 580, 224, 1124, 641, 01198 628, 637, 630, 631, 225, 638, 257, 224, 649, 224, 01199 632, 257, 633, 634, 225, 634, 225, 639, 642, 1070, 01200 253, 415, 224, 640, 249, 643, 635, 255, 253, 225, 01201 253, 409, 249, 647, 249, 255, 636, 255, 257, 409, 01202 01203 644, 409, 648, 257, 833, 528, 257, 1072, 651, 257, 01204 645, 257, 530, 257, 257, 834, 257, 1116, 257, 661, 01205 655, 257, 646, 665, 257, 656, 657, 257, 618, 257, 01206 257, 658, 257, 1059, 659, 257, 257, 660, 619, 498, 01207 652, 257, 498, 498, 498, 498, 498, 530, 498, 498, 01208 498, 531, 498, 498, 498, 498, 498, 531, 531, 531, 01209 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 01210 531, 531, 531, 531, 531, 531, 531, 531, 531, 257, 01211 257, 666, 551, 1152, 257, 257, 805, 1151, 664, 667, 01212 257, 672, 671, 675, 674, 257, 668, 257, 633, 634, 01213 01214 676, 634, 257, 639, 257, 1150, 686, 1057, 691, 257, 01215 677, 1105, 669, 678, 257, 257, 257, 806, 257, 257, 01216 257, 257, 670, 257, 550, 550, 1149, 550, 550, 550, 01217 550, 550, 550, 550, 550, 550, 553, 550, 550, 550, 01218 550, 550, 553, 553, 553, 553, 553, 553, 553, 553, 01219 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 01220 553, 553, 553, 553, 224, 224, 681, 558, 1102, 415, 01221 224, 225, 225, 643, 560, 257, 682, 225, 224, 224, 01222 257, 1147, 687, 257, 692, 225, 225, 679, 257, 257, 01223 652, 718, 689, 680, 257, 677, 1118, 530, 678, 550, 01224 01225 683, 690, 550, 550, 550, 550, 550, 560, 550, 550, 01226 550, 561, 550, 550, 550, 550, 550, 561, 561, 561, 01227 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 01228 561, 561, 561, 561, 561, 561, 561, 561, 561, 688, 01229 325, 325, 1146, 224, 224, 224, 676, 326, 326, 682, 01230 225, 225, 225, 224, 704, 224, 257, 706, 719, 595, 01231 225, 257, 225, 705, 257, 712, 255, 707, 708, 257, 01232 855, 711, 713, 710, 714, 715, 722, 717, 623, 224, 01233 1145, 856, 716, 723, 257, 714, 225, 721, 226, 257, 01234 720, 257, 257, 709, 724, 658, 257, 257, 226, 257, 01235 01236 224, 725, 888, 734, 224, 1144, 224, 225, 1143, 257, 01237 735, 225, 736, 225, 743, 224, 224, 1139, 224, 257, 01238 744, 224, 225, 225, 257, 225, 737, 257, 225, 930, 01239 224, 224, 257, 745, 747, 746, 738, 225, 225, 752, 01240 224, 224, 224, 750, 224, 1137, 224, 225, 225, 225, 01241 224, 225, 751, 225, 864, 755, 224, 225, 1134, 761, 01242 931, 753, 757, 225, 758, 754, 632, 756, 633, 224, 01243 224, 224, 760, 1130, 224, 1126, 225, 225, 225, 224, 01244 759, 225, 737, 253, 253, 939, 225, 249, 249, 414, 01245 255, 255, 738, 257, 409, 409, 654, 781, 257, 253, 01246 01247 766, 767, 771, 249, 768, 580, 255, 776, 777, 515, 01248 409, 580, 778, 257, 257, 257, 774, 773, 257, 257, 01249 257, 675, 257, 780, 1124, 1123, 257, 257, 676, 775, 01250 779, 257, 257, 782, 1076, 783, 257, 257, 257, 787, 01251 785, 257, 257, 257, 257, 784, 257, 257, 786, 257, 01252 257, 257, 1070, 789, 788, 257, 257, 790, 257, 792, 01253 257, 257, 1056, 257, 257, 257, 793, 791, 1116, 257, 01254 1057, 257, 257, 668, 257, 633, 257, 257, 672, 257, 01255 224, 796, 797, 798, 922, 255, 257, 225, 257, 737, 01256 639, 257, 1058, 257, 224, 681, 799, 545, 803, 738, 01257 01258 683, 225, 643, 414, 808, 682, 807, 560, 804, 257, 01259 685, 257, 688, 224, 257, 988, 257, 224, 257, 676, 01260 225, 812, 682, 257, 225, 325, 257, 811, 325, 224, 01261 224, 257, 326, 810, 224, 326, 225, 225, 1110, 224, 01262 224, 225, 830, 809, 823, 824, 225, 225, 825, 713, 01263 1111, 714, 826, 715, 829, 822, 836, 828, 1057, 837, 01264 716, 257, 257, 840, 1109, 838, 257, 257, 257, 839, 01265 257, 841, 257, 257, 724, 257, 734, 257, 723, 740, 01266 714, 725, 224, 735, 224, 736, 741, 224, 224, 225, 01267 224, 225, 864, 224, 225, 225, 224, 225, 224, 737, 01268 01269 225, 224, 257, 225, 867, 225, 224, 890, 225, 738, 01270 863, 869, 861, 225, 862, 224, 224, 224, 870, 868, 01271 513, 224, 225, 225, 225, 224, 513, 761, 225, 513, 01272 871, 872, 225, 638, 632, 769, 633, 224, 1108, 1107, 01273 1057, 874, 879, 760, 225, 639, 873, 874, 224, 515, 01274 737, 634, 1102, 634, 224, 225, 224, 634, 765, 634, 01275 738, 225, 257, 225, 737, 994, 1099, 257, 877, 876, 01276 737, 885, 224, 875, 738, 878, 1098, 253, 253, 225, 01277 738, 249, 249, 253, 255, 255, 881, 249, 409, 409, 01278 255, 257, 257, 257, 409, 889, 257, 257, 257, 927, 01279 01280 886, 883, 257, 882, 543, 257, 887, 257, 257, 891, 01281 257, 1097, 893, 257, 930, 543, 892, 257, 884, 257, 01282 895, 257, 257, 543, 257, 894, 257, 257, 257, 672, 01283 992, 257, 257, 257, 257, 793, 257, 896, 545, 257, 01284 792, 639, 668, 257, 633, 931, 899, 257, 257, 224, 01285 874, 897, 257, 900, 257, 898, 225, 224, 737, 257, 01286 634, 257, 634, 1096, 225, 257, 257, 1095, 738, 1089, 01287 257, 257, 257, 737, 901, 907, 257, 257, 224, 257, 01288 1085, 904, 916, 738, 958, 225, 909, 910, 910, 917, 01289 224, 911, 1080, 1079, 257, 932, 908, 225, 639, 257, 01290 01291 912, 910, 910, 325, 325, 922, 224, 224, 1078, 224, 01292 326, 326, 639, 225, 225, 224, 225, 1077, 737, 224, 01293 830, 823, 225, 634, 925, 257, 225, 713, 738, 714, 01294 257, 869, 257, 634, 634, 634, 921, 257, 870, 1076, 01295 590, 924, 590, 590, 634, 834, 634, 257, 257, 257, 01296 634, 1059, 257, 257, 257, 598, 257, 841, 598, 598, 01297 634, 257, 634, 932, 723, 224, 714, 1005, 224, 224, 01298 224, 943, 225, 224, 856, 225, 225, 225, 224, 936, 01299 225, 224, 932, 224, 224, 225, 737, 937, 225, 1055, 01300 225, 225, 1054, 515, 938, 1053, 738, 944, 942, 948, 01301 01302 946, 945, 947, 224, 515, 737, 877, 769, 1046, 1045, 01303 225, 224, 253, 878, 879, 738, 249, 253, 225, 255, 01304 1044, 249, 1043, 409, 255, 253, 1005, 956, 409, 249, 01305 960, 949, 255, 952, 257, 954, 409, 957, 415, 257, 01306 257, 888, 953, 891, 257, 257, 545, 257, 255, 257, 01307 892, 959, 257, 963, 1042, 1041, 961, 1040, 257, 955, 01308 962, 257, 964, 257, 966, 257, 257, 545, 965, 257, 01309 257, 257, 939, 257, 257, 899, 257, 1037, 257, 580, 01310 967, 580, 900, 414, 968, 414, 414, 414, 969, 414, 01311 414, 414, 415, 414, 414, 414, 414, 414, 414, 414, 01312 01313 414, 969, 969, 969, 969, 969, 969, 969, 969, 969, 01314 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 01315 969, 969, 969, 257, 970, 973, 976, 982, 257, 224, 01316 909, 910, 910, 912, 910, 910, 225, 916, 932, 1035, 01317 255, 224, 639, 925, 917, 639, 990, 943, 225, 257, 01318 255, 257, 1034, 983, 257, 224, 257, 984, 224, 987, 01319 224, 737, 225, 1033, 1005, 225, 1032, 225, 224, 224, 01320 999, 738, 224, 944, 988, 225, 225, 945, 1031, 225, 01321 224, 1030, 224, 951, 224, 1001, 1000, 225, 515, 225, 01322 1010, 225, 253, 973, 253, 1029, 249, 515, 249, 255, 01323 01324 253, 255, 1019, 409, 249, 409, 1016, 255, 1009, 1012, 01325 1008, 409, 257, 257, 1014, 1028, 950, 257, 257, 257, 01326 1017, 1013, 960, 1018, 257, 1022, 1015, 257, 257, 545, 01327 415, 257, 257, 257, 257, 257, 257, 257, 545, 257, 01328 257, 257, 1024, 976, 1023, 1027, 257, 1007, 961, 1006, 01329 255, 1004, 962, 414, 414, 414, 414, 414, 969, 414, 01330 414, 414, 415, 414, 414, 1025, 414, 414, 414, 414, 01331 414, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 01332 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 01333 1026, 1026, 1026, 977, 978, 978, 979, 978, 978, 982, 01334 01335 224, 1003, 1002, 255, 257, 639, 1048, 225, 639, 257, 01336 224, 1039, 998, 1049, 1119, 1050, 224, 225, 997, 1051, 01337 1194, 1194, 1070, 225, 224, 983, 1052, 951, 1036, 984, 01338 224, 225, 1019, 1047, 1010, 996, 249, 225, 1060, 255, 01339 253, 995, 253, 409, 249, 1073, 249, 255, 942, 255, 01340 1069, 409, 257, 409, 1064, 1061, 1065, 257, 1070, 1067, 01341 1194, 1194, 1062, 1066, 994, 1050, 1068, 1019, 257, 1074, 01342 257, 1063, 257, 257, 255, 257, 257, 257, 993, 991, 01343 1071, 1121, 1075, 414, 414, 414, 414, 414, 414, 414, 01344 414, 414, 415, 414, 414, 1025, 414, 414, 414, 414, 01345 01346 414, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01347 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01348 1025, 1025, 1025, 959, 989, 1081, 257, 1083, 986, 1086, 01349 1090, 257, 1082, 1092, 580, 580, 1087, 1091, 1088, 1088, 01350 1093, 224, 1094, 1103, 257, 1160, 985, 1056, 225, 257, 01351 1104, 1100, 226, 257, 1105, 1057, 737, 1084, 1049, 515, 01352 1050, 1051, 226, 257, 224, 224, 738, 580, 1052, 981, 01353 1069, 225, 225, 639, 737, 1073, 253, 1058, 1070, 249, 01354 249, 1127, 255, 255, 738, 545, 409, 409, 257, 580, 01355 1112, 980, 1114, 257, 975, 1113, 1067, 1073, 1013, 1066, 01356 01357 1071, 1050, 257, 1068, 255, 1081, 1083, 257, 639, 1128, 01358 1131, 1122, 1082, 1135, 580, 737, 1087, 1132, 1088, 1092, 01359 1091, 1133, 1088, 1140, 1100, 738, 1093, 874, 1094, 974, 01360 1141, 1049, 1111, 1050, 1142, 1119, 1084, 634, 1103, 634, 01361 1057, 224, 737, 1070, 972, 1104, 224, 737, 225, 1105, 01362 737, 1127, 738, 225, 1114, 874, 971, 738, 950, 580, 01363 738, 1066, 941, 1050, 1155, 634, 1153, 634, 1154, 1155, 01364 257, 1156, 1128, 1120, 1159, 257, 1156, 737, 737, 1087, 01365 1157, 1088, 634, 932, 1131, 940, 634, 738, 738, 634, 01366 854, 1132, 634, 1135, 634, 1133, 634, 1133, 634, 634, 01367 01368 1091, 634, 1088, 1140, 932, 1155, 737, 874, 1177, 1173, 01369 1141, 224, 1156, 224, 1142, 1142, 738, 634, 225, 634, 01370 225, 1155, 1177, 932, 224, 1120, 1185, 737, 1156, 255, 01371 737, 225, 1157, 257, 1186, 634, 1174, 738, 257, 257, 01372 738, 935, 1153, 1178, 257, 634, 737, 634, 934, 1159, 01373 1185, 933, 257, 854, 609, 609, 738, 257, 1186, 48, 01374 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 01375 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 01376 126, 135, 135, 135, 135, 135, 135, 135, 135, 135, 01377 135, 135, 176, 176, 176, 176, 176, 176, 176, 176, 01378 01379 176, 176, 176, 182, 182, 182, 182, 182, 182, 182, 01380 182, 182, 182, 182, 195, 195, 195, 195, 195, 195, 01381 195, 195, 195, 195, 195, 201, 201, 201, 201, 201, 01382 201, 201, 201, 201, 201, 201, 206, 206, 929, 206, 01383 206, 206, 206, 206, 206, 928, 206, 207, 207, 207, 01384 207, 207, 207, 207, 207, 207, 207, 207, 214, 927, 01385 609, 926, 214, 843, 843, 214, 218, 218, 218, 218, 01386 218, 218, 218, 218, 218, 218, 218, 226, 832, 832, 01387 923, 226, 580, 580, 226, 249, 920, 249, 919, 918, 01388 915, 914, 913, 903, 249, 257, 902, 257, 257, 795, 01389 01390 795, 257, 763, 763, 257, 291, 866, 865, 854, 291, 01391 859, 858, 291, 318, 857, 854, 852, 318, 851, 850, 01392 318, 319, 319, 319, 319, 319, 319, 319, 319, 319, 01393 319, 319, 327, 849, 848, 847, 327, 846, 845, 327, 01394 363, 843, 843, 363, 363, 832, 832, 363, 370, 827, 01395 580, 580, 370, 821, 820, 370, 374, 819, 818, 817, 01396 374, 816, 815, 374, 375, 375, 814, 375, 375, 375, 01397 375, 375, 375, 375, 375, 378, 378, 813, 378, 378, 01398 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 01399 379, 379, 379, 379, 379, 379, 379, 382, 382, 802, 01400 01401 382, 382, 382, 382, 382, 382, 382, 382, 383, 383, 01402 801, 383, 383, 383, 383, 383, 383, 383, 383, 384, 01403 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 01404 213, 795, 795, 213, 225, 763, 770, 225, 410, 763, 01405 410, 410, 749, 748, 410, 742, 739, 410, 414, 414, 01406 414, 414, 414, 414, 414, 414, 414, 414, 414, 256, 01407 733, 732, 256, 731, 730, 256, 728, 727, 256, 290, 01408 726, 703, 290, 317, 702, 701, 317, 326, 700, 699, 01409 326, 362, 362, 698, 697, 362, 369, 696, 695, 369, 01410 373, 694, 693, 373, 409, 683, 683, 409, 550, 550, 01411 01412 409, 652, 652, 409, 603, 603, 519, 603, 603, 603, 01413 603, 603, 603, 603, 603, 498, 498, 498, 498, 498, 01414 498, 498, 498, 498, 498, 498, 653, 653, 653, 653, 01415 653, 653, 653, 653, 653, 653, 653, 550, 550, 498, 01416 550, 550, 550, 550, 550, 550, 550, 550, 684, 684, 01417 684, 684, 684, 684, 684, 684, 684, 684, 684, 762, 01418 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 01419 769, 491, 769, 612, 611, 610, 609, 769, 608, 769, 01420 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 01421 772, 794, 794, 794, 794, 794, 794, 794, 794, 794, 01422 01423 794, 794, 800, 800, 800, 800, 800, 800, 800, 800, 01424 800, 800, 800, 831, 831, 831, 831, 831, 831, 831, 01425 831, 831, 831, 831, 835, 835, 835, 835, 835, 835, 01426 835, 835, 835, 835, 835, 842, 842, 842, 842, 842, 01427 842, 842, 842, 842, 842, 842, 844, 844, 844, 844, 01428 844, 844, 844, 844, 844, 844, 844, 853, 853, 853, 01429 853, 853, 853, 853, 853, 853, 853, 853, 860, 860, 01430 860, 860, 860, 860, 860, 860, 860, 860, 860, 880, 01431 607, 606, 605, 880, 604, 602, 880, 951, 601, 951, 01432 600, 581, 580, 579, 578, 577, 951, 879, 576, 575, 01433 01434 879, 1011, 572, 571, 570, 1011, 415, 208, 1011, 1038, 01435 1038, 208, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 01436 1010, 371, 371, 1010, 1101, 1101, 1101, 1101, 1101, 1101, 01437 1101, 1101, 1101, 1101, 1101, 1106, 1106, 1106, 1106, 1106, 01438 1106, 1106, 1106, 1106, 1106, 1106, 1115, 1115, 1115, 1115, 01439 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1117, 1117, 1117, 01440 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1120, 490, 01441 1120, 1120, 361, 489, 488, 487, 486, 1120, 1125, 1125, 01442 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1129, 01443 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 01444 01445 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 01446 1136, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 01447 1138, 1138, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 01448 1148, 1148, 1148, 1158, 485, 1158, 1158, 484, 483, 1158, 01449 482, 481, 1158, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 01450 1161, 1161, 1161, 1161, 1164, 1164, 1164, 1164, 1164, 1164, 01451 1164, 1164, 1164, 1164, 1164, 1175, 1175, 1175, 1175, 480, 01452 479, 1175, 1175, 1175, 1175, 1175, 1157, 338, 324, 1157, 01453 324, 321, 1157, 320, 321, 1157, 320, 460, 459, 458, 01454 457, 456, 455, 454, 453, 452, 451, 450, 298, 298, 01455 01456 415, 356, 351, 219, 219, 211, 208, 208, 208, 371, 01457 208, 359, 358, 358, 358, 357, 356, 355, 354, 353, 01458 352, 351, 350, 349, 208, 223, 338, 208, 324, 208, 01459 321, 320, 315, 310, 309, 304, 303, 302, 301, 300, 01460 299, 298, 208, 281, 223, 219, 211, 208, 1194, 47, 01461 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01462 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01463 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01464 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194 01465 } ; 01466 01467 static yyconst flex_int16_t yy_chk[4191] = 01468 { 0, 01469 0, 0, 1, 1, 1, 633, 1, 1, 2, 2, 01470 2, 55, 2, 2, 11, 11, 633, 1, 55, 0, 01471 196, 11, 196, 2, 3, 3, 3, 3, 3, 3, 01472 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01473 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01474 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01475 3, 3, 3, 3, 5, 5, 5, 5, 61, 5, 01476 5, 5, 12, 12, 101, 61, 197, 101, 197, 12, 01477 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01478 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01479 01480 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01481 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01482 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 01483 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 01484 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 01485 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 01486 8, 9, 45, 45, 104, 638, 10, 9, 1192, 45, 01487 9, 9, 10, 9, 104, 10, 10, 638, 10, 13, 01488 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01489 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01490 01491 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 01492 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 01493 46, 46, 1191, 16, 127, 79, 79, 46, 15, 15, 01494 79, 15, 16, 16, 127, 16, 17, 17, 17, 17, 01495 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01496 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01497 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 01498 17, 17, 17, 17, 17, 17, 19, 19, 19, 19, 01499 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01500 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01501 01502 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 01503 19, 19, 19, 19, 19, 19, 21, 21, 21, 21, 01504 81, 21, 21, 21, 53, 81, 21, 53, 587, 202, 01505 81, 202, 21, 22, 22, 22, 22, 53, 22, 22, 01506 22, 56, 56, 22, 1057, 376, 59, 376, 56, 22, 01507 23, 23, 23, 83, 23, 23, 1057, 23, 83, 31, 01508 31, 31, 587, 31, 31, 23, 24, 24, 24, 59, 01509 24, 24, 82, 24, 31, 96, 82, 82, 1190, 59, 01510 96, 24, 25, 25, 25, 25, 25, 25, 25, 25, 01511 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 01512 01513 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 01514 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 01515 25, 25, 27, 32, 32, 32, 110, 32, 32, 110, 01516 62, 33, 33, 33, 66, 33, 33, 62, 32, 110, 01517 100, 66, 27, 27, 27, 27, 33, 100, 27, 27, 01518 908, 908, 908, 62, 27, 27, 27, 28, 34, 34, 01519 34, 134, 34, 34, 134, 66, 41, 41, 41, 71, 01520 41, 41, 377, 34, 134, 122, 71, 28, 28, 28, 01521 28, 41, 122, 28, 28, 377, 1189, 71, 1188, 28, 01522 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 01523 01524 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 01525 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 01526 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 01527 29, 29, 35, 35, 35, 35, 35, 35, 35, 35, 01528 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 01529 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 01530 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 01531 35, 35, 37, 37, 37, 37, 37, 37, 37, 37, 01532 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 01533 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 01534 01535 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 01536 37, 37, 39, 39, 39, 39, 39, 39, 39, 39, 01537 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 01538 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 01539 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 01540 39, 39, 42, 42, 42, 682, 42, 42, 43, 43, 01541 43, 714, 43, 43, 44, 44, 44, 42, 44, 44, 01542 63, 64, 714, 43, 65, 67, 68, 63, 64, 44, 01543 70, 65, 67, 68, 84, 69, 682, 70, 1187, 84, 01544 84, 63, 69, 64, 70, 75, 63, 64, 74, 65, 01545 01546 67, 140, 68, 72, 140, 74, 70, 65, 70, 73, 01547 72, 70, 69, 91, 140, 76, 73, 72, 75, 76, 01548 91, 75, 76, 73, 1184, 77, 76, 74, 75, 77, 01549 189, 78, 77, 141, 72, 78, 77, 85, 78, 91, 01550 141, 80, 78, 73, 85, 80, 80, 86, 962, 85, 01551 86, 85, 77, 80, 85, 86, 78, 87, 88, 90, 01552 189, 78, 152, 89, 87, 88, 90, 152, 89, 87, 01553 88, 89, 93, 94, 87, 962, 191, 95, 88, 93, 01554 94, 95, 95, 191, 90, 116, 97, 94, 98, 95, 01555 93, 98, 90, 97, 99, 1183, 98, 116, 97, 116, 01556 01557 97, 99, 116, 97, 102, 119, 99, 94, 1182, 1180, 01558 142, 102, 119, 143, 99, 119, 102, 142, 102, 119, 01559 143, 102, 144, 149, 145, 146, 147, 604, 148, 144, 01560 149, 145, 146, 147, 143, 148, 188, 149, 142, 143, 01561 150, 142, 188, 188, 144, 1179, 148, 150, 144, 145, 01562 146, 1176, 147, 604, 150, 153, 153, 145, 154, 156, 01563 153, 155, 154, 154, 156, 155, 155, 161, 157, 1173, 01564 154, 157, 158, 159, 150, 165, 157, 166, 165, 158, 01565 159, 181, 166, 181, 158, 159, 181, 190, 165, 186, 01566 161, 194, 186, 159, 254, 220, 181, 190, 194, 254, 01567 01568 161, 200, 186, 205, 200, 212, 205, 1172, 214, 1070, 01569 215, 215, 212, 224, 200, 214, 205, 215, 220, 226, 01570 224, 1070, 227, 228, 229, 230, 226, 231, 220, 227, 01571 228, 229, 230, 232, 231, 233, 234, 228, 364, 235, 01572 232, 1171, 233, 234, 236, 227, 235, 237, 229, 230, 01573 232, 236, 238, 239, 237, 241, 240, 1170, 231, 238, 01574 239, 234, 241, 240, 236, 233, 243, 242, 364, 235, 01575 241, 1169, 244, 243, 242, 239, 245, 237, 240, 244, 01576 238, 242, 246, 245, 247, 248, 249, 244, 250, 246, 01577 249, 247, 250, 249, 253, 250, 242, 249, 243, 250, 01578 01579 1168, 253, 247, 251, 245, 256, 1167, 251, 248, 246, 01580 251, 248, 256, 252, 251, 282, 257, 252, 248, 259, 01581 252, 257, 282, 250, 252, 258, 259, 258, 1166, 282, 01582 258, 259, 251, 260, 261, 262, 260, 261, 260, 261, 01583 262, 1164, 263, 1163, 264, 262, 263, 266, 252, 264, 01584 265, 263, 266, 264, 265, 265, 266, 267, 267, 268, 01585 269, 270, 270, 267, 268, 269, 270, 269, 268, 271, 01586 271, 272, 273, 278, 271, 274, 278, 272, 1021, 273, 01587 274, 278, 272, 275, 273, 276, 274, 273, 279, 275, 01588 276, 277, 276, 280, 275, 279, 277, 277, 284, 281, 01589 01590 280, 283, 284, 1161, 1021, 279, 281, 284, 283, 285, 01591 280, 286, 286, 285, 288, 287, 286, 289, 285, 288, 01592 288, 281, 287, 291, 289, 281, 292, 287, 283, 293, 01593 291, 295, 1156, 292, 294, 294, 293, 295, 416, 294, 01594 296, 322, 295, 416, 293, 311, 316, 318, 292, 325, 01595 296, 322, 311, 316, 318, 311, 325, 327, 328, 311, 01596 329, 331, 330, 332, 327, 328, 333, 329, 331, 330, 01597 332, 334, 335, 333, 336, 329, 330, 337, 334, 335, 01598 328, 336, 368, 333, 337, 331, 339, 342, 336, 368, 01599 343, 342, 335, 339, 332, 343, 342, 340, 339, 343, 01600 01601 340, 334, 340, 341, 337, 344, 344, 345, 341, 1152, 01602 346, 344, 366, 341, 345, 346, 346, 360, 370, 345, 01603 363, 372, 366, 360, 360, 370, 363, 363, 372, 374, 01604 387, 388, 390, 389, 391, 393, 374, 387, 388, 390, 01605 389, 391, 393, 1150, 398, 409, 736, 394, 530, 391, 01606 390, 398, 409, 393, 394, 530, 387, 736, 398, 388, 01607 389, 392, 392, 394, 392, 392, 392, 392, 392, 392, 01608 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 01609 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 01610 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 01611 01612 392, 395, 396, 397, 400, 399, 961, 453, 395, 396, 01613 397, 400, 399, 403, 401, 402, 404, 453, 1148, 395, 01614 403, 401, 402, 404, 396, 397, 405, 961, 406, 395, 01615 399, 1147, 407, 405, 404, 406, 400, 401, 402, 407, 01616 549, 408, 410, 1146, 403, 408, 410, 549, 406, 410, 01617 407, 411, 408, 410, 405, 411, 412, 413, 411, 463, 01618 412, 413, 411, 412, 413, 417, 463, 412, 413, 418, 01619 417, 420, 417, 1145, 418, 418, 413, 420, 419, 423, 01620 411, 419, 420, 1144, 423, 422, 419, 463, 422, 423, 01621 412, 421, 421, 422, 421, 421, 421, 421, 421, 421, 01622 01623 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 01624 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 01625 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 01626 421, 424, 425, 425, 424, 426, 426, 425, 427, 424, 01627 426, 424, 428, 429, 538, 427, 428, 428, 429, 538, 01628 427, 430, 1143, 430, 429, 431, 430, 431, 432, 433, 01629 431, 437, 433, 432, 434, 443, 1141, 433, 432, 434, 01630 443, 434, 435, 435, 436, 443, 441, 436, 435, 444, 01631 444, 445, 436, 441, 445, 444, 437, 806, 1138, 445, 01632 806, 437, 438, 438, 441, 438, 438, 438, 438, 438, 01633 01634 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 01635 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 01636 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 01637 438, 438, 439, 440, 446, 447, 1136, 462, 448, 439, 01638 440, 446, 447, 448, 462, 449, 1134, 449, 466, 448, 01639 449, 472, 466, 440, 560, 611, 472, 472, 447, 466, 01640 462, 560, 611, 439, 442, 442, 446, 442, 442, 442, 01641 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 01642 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 01643 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 01644 01645 442, 442, 442, 442, 461, 464, 465, 467, 468, 470, 01646 469, 461, 464, 465, 467, 468, 470, 469, 474, 471, 01647 764, 465, 1132, 473, 471, 467, 471, 470, 1129, 473, 01648 468, 764, 464, 469, 473, 467, 461, 475, 499, 546, 01649 475, 476, 476, 474, 546, 475, 476, 475, 474, 477, 01650 478, 477, 493, 478, 477, 494, 495, 496, 478, 493, 01651 497, 499, 494, 495, 496, 507, 511, 497, 493, 494, 01652 526, 499, 507, 511, 526, 526, 911, 911, 911, 495, 01653 511, 507, 496, 497, 501, 501, 1126, 501, 501, 501, 01654 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 01655 01656 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 01657 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 01658 501, 501, 501, 501, 503, 504, 505, 506, 508, 509, 01659 510, 503, 504, 505, 506, 508, 509, 510, 514, 539, 01660 512, 517, 539, 642, 539, 514, 505, 512, 517, 506, 01661 642, 505, 503, 509, 508, 504, 1125, 516, 1123, 517, 01662 510, 514, 512, 513, 516, 515, 525, 513, 525, 515, 01663 513, 525, 513, 513, 513, 513, 515, 515, 518, 1117, 01664 520, 1118, 518, 516, 520, 518, 513, 520, 521, 518, 01665 522, 520, 521, 523, 522, 521, 513, 522, 523, 521, 01666 01667 520, 522, 524, 523, 833, 528, 527, 1118, 527, 524, 01668 521, 527, 528, 533, 524, 833, 534, 1115, 533, 537, 01669 533, 534, 522, 541, 537, 534, 535, 535, 528, 537, 01670 541, 535, 535, 1110, 535, 541, 536, 536, 528, 531, 01671 531, 536, 531, 531, 531, 531, 531, 531, 531, 531, 01672 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 01673 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 01674 531, 531, 531, 531, 531, 531, 531, 531, 531, 540, 01675 542, 542, 551, 1109, 540, 542, 805, 1108, 540, 543, 01676 544, 545, 544, 548, 547, 544, 543, 547, 543, 543, 01677 01678 548, 543, 547, 545, 563, 1107, 563, 1106, 568, 563, 01679 551, 1105, 543, 551, 543, 568, 545, 805, 548, 543, 01680 568, 545, 543, 548, 553, 553, 1104, 553, 553, 553, 01681 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 01682 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 01683 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 01684 553, 553, 553, 553, 555, 556, 557, 558, 1101, 1071, 01685 557, 555, 556, 557, 558, 564, 557, 557, 566, 567, 01686 564, 1099, 564, 569, 569, 566, 567, 555, 569, 593, 01687 652, 593, 566, 556, 593, 558, 1071, 652, 558, 561, 01688 01689 561, 567, 561, 561, 561, 561, 561, 561, 561, 561, 01690 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 01691 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 01692 561, 561, 561, 561, 561, 561, 561, 561, 561, 565, 01693 582, 583, 1098, 584, 585, 586, 565, 582, 583, 565, 01694 584, 585, 586, 588, 582, 589, 594, 584, 594, 595, 01695 588, 594, 589, 583, 565, 590, 595, 585, 586, 565, 01696 855, 589, 590, 588, 590, 591, 598, 592, 588, 591, 01697 1097, 855, 591, 598, 592, 598, 591, 597, 590, 592, 01698 596, 596, 597, 595, 599, 596, 596, 597, 590, 598, 01699 01700 613, 599, 780, 609, 614, 1096, 616, 613, 1095, 598, 01701 609, 614, 609, 616, 613, 615, 617, 1093, 620, 599, 01702 614, 622, 615, 617, 599, 620, 609, 780, 622, 852, 01703 621, 623, 780, 615, 617, 616, 609, 621, 623, 622, 01704 624, 625, 626, 620, 627, 1091, 628, 624, 625, 626, 01705 629, 627, 621, 628, 864, 625, 630, 629, 1089, 631, 01706 852, 623, 627, 630, 628, 624, 631, 626, 631, 635, 01707 636, 640, 630, 1087, 637, 1084, 635, 636, 640, 641, 01708 629, 637, 631, 644, 645, 864, 641, 644, 645, 653, 01709 644, 645, 631, 655, 644, 645, 653, 655, 655, 646, 01710 01711 635, 636, 640, 646, 637, 1082, 646, 647, 648, 641, 01712 646, 1080, 649, 648, 647, 649, 645, 644, 648, 647, 01713 649, 675, 650, 651, 1079, 1078, 651, 650, 675, 646, 01714 650, 651, 656, 656, 1077, 657, 658, 656, 657, 661, 01715 659, 658, 659, 657, 660, 658, 661, 659, 660, 660, 01716 662, 661, 1068, 663, 662, 662, 663, 664, 665, 666, 01717 664, 663, 1006, 665, 666, 664, 667, 665, 1066, 666, 01718 1006, 669, 670, 667, 671, 667, 669, 670, 672, 671, 01719 679, 669, 670, 671, 922, 672, 673, 679, 674, 667, 01720 672, 673, 1006, 674, 680, 681, 673, 674, 679, 667, 01721 01722 683, 680, 681, 684, 687, 681, 686, 683, 680, 686, 01723 684, 687, 688, 689, 686, 922, 687, 690, 691, 688, 01724 689, 692, 688, 691, 690, 704, 692, 691, 705, 706, 01725 707, 692, 704, 690, 708, 705, 706, 707, 1058, 710, 01726 711, 708, 712, 689, 705, 706, 710, 711, 707, 712, 01727 1059, 712, 708, 715, 711, 704, 717, 710, 1059, 718, 01728 715, 717, 718, 721, 1055, 719, 717, 718, 719, 720, 01729 721, 722, 720, 719, 724, 721, 734, 720, 722, 740, 01730 722, 724, 743, 734, 744, 734, 740, 745, 746, 743, 01731 750, 744, 747, 751, 745, 746, 747, 750, 752, 734, 01732 01733 751, 754, 782, 747, 750, 752, 755, 782, 754, 734, 01734 746, 753, 743, 755, 744, 753, 757, 756, 753, 751, 01735 745, 758, 753, 757, 756, 759, 752, 761, 758, 755, 01736 754, 756, 759, 760, 761, 769, 761, 760, 1054, 1053, 01737 1052, 763, 769, 759, 760, 760, 757, 765, 766, 758, 01738 761, 763, 1049, 763, 767, 766, 771, 765, 765, 765, 01739 761, 767, 776, 771, 763, 1046, 1045, 776, 768, 767, 01740 765, 776, 768, 766, 763, 768, 1044, 773, 774, 768, 01741 765, 773, 774, 775, 773, 774, 771, 775, 773, 774, 01742 775, 777, 778, 807, 775, 781, 777, 778, 807, 927, 01743 01744 777, 774, 781, 773, 778, 779, 779, 781, 783, 784, 01745 779, 1043, 785, 783, 930, 783, 784, 786, 775, 785, 01746 788, 787, 786, 787, 785, 786, 787, 788, 789, 792, 01747 927, 790, 788, 789, 784, 793, 790, 789, 790, 784, 01748 791, 792, 793, 791, 793, 930, 798, 796, 791, 803, 01749 795, 796, 796, 798, 792, 797, 803, 804, 793, 792, 01750 795, 797, 795, 1042, 804, 799, 797, 1041, 793, 1037, 01751 799, 798, 808, 795, 799, 808, 798, 808, 809, 887, 01752 1035, 804, 816, 795, 887, 809, 810, 810, 810, 816, 01753 810, 811, 1032, 1031, 811, 854, 809, 810, 810, 811, 01754 01755 812, 812, 812, 822, 823, 826, 824, 825, 1030, 826, 01756 822, 823, 812, 824, 825, 828, 826, 1029, 854, 829, 01757 830, 822, 828, 832, 838, 812, 829, 830, 854, 830, 01758 812, 869, 836, 832, 834, 832, 824, 836, 869, 1028, 01759 825, 836, 829, 828, 834, 834, 834, 837, 839, 838, 01760 843, 1007, 837, 839, 838, 839, 840, 841, 840, 837, 01761 843, 840, 843, 856, 841, 861, 841, 1005, 863, 862, 01762 867, 870, 861, 868, 856, 863, 862, 867, 871, 861, 01763 868, 872, 874, 875, 873, 871, 856, 862, 872, 1004, 01764 875, 873, 1003, 867, 863, 1002, 856, 870, 868, 875, 01765 01766 871, 870, 873, 876, 872, 874, 877, 880, 998, 997, 01767 876, 881, 882, 877, 880, 874, 882, 883, 881, 882, 01768 996, 883, 995, 882, 883, 884, 994, 885, 883, 884, 01769 892, 876, 884, 881, 885, 883, 884, 886, 892, 885, 01770 886, 888, 882, 891, 889, 886, 889, 890, 888, 889, 01771 891, 890, 890, 893, 993, 992, 892, 991, 893, 884, 01772 892, 894, 894, 893, 897, 895, 894, 895, 896, 897, 01773 895, 896, 888, 898, 897, 899, 896, 988, 898, 986, 01774 898, 985, 899, 900, 900, 900, 900, 900, 900, 900, 01775 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 01776 01777 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 01778 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 01779 900, 900, 900, 901, 901, 904, 907, 917, 901, 904, 01780 909, 909, 909, 912, 912, 912, 904, 916, 932, 984, 01781 912, 921, 909, 925, 916, 912, 924, 943, 921, 924, 01782 925, 907, 983, 917, 924, 936, 907, 917, 937, 921, 01783 938, 932, 936, 981, 942, 937, 980, 938, 942, 947, 01784 936, 932, 946, 943, 925, 942, 947, 943, 975, 946, 01785 948, 974, 949, 951, 952, 938, 937, 948, 946, 949, 01786 951, 952, 953, 973, 954, 972, 953, 947, 954, 953, 01787 01788 955, 954, 959, 953, 955, 954, 956, 955, 949, 952, 01789 948, 955, 956, 957, 954, 971, 950, 956, 957, 958, 01790 957, 953, 960, 958, 958, 963, 955, 959, 963, 964, 01791 960, 965, 959, 963, 964, 966, 965, 967, 965, 964, 01792 966, 970, 967, 976, 966, 970, 970, 945, 960, 944, 01793 976, 941, 960, 969, 969, 969, 969, 969, 969, 969, 01794 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 01795 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 01796 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 01797 969, 969, 969, 977, 977, 977, 979, 979, 979, 982, 01798 01799 987, 940, 939, 979, 990, 977, 1000, 987, 979, 990, 01800 999, 990, 935, 1000, 1072, 1000, 1008, 999, 934, 1001, 01801 1001, 1001, 1072, 1008, 1009, 982, 1001, 1011, 987, 982, 01802 1012, 1009, 1013, 999, 1011, 933, 1013, 1012, 1008, 1013, 01803 1014, 931, 1015, 1013, 1014, 1022, 1015, 1014, 1012, 1015, 01804 1020, 1014, 1016, 1015, 1016, 1009, 1017, 1016, 1020, 1018, 01805 1018, 1018, 1014, 1017, 929, 1017, 1018, 1019, 1023, 1023, 01806 1022, 1015, 1024, 1023, 1019, 1022, 1074, 1024, 928, 926, 01807 1020, 1074, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01808 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01809 01810 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01811 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 01812 1025, 1025, 1025, 1027, 923, 1033, 1027, 1034, 920, 1036, 01813 1039, 1027, 1033, 1040, 919, 1034, 1036, 1039, 1036, 1039, 01814 1040, 1047, 1040, 1050, 1122, 1122, 918, 1056, 1047, 1122, 01815 1050, 1048, 1036, 1039, 1050, 1056, 1040, 1034, 1048, 1047, 01816 1048, 1051, 1036, 1039, 1060, 1061, 1040, 915, 1051, 914, 01817 1069, 1060, 1061, 1051, 1048, 1062, 1063, 1056, 1069, 1062, 01818 1063, 1085, 1062, 1063, 1048, 1064, 1062, 1063, 1064, 1085, 01819 1060, 913, 1065, 1064, 906, 1061, 1067, 1073, 1063, 1065, 01820 01821 1069, 1065, 1075, 1067, 1073, 1081, 1083, 1075, 1067, 1086, 01822 1088, 1075, 1081, 1090, 1083, 1065, 1086, 1088, 1086, 1092, 01823 1090, 1088, 1090, 1094, 1100, 1065, 1092, 1102, 1092, 905, 01824 1094, 1100, 1111, 1100, 1094, 1119, 1083, 1102, 1103, 1102, 01825 1111, 1112, 1092, 1119, 903, 1103, 1113, 1100, 1112, 1103, 01826 1102, 1127, 1092, 1113, 1114, 1116, 902, 1100, 878, 1127, 01827 1102, 1114, 866, 1114, 1155, 1116, 1112, 1116, 1113, 1120, 01828 1121, 1155, 1128, 1120, 1121, 1121, 1120, 1114, 1116, 1128, 01829 1120, 1128, 1130, 1139, 1131, 865, 1133, 1114, 1116, 1137, 01830 860, 1131, 1130, 1135, 1130, 1131, 1133, 1133, 1133, 1137, 01831 01832 1135, 1137, 1135, 1140, 1142, 1157, 1139, 1149, 1159, 1153, 01833 1140, 1154, 1157, 1153, 1140, 1142, 1139, 1149, 1154, 1149, 01834 1153, 1158, 1177, 1165, 1174, 1158, 1175, 1142, 1158, 1177, 01835 1149, 1174, 1158, 1159, 1175, 1162, 1154, 1142, 1159, 1160, 01836 1149, 859, 1174, 1160, 1160, 1162, 1165, 1162, 858, 1178, 01837 1185, 857, 1178, 853, 851, 850, 1165, 1178, 1185, 1195, 01838 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 01839 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 01840 1196, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 01841 1197, 1197, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 01842 01843 1198, 1198, 1198, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 01844 1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200, 1200, 01845 1200, 1200, 1200, 1200, 1200, 1201, 1201, 1201, 1201, 1201, 01846 1201, 1201, 1201, 1201, 1201, 1201, 1202, 1202, 849, 1202, 01847 1202, 1202, 1202, 1202, 1202, 848, 1202, 1203, 1203, 1203, 01848 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204, 847, 01849 846, 845, 1204, 844, 842, 1204, 1205, 1205, 1205, 1205, 01850 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 835, 831, 01851 827, 1206, 821, 820, 1206, 1207, 819, 1207, 818, 817, 01852 815, 814, 813, 802, 1207, 1208, 801, 1208, 1208, 800, 01853 01854 794, 1208, 772, 762, 1208, 1209, 749, 748, 741, 1209, 01855 739, 738, 1209, 1210, 737, 735, 733, 1210, 732, 731, 01856 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 01857 1211, 1211, 1212, 730, 729, 728, 1212, 727, 726, 1212, 01858 1213, 725, 723, 1213, 1213, 716, 713, 1213, 1214, 709, 01859 703, 702, 1214, 701, 700, 1214, 1215, 699, 698, 697, 01860 1215, 696, 695, 1215, 1216, 1216, 694, 1216, 1216, 1216, 01861 1216, 1216, 1216, 1216, 1216, 1217, 1217, 693, 1217, 1217, 01862 1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218, 1218, 1218, 01863 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1219, 678, 01864 01865 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 01866 677, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1221, 01867 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 01868 1222, 676, 668, 1222, 1223, 643, 639, 1223, 1224, 632, 01869 1224, 1224, 619, 618, 1224, 612, 610, 1224, 1225, 1225, 01870 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 01871 608, 607, 1226, 606, 605, 1226, 602, 601, 1226, 1227, 01872 600, 581, 1227, 1228, 579, 578, 1228, 1229, 577, 576, 01873 1229, 1230, 1230, 575, 574, 1230, 1231, 573, 572, 1231, 01874 1232, 571, 570, 1232, 1233, 562, 559, 1233, 554, 552, 01875 01876 1233, 532, 529, 1233, 1234, 1234, 519, 1234, 1234, 1234, 01877 1234, 1234, 1234, 1234, 1234, 1235, 1235, 502, 1235, 1235, 01878 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1236, 1236, 1236, 01879 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237, 500, 01880 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1238, 1238, 01881 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 01882 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 01883 1240, 491, 1240, 490, 489, 488, 487, 1240, 486, 1240, 01884 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 01885 1241, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 01886 01887 1242, 1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 01888 1243, 1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 01889 1244, 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 01890 1245, 1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, 1246, 01891 1246, 1246, 1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 01892 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1248, 1248, 1248, 01893 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1249, 01894 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1250, 01895 485, 484, 483, 1250, 482, 481, 1250, 1251, 480, 1251, 01896 479, 460, 459, 458, 457, 456, 1251, 1252, 455, 454, 01897 01898 1252, 1253, 452, 451, 450, 1253, 414, 384, 1253, 1254, 01899 1254, 379, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 01900 1255, 371, 367, 1255, 1256, 1256, 1256, 1256, 1256, 1256, 01901 1256, 1256, 1256, 1256, 1256, 1257, 1257, 1257, 1257, 1257, 01902 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1258, 1258, 1258, 01903 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1259, 1259, 01904 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1260, 365, 01905 1260, 1260, 362, 357, 356, 355, 354, 1260, 1261, 1261, 01906 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1262, 01907 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 01908 01909 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 01910 1263, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 01911 1264, 1264, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 01912 1265, 1265, 1265, 1266, 353, 1266, 1266, 352, 351, 1266, 01913 350, 349, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 01914 1267, 1267, 1267, 1267, 1268, 1268, 1268, 1268, 1268, 1268, 01915 1268, 1268, 1268, 1268, 1268, 1269, 1269, 1269, 1269, 348, 01916 347, 1269, 1269, 1269, 1269, 1269, 1270, 338, 324, 1270, 01917 323, 321, 1270, 319, 313, 1270, 312, 310, 309, 308, 01918 307, 306, 305, 304, 303, 302, 301, 300, 298, 297, 01919 01920 255, 222, 221, 218, 217, 211, 207, 204, 199, 192, 01921 185, 180, 179, 178, 176, 175, 174, 173, 172, 171, 01922 170, 169, 168, 167, 164, 162, 151, 138, 133, 131, 01923 124, 123, 121, 118, 117, 115, 114, 113, 112, 111, 01924 109, 108, 107, 92, 60, 58, 54, 52, 47, 1194, 01925 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01926 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01927 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 01928 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194 01929 } ; 01930 01931 extern int fscanYY_flex_debug; 01932 int fscanYY_flex_debug = 0; 01933 01934 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; 01935 static char *yy_full_match; 01936 static int yy_lp; 01937 static int yy_looking_for_trail_begin = 0; 01938 static int yy_full_lp; 01939 static int *yy_full_state; 01940 #define YY_TRAILING_MASK 0x2000 01941 #define YY_TRAILING_HEAD_MASK 0x4000 01942 #define REJECT \ 01943 { \ 01944 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ \ 01945 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ 01946 (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \ 01947 (yy_state_ptr) = yy_full_state; /* restore orig. state */ \ 01948 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ 01949 ++(yy_lp); \ 01950 goto find_rule; \ 01951 } 01952 01953 #define yymore() yymore_used_but_not_detected 01954 #define YY_MORE_ADJ 0 01955 #define YY_RESTORE_YY_MORE_OFFSET 01956 char *fscanYYtext; 01957 #line 1 "fortranscanner.l" 01958 /* -*- mode: fundamental; indent-tabs-mode: 1; -*- */ 01959 /***************************************************************************** 01960 * Parser for Fortran90 F subset 01961 * 01962 * Copyright (C) by Anke Visser 01963 * based on the work of Dimitri van Heesch. 01964 * 01965 * Permission to use, copy, modify, and distribute this software and its 01966 * documentation under the terms of the GNU General Public License is hereby 01967 * granted. No representations are made about the suitability of this software 01968 * for any purpose. It is provided "as is" without express or implied warranty. 01969 * See the GNU General Public License for more details. 01970 * 01971 * Documents produced by Doxygen are derivative works derived from the 01972 * input used in their production; they are not affected by this license. 01973 * 01974 */ 01975 /* Developer notes. 01976 * 01977 * - Consider using startScope(), endScope() functions with module, program, 01978 * subroutine or any other scope in fortran program. 01979 * 01980 * - Symbol modifiers (attributes) are collected using SymbolModifiers |= operator during 01981 * substructure parsing. When substructure ends all modifiers are applied to actual 01982 * entries in applyModifiers() functions. 01983 * 01984 * - How case insensitiveness should be handled in code? 01985 * On one side we have arg->name and entry->name, on another side modifierMap[name]. 01986 * In entries and arguments case is the same as in code, in modifier map case is lowered and 01987 * then it is compared to lowered entry/argument names. 01988 * 01989 * - Do not like constructs like aa{BS} or {BS}bb. Should try to handle blank space 01990 * with separate rule?: It seems it is often necessary, because we may parse something like 01991 * "functionA" or "MyInterface". So constructs like `(^|[ \t])interface({BS_}{ID})?/[ \t\n]' 01992 * are desired. 01993 */ 01994 #line 40 "fortranscanner.l" 01995 01996 #include <stdio.h> 01997 #include <stdlib.h> 01998 #include <assert.h> 01999 #include <ctype.h> 02000 02001 #include "qtbc.h" 02002 #include <qarray.h> 02003 #include <qstack.h> 02004 #include <qregexp.h> 02005 #include <unistd.h> 02006 #include <qfile.h> 02007 #include <qmap.h> 02008 02009 #include "fortranscanner.h" 02010 #include "entry.h" 02011 #include "message.h" 02012 #include "config.h" 02013 #include "doxygen.h" 02014 #include "util.h" 02015 #include "defargs.h" 02016 #include "language.h" 02017 #include "commentscan.h" 02018 #include "fortrancode.h" 02019 #include "pre.h" 02020 02021 #define YY_NEVER_INTERACTIVE 1 02022 02023 enum ScanVar { V_IGNORE, V_VARIABLE, V_PARAMETER}; 02024 02025 // {{{ ----- Helper structs ----- 02027 struct SymbolModifiers { 02028 enum Protection {NONE_P, PUBLIC, PRIVATE}; 02029 enum Direction {NONE_D, IN, OUT, INOUT}; 02030 02032 QCString type, returnName; 02033 Protection protection; 02034 Direction direction; 02035 bool optional; 02036 QCString dimension; 02037 bool allocatable; 02038 bool external; 02039 bool intrinsic; 02040 bool parameter; 02041 bool pointer; 02042 bool target; 02043 bool save; 02044 02045 SymbolModifiers() : type(), returnName(), protection(NONE_P), direction(NONE_D), 02046 optional(FALSE), dimension(), allocatable(FALSE), 02047 external(FALSE), intrinsic(FALSE), parameter(FALSE), 02048 pointer(FALSE), target(FALSE), save(FALSE) {} 02049 02050 SymbolModifiers& operator|=(const SymbolModifiers &mdfs); 02051 SymbolModifiers& operator|=(QCString mdfrString); 02052 }; 02053 02054 //ostream& operator<<(ostream& out, const SymbolModifiers& mdfs); 02055 02056 static const char *directionStrs[] = 02057 { 02058 "", "intent(in)", "intent(out)", "intent(inout)" 02059 }; 02060 02061 // }}} 02062 02063 /* ----------------------------------------------------------------- 02064 * 02065 * statics 02066 */ 02067 static ParserInterface *g_thisParser; 02068 static const char * inputString; 02069 static int inputPosition; 02070 static QFile inputFile; 02071 static QCString yyFileName; 02072 static int yyLineNr = 1 ; 02073 static Entry* current_root = 0 ; 02074 static Entry* global_root = 0 ; 02075 static Entry* file_root = 0 ; 02076 static Entry* current = 0 ; 02077 static Entry* last_entry = 0 ; 02078 static ScanVar v_type = V_IGNORE; // type of parsed variable 02079 static QList<Entry> moduleProcedures; // list of all interfaces which contain unresolved 02080 // module procedures 02081 static QCString docBlock; 02082 static QCString docBlockName; 02083 static bool docBlockInBody; 02084 static bool docBlockJavaStyle; 02085 02086 static MethodTypes mtype; 02087 static bool gstat; 02088 static Specifier virt; 02089 02090 static QCString debugStr; 02091 static QCString result; // function result 02092 static Argument *parameter; // element of parameter list 02093 static QCString argType; // fortran type of an argument of a parameter list 02094 static QCString argName; // last identifier name in variable list 02095 static QCString initializer; // initial value of a variable 02096 static QCString useModuleName; // name of module in the use statement 02097 static Protection defaultProtection; 02098 02099 static char stringStartSymbol; // single or double quote 02100 02102 static SymbolModifiers currentModifiers; 02104 static QMap<Entry*,QMap<QCString,SymbolModifiers> > modifiers; 02105 02106 //----------------------------------------------------------------------------- 02107 02108 static int yyread(char *buf,int max_size); 02109 static void startCommentBlock(bool); 02110 static void handleCommentBlock(const QCString &doc,bool brief); 02111 static void addCurrentEntry(); 02112 static void addInterface(QCString name); 02113 static Argument *addFortranParameter(const QCString &type,const QCString &name, const QCString docs); 02114 static void scanner_abort(); 02115 02116 static void startScope(Entry *scope); 02117 static bool endScope(Entry *scope); 02118 static QCString getFullName(Entry *e); 02119 static bool isTypeName(QCString name); 02120 static void resolveModuleProcedures(QList<Entry> &moduleProcedures, Entry *current_root); 02121 02122 //----------------------------------------------------------------------------- 02123 #undef YY_INPUT 02124 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); 02125 //----------------------------------------------------------------------------- 02126 02127 //----------------------------------------------------------------------------- 02128 //----------------------------------------------------------------------------- 02129 /* Assume that attribute statements are almost the same as attributes. */ 02130 /*%option debug */ 02131 //--------------------------------------------------------------------------------- 02156 #line 2157 "<stdout>" 02157 02158 #define INITIAL 0 02159 #define Subprog 1 02160 #define Parameterlist 2 02161 #define SubprogBody 3 02162 #define Start 4 02163 #define Comment 5 02164 #define Module 6 02165 #define ModuleBody 7 02166 #define AttributeList 8 02167 #define Variable 9 02168 #define Initialization 10 02169 #define ArrayInitializer 11 02170 #define Typedef 12 02171 #define TypedefBody 13 02172 #define InterfaceBody 14 02173 #define StrIgnore 15 02174 #define String 16 02175 #define Use 17 02176 #define UseOnly 18 02177 #define ModuleProcedure 19 02178 #define DocBlock 20 02179 #define DocBackLine 21 02180 #define EndDoc 22 02181 02182 #ifndef YY_NO_UNISTD_H 02183 /* Special case for "unistd.h", since it is non-ANSI. We include it way 02184 * down here because we want the user's section 1 to have been scanned first. 02185 * The user has a chance to override it with an option. 02186 */ 02187 #include <unistd.h> 02188 #endif 02189 02190 #ifndef YY_EXTRA_TYPE 02191 #define YY_EXTRA_TYPE void * 02192 #endif 02193 02194 static int yy_init_globals (void ); 02195 02196 /* Macros after this point can all be overridden by user definitions in 02197 * section 1. 02198 */ 02199 02200 #ifndef YY_SKIP_YYWRAP 02201 #ifdef __cplusplus 02202 extern "C" int fscanYYwrap (void ); 02203 #else 02204 extern int fscanYYwrap (void ); 02205 #endif 02206 #endif 02207 02208 static void yyunput (int c,char *buf_ptr ); 02209 02210 #ifndef yytext_ptr 02211 static void yy_flex_strncpy (char *,yyconst char *,int ); 02212 #endif 02213 02214 #ifdef YY_NEED_STRLEN 02215 static int yy_flex_strlen (yyconst char * ); 02216 #endif 02217 02218 #ifndef YY_NO_INPUT 02219 02220 #ifdef __cplusplus 02221 static int yyinput (void ); 02222 #else 02223 static int input (void ); 02224 #endif 02225 02226 #endif 02227 02228 static int yy_start_stack_ptr = 0; 02229 static int yy_start_stack_depth = 0; 02230 static int *yy_start_stack = NULL; 02231 02232 static void yy_push_state (int new_state ); 02233 02234 static void yy_pop_state (void ); 02235 02236 static int yy_top_state (void ); 02237 02238 /* Amount of stuff to slurp up with each read. */ 02239 #ifndef YY_READ_BUF_SIZE 02240 #define YY_READ_BUF_SIZE 8192 02241 #endif 02242 02243 /* Copy whatever the last rule matched to the standard output. */ 02244 #ifndef ECHO 02245 /* This used to be an fputs(), but since the string might contain NUL's, 02246 * we now use fwrite(). 02247 */ 02248 #define ECHO (void) fwrite( fscanYYtext, fscanYYleng, 1, fscanYYout ) 02249 #endif 02250 02251 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 02252 * is returned in "result". 02253 */ 02254 #ifndef YY_INPUT 02255 #define YY_INPUT(buf,result,max_size) \ 02256 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 02257 { \ 02258 int c = '*'; \ 02259 size_t n; \ 02260 for ( n = 0; n < max_size && \ 02261 (c = getc( fscanYYin )) != EOF && c != '\n'; ++n ) \ 02262 buf[n] = (char) c; \ 02263 if ( c == '\n' ) \ 02264 buf[n++] = (char) c; \ 02265 if ( c == EOF && ferror( fscanYYin ) ) \ 02266 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 02267 result = n; \ 02268 } \ 02269 else \ 02270 { \ 02271 errno=0; \ 02272 while ( (result = fread(buf, 1, max_size, fscanYYin))==0 && ferror(fscanYYin)) \ 02273 { \ 02274 if( errno != EINTR) \ 02275 { \ 02276 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 02277 break; \ 02278 } \ 02279 errno=0; \ 02280 clearerr(fscanYYin); \ 02281 } \ 02282 }\ 02283 \ 02284 02285 #endif 02286 02287 /* No semi-colon after return; correct usage is to write "yyterminate();" - 02288 * we don't want an extra ';' after the "return" because that will cause 02289 * some compilers to complain about unreachable statements. 02290 */ 02291 #ifndef yyterminate 02292 #define yyterminate() return YY_NULL 02293 #endif 02294 02295 /* Number of entries by which start-condition stack grows. */ 02296 #ifndef YY_START_STACK_INCR 02297 #define YY_START_STACK_INCR 25 02298 #endif 02299 02300 /* Report a fatal error. */ 02301 #ifndef YY_FATAL_ERROR 02302 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 02303 #endif 02304 02305 /* end tables serialization structures and prototypes */ 02306 02307 /* Default declaration of generated scanner - a define so the user can 02308 * easily add parameters. 02309 */ 02310 #ifndef YY_DECL 02311 #define YY_DECL_IS_OURS 1 02312 02313 extern int fscanYYlex (void); 02314 02315 #define YY_DECL int fscanYYlex (void) 02316 #endif /* !YY_DECL */ 02317 02318 /* Code executed at the beginning of each rule, after fscanYYtext and fscanYYleng 02319 * have been set up. 02320 */ 02321 #ifndef YY_USER_ACTION 02322 #define YY_USER_ACTION 02323 #endif 02324 02325 /* Code executed at the end of each rule. */ 02326 #ifndef YY_BREAK 02327 #define YY_BREAK break; 02328 #endif 02329 02330 #define YY_RULE_SETUP \ 02331 if ( fscanYYleng > 0 ) \ 02332 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ 02333 (fscanYYtext[fscanYYleng - 1] == '\n'); \ 02334 YY_USER_ACTION 02335 02338 YY_DECL 02339 { 02340 register yy_state_type yy_current_state; 02341 register char *yy_cp, *yy_bp; 02342 register int yy_act; 02343 02344 #line 234 "fortranscanner.l" 02345 02346 02347 /*-----------------------------------------------------------------------------------*/ 02348 02349 #line 2350 "<stdout>" 02350 02351 if ( !(yy_init) ) 02352 { 02353 (yy_init) = 1; 02354 02355 #ifdef YY_USER_INIT 02356 YY_USER_INIT; 02357 #endif 02358 02359 /* Create the reject buffer large enough to save one state per allowed character. */ 02360 if ( ! (yy_state_buf) ) 02361 (yy_state_buf) = (yy_state_type *)fscanYYalloc(YY_STATE_BUF_SIZE ); 02362 02363 if ( ! (yy_start) ) 02364 (yy_start) = 1; /* first start state */ 02365 02366 if ( ! fscanYYin ) 02367 fscanYYin = stdin; 02368 02369 if ( ! fscanYYout ) 02370 fscanYYout = stdout; 02371 02372 if ( ! YY_CURRENT_BUFFER ) { 02373 fscanYYensure_buffer_stack (); 02374 YY_CURRENT_BUFFER_LVALUE = 02375 fscanYY_create_buffer(fscanYYin,YY_BUF_SIZE ); 02376 } 02377 02378 fscanYY_load_buffer_state( ); 02379 } 02380 02381 while ( 1 ) /* loops until end-of-file is reached */ 02382 { 02383 yy_cp = (yy_c_buf_p); 02384 02385 /* Support of fscanYYtext. */ 02386 *yy_cp = (yy_hold_char); 02387 02388 /* yy_bp points to the position in yy_ch_buf of the start of 02389 * the current run. 02390 */ 02391 yy_bp = yy_cp; 02392 02393 yy_current_state = (yy_start); 02394 yy_current_state += YY_AT_BOL(); 02395 02396 (yy_state_ptr) = (yy_state_buf); 02397 *(yy_state_ptr)++ = yy_current_state; 02398 02399 yy_match: 02400 do 02401 { 02402 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 02403 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02404 { 02405 yy_current_state = (int) yy_def[yy_current_state]; 02406 if ( yy_current_state >= 1195 ) 02407 yy_c = yy_meta[(unsigned int) yy_c]; 02408 } 02409 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02410 *(yy_state_ptr)++ = yy_current_state; 02411 ++yy_cp; 02412 } 02413 while ( yy_base[yy_current_state] != 4150 ); 02414 02415 yy_find_action: 02416 yy_current_state = *--(yy_state_ptr); 02417 (yy_lp) = yy_accept[yy_current_state]; 02418 find_rule: /* we branch to this label when backing up */ 02419 for ( ; ; ) /* until we find what rule we matched */ 02420 { 02421 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) 02422 { 02423 yy_act = yy_acclist[(yy_lp)]; 02424 if ( yy_act & YY_TRAILING_HEAD_MASK || 02425 yy_looking_for_trail_begin ) 02426 { 02427 if ( yy_act == yy_looking_for_trail_begin ) 02428 { 02429 yy_looking_for_trail_begin = 0; 02430 yy_act &= ~YY_TRAILING_HEAD_MASK; 02431 break; 02432 } 02433 } 02434 else if ( yy_act & YY_TRAILING_MASK ) 02435 { 02436 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; 02437 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; 02438 (yy_full_match) = yy_cp; 02439 yy_full_state = (yy_state_ptr); 02440 yy_full_lp = (yy_lp); 02441 } 02442 else 02443 { 02444 (yy_full_match) = yy_cp; 02445 yy_full_state = (yy_state_ptr); 02446 yy_full_lp = (yy_lp); 02447 break; 02448 } 02449 ++(yy_lp); 02450 goto find_rule; 02451 } 02452 --yy_cp; 02453 yy_current_state = *--(yy_state_ptr); 02454 (yy_lp) = yy_accept[yy_current_state]; 02455 } 02456 02457 YY_DO_BEFORE_ACTION; 02458 02459 do_action: /* This label is used only to access EOF actions. */ 02460 02461 switch ( yy_act ) 02462 { /* beginning of action switch */ 02463 case 1: 02464 /* rule 1 can match eol */ 02465 YY_RULE_SETUP 02466 #line 238 "fortranscanner.l" 02467 { if (YY_START == String) REJECT; // "&" is ignored in strings 02468 yyLineNr++;} /* line not finished -> read next line (text after "&" may be 02469 comment and has to be ignored */ 02470 YY_BREAK 02471 /*------ ignore strings */ 02472 case 2: 02473 YY_RULE_SETUP 02474 #line 243 "fortranscanner.l" 02475 { /* ignore \\ */} 02476 YY_BREAK 02477 case 3: 02478 YY_RULE_SETUP 02479 #line 244 "fortranscanner.l" 02480 { /* ignore \" and \' */} 02481 YY_BREAK 02482 case 4: 02483 YY_RULE_SETUP 02484 #line 246 "fortranscanner.l" 02485 { // string ends with next quote without previous backspace 02486 if (fscanYYtext[0]!=stringStartSymbol) REJECT; // single vs double quote 02487 // fprintf(stderr,"string end: %s\n",debugStr.data()); 02488 yy_pop_state(); 02489 } 02490 YY_BREAK 02491 case 5: 02492 YY_RULE_SETUP 02493 #line 252 "fortranscanner.l" 02494 { debugStr+=fscanYYtext; } // ignore String contents (especially '!') 02495 YY_BREAK 02496 case 6: 02497 YY_RULE_SETUP 02498 #line 254 "fortranscanner.l" 02499 { /* string starts */ 02500 if (YY_START == StrIgnore) REJECT; // ignore in simple comments 02501 // fprintf(stderr,"string start: %c %d\n",fscanYYtext[0],yyLineNr); 02502 yy_push_state(YY_START); 02503 stringStartSymbol=fscanYYtext[0]; // single or double quote 02504 BEGIN(String); debugStr="!^!"; 02505 } 02506 YY_BREAK 02507 /*------ ignore simple comment (not documentation comments) */ 02508 case 7: 02509 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02510 (yy_c_buf_p) = yy_cp = yy_bp + 1; 02511 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02512 YY_RULE_SETUP 02513 #line 264 "fortranscanner.l" 02514 { if (YY_START == String) REJECT; // "!" is ignored in strings 02515 // skip comment line (without docu comments "!>" "!<" ) 02516 /* ignore further "!" and ignore comments in Strings */ 02517 if ((YY_START != StrIgnore) && (YY_START != String)) 02518 { 02519 yy_push_state(YY_START); 02520 BEGIN(StrIgnore); 02521 debugStr="*!"; 02522 //fprintf(stderr,"start comment %d\n",yyLineNr); 02523 } 02524 } 02525 YY_BREAK 02526 case 8: 02527 /* rule 8 can match eol */ 02528 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02529 (yy_c_buf_p) = yy_cp -= 1; 02530 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02531 YY_RULE_SETUP 02532 #line 275 "fortranscanner.l" 02533 { yy_pop_state(); // comment ends with endline character 02534 //fprintf(stderr,"end comment %d %s\n",yyLineNr,debugStr.data()); 02535 } // comment line ends 02536 YY_BREAK 02537 case 9: 02538 YY_RULE_SETUP 02539 #line 278 "fortranscanner.l" 02540 { debugStr+=fscanYYtext; } 02541 YY_BREAK 02542 /*------ use handling ------------------------------------------------------------*/ 02543 case 10: 02544 YY_RULE_SETUP 02545 #line 283 "fortranscanner.l" 02546 { 02547 yy_push_state(YY_START); 02548 BEGIN(Use); 02549 } 02550 YY_BREAK 02551 case 11: 02552 YY_RULE_SETUP 02553 #line 287 "fortranscanner.l" 02554 { 02555 //fprintf(stderr,"using dir %s\n",fscanYYtext); 02556 current->name=fscanYYtext; 02557 current->fileName = yyFileName; 02558 current->section=Entry::USINGDIR_SEC; 02559 current_root->addSubEntry(current); 02560 current = new Entry; 02561 yy_pop_state(); 02562 } 02563 YY_BREAK 02564 case 12: 02565 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02566 (yy_c_buf_p) = yy_cp -= 1; 02567 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02568 YY_RULE_SETUP 02569 #line 296 "fortranscanner.l" 02570 { 02571 useModuleName=fscanYYtext; 02572 } 02573 YY_BREAK 02574 case 13: 02575 YY_RULE_SETUP 02576 #line 299 "fortranscanner.l" 02577 { BEGIN(UseOnly); 02578 } 02579 YY_BREAK 02580 case 14: 02581 YY_RULE_SETUP 02582 #line 301 "fortranscanner.l" 02583 {} 02584 YY_BREAK 02585 case 15: 02586 YY_RULE_SETUP 02587 #line 302 "fortranscanner.l" 02588 { 02589 current->name= useModuleName+"::"+fscanYYtext; 02590 current->fileName = yyFileName; 02591 current->section=Entry::USINGDECL_SEC; 02592 current_root->addSubEntry(current); 02593 current = new Entry ; 02594 } 02595 YY_BREAK 02596 case 16: 02597 /* rule 16 can match eol */ 02598 YY_RULE_SETUP 02599 #line 309 "fortranscanner.l" 02600 { 02601 unput(*fscanYYtext); 02602 yy_pop_state(); 02603 } 02604 YY_BREAK 02605 /*------ ignore special fortran statements */ 02606 case 17: 02607 /* rule 17 can match eol */ 02608 YY_RULE_SETUP 02609 #line 315 "fortranscanner.l" 02610 { // handle interface block 02611 QCString name = fscanYYtext; 02612 int index = name.find("interface", 0, FALSE); 02613 index = name.find(QRegExp("[^ \\t]"), index+9); 02614 //printf(stderr,"%s,%d\n",name.data(),index); 02615 if (index!=-1) 02616 name = name.right(name.length()-index); 02617 else // interface without name, must be inside subprog 02618 name = "interface"; 02619 addInterface(name); 02620 yy_push_state(InterfaceBody); 02621 startScope(last_entry); 02622 } 02623 YY_BREAK 02624 case 18: 02625 YY_RULE_SETUP 02626 #line 328 "fortranscanner.l" 02627 { 02628 if (!endScope(current_root)) 02629 yyterminate(); 02630 yy_pop_state(); 02631 } 02632 YY_BREAK 02633 case 19: 02634 YY_RULE_SETUP 02635 #line 333 "fortranscanner.l" 02636 { yy_push_state(YY_START); 02637 BEGIN(ModuleProcedure); 02638 } 02639 YY_BREAK 02640 case 20: 02641 YY_RULE_SETUP 02642 #line 336 "fortranscanner.l" 02643 { 02644 current->section = Entry::FUNCTION_SEC ; 02645 current->name = fscanYYtext; 02646 moduleProcedures.append(current); 02647 addCurrentEntry(); 02648 } 02649 YY_BREAK 02650 case 21: 02651 /* rule 21 can match eol */ 02652 YY_RULE_SETUP 02653 #line 342 "fortranscanner.l" 02654 { unput(*fscanYYtext); 02655 yy_pop_state(); 02656 } 02657 YY_BREAK 02658 case 22: 02659 YY_RULE_SETUP 02660 #line 345 "fortranscanner.l" 02661 {} 02662 YY_BREAK 02663 /*------ module handling ------------------------------------------------------------*/ 02664 case 23: 02665 YY_RULE_SETUP 02666 #line 348 "fortranscanner.l" 02667 { // 02668 BEGIN(Module); 02669 defaultProtection = Public; 02670 } 02671 YY_BREAK 02672 case 24: 02673 YY_RULE_SETUP 02674 #line 352 "fortranscanner.l" 02675 { // end module 02676 resolveModuleProcedures(moduleProcedures, current_root); 02677 if (!endScope(current_root)) 02678 yyterminate(); 02679 defaultProtection = Public; 02680 BEGIN(Start); 02681 } 02682 YY_BREAK 02683 case 25: 02684 YY_RULE_SETUP 02685 #line 359 "fortranscanner.l" 02686 { 02687 //cout << "0=========> got module " << fscanYYtext << endl; 02688 current->section = Entry::NAMESPACE_SEC; 02689 current->name = fscanYYtext; 02690 current->type = "module"; 02691 current->fileName = yyFileName; 02692 current->bodyLine = yyLineNr; // used for source reference 02693 current->protection = Public ; 02694 02695 addCurrentEntry(); 02696 startScope(last_entry); 02697 02698 BEGIN(ModuleBody); 02699 } 02700 YY_BREAK 02701 /*------- access specification --------------------------------------------------------------------------*/ 02702 case 26: 02703 /* rule 26 can match eol */ 02704 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02705 (yy_c_buf_p) = yy_cp = yy_bp + 7; 02706 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02707 YY_RULE_SETUP 02708 #line 376 "fortranscanner.l" 02709 { defaultProtection = Private; } 02710 YY_BREAK 02711 case 27: 02712 /* rule 27 can match eol */ 02713 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02714 (yy_c_buf_p) = yy_cp = yy_bp + 6; 02715 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02716 YY_RULE_SETUP 02717 #line 377 "fortranscanner.l" 02718 { defaultProtection = Public; } 02719 YY_BREAK 02720 /*------- type definition -------------------------------------------------------------------------------*/ 02721 case 28: 02722 YY_RULE_SETUP 02723 #line 381 "fortranscanner.l" 02724 { /* type definition found : TYPE , access-spec::type-name |*/ 02725 yy_push_state(YY_START); 02726 BEGIN(Typedef); 02727 current->protection = defaultProtection; 02728 } 02729 YY_BREAK 02730 case 29: 02731 YY_RULE_SETUP 02732 #line 386 "fortranscanner.l" 02733 { 02734 QCString type= fscanYYtext; 02735 } 02736 YY_BREAK 02737 case 30: 02738 YY_RULE_SETUP 02739 #line 389 "fortranscanner.l" 02740 { /* type name found */ 02741 //cout << "=========> got typedef " << fscanYYtext << ": " << yyLineNr << endl; 02742 current->section = Entry::CLASS_SEC; // was Entry::STRUCT_SEC; 02743 current->spec = Entry::Struct; 02744 current->name = fscanYYtext; 02745 02746 /* if type is part of a module, mod name is necessary for output */ 02747 if ((current_root) && 02748 (current_root->section == Entry::CLASS_SEC || 02749 current_root->section == Entry::NAMESPACE_SEC)) 02750 //current_root->section == Entry::INTERFACE_SEC)) 02751 { 02752 current->name= current_root->name+"::"+current->name; 02753 } 02754 current->fileName = yyFileName; 02755 current->bodyLine = yyLineNr; 02756 addCurrentEntry(); 02757 startScope(last_entry); 02758 BEGIN(TypedefBody); 02759 } 02760 YY_BREAK 02761 case 31: 02762 YY_RULE_SETUP 02763 #line 409 "fortranscanner.l" 02764 { /* end type definition */ 02765 //cout << "=========> got typedef end "<< endl; 02766 if (!endScope(current_root)) 02767 yyterminate(); 02768 yy_pop_state(); 02769 } 02770 YY_BREAK 02771 /*------- module/global/typedef variable ---------------------------------------------------*/ 02772 case 32: 02773 YY_RULE_SETUP 02774 #line 418 "fortranscanner.l" 02775 { 02776 //cout << "1e=========> got end subprog: " << fscanYYtext << endl; 02777 02778 /* args is used for parameters in list of functions, argList for 02779 parameters in detailed function descripttion */ 02780 //current->args = argListToString(current->argList); 02781 //current->endBodyLine = yyLineNr; // ??? what ist endBodyLine for 02782 if (!endScope(current_root)) 02783 yyterminate(); 02784 yy_pop_state() ; 02785 } 02786 YY_BREAK 02787 02788 case 33: 02789 /* rule 33 can match eol */ 02790 *yy_cp = (yy_hold_char); /* undo effects of setting up fscanYYtext */ 02791 (yy_c_buf_p) = yy_cp -= 1; 02792 YY_DO_BEFORE_ACTION; /* set up fscanYYtext again */ 02793 YY_RULE_SETUP 02794 #line 430 "fortranscanner.l" 02795 { 02796 /* variable declaration starts */ 02797 //fprintf(stderr,"4=========> got variable type: %s\n",fscanYYtext); 02798 QCString help=fscanYYtext; 02799 help= help.simplifyWhiteSpace(); 02800 argType= help; 02801 yy_push_state(AttributeList); 02802 } 02803 YY_BREAK 02804 case 34: 02805 /* rule 34 can match eol */ 02806 YY_RULE_SETUP 02807 #line 438 "fortranscanner.l" 02808 { /* check for preprocessor symbol expand to type */ 02809 QCString str = fscanYYtext; 02810 str = str.stripWhiteSpace(); 02811 DefineDict* defines = getFileDefineDict(); 02812 QCString name; 02813 int index = str.find("("); 02814 if (index != -1) 02815 name = str.left(index).stripWhiteSpace(); 02816 else 02817 name = str; 02818 02819 Define *define = (*defines)[name]; 02820 if (define != 0 && isTypeName(define->definition)) 02821 { 02822 argType = str; 02823 yy_push_state(AttributeList); 02824 } 02825 else 02826 { 02827 REJECT; 02828 } 02829 } 02830 YY_BREAK 02831 case 35: 02832 /* rule 35 can match eol */ 02833 #line 461 "fortranscanner.l" 02834 case 36: 02835 /* rule 36 can match eol */ 02836 YY_RULE_SETUP 02837 #line 461 "fortranscanner.l" 02838 { 02839 /* attribute statement starts */ 02840 //fprintf(stderr,"5=========> Attribute statement: %s\n", fscanYYtext); 02841 QCString tmp = fscanYYtext; 02842 currentModifiers |= tmp.stripWhiteSpace(); 02843 argType=""; 02844 yy_push_state(YY_START); 02845 BEGIN( AttributeList ) ; 02846 } 02847 YY_BREAK 02848 case 37: 02849 YY_RULE_SETUP 02850 #line 470 "fortranscanner.l" 02851 { 02852 } 02853 YY_BREAK 02854 02855 02856 case 38: 02857 YY_RULE_SETUP 02858 #line 474 "fortranscanner.l" 02859 {} 02860 YY_BREAK 02861 case 39: 02862 YY_RULE_SETUP 02863 #line 475 "fortranscanner.l" 02864 {} 02865 YY_BREAK 02866 case 40: 02867 /* rule 40 can match eol */ 02868 YY_RULE_SETUP 02869 #line 476 "fortranscanner.l" 02870 { /* update current modifiers */ 02871 QCString tmp = fscanYYtext; 02872 currentModifiers |= (tmp); 02873 } 02874 YY_BREAK 02875 case 41: 02876 YY_RULE_SETUP 02877 #line 480 "fortranscanner.l" 02878 { /* end attribute list */ 02879 BEGIN( Variable ); 02880 } 02881 YY_BREAK 02882 case 42: 02883 YY_RULE_SETUP 02884 #line 483 "fortranscanner.l" 02885 { /* unknown attribute, consider variable name */ 02886 //cout<<"start variables, unput "<<*fscanYYtext<<endl; 02887 unput(*fscanYYtext); 02888 BEGIN( Variable ); 02889 } 02890 YY_BREAK 02891 02892 case 43: 02893 YY_RULE_SETUP 02894 #line 490 "fortranscanner.l" 02895 {} 02896 YY_BREAK 02897 case 44: 02898 YY_RULE_SETUP 02899 #line 491 "fortranscanner.l" 02900 { /* parse variable declaration */ 02901 //cout << "5=========> got variable: " << argType << "::" << fscanYYtext << endl; 02902 /* work around for bug in QCString.replace (QCString works) */ 02903 QCString name=fscanYYtext; 02904 /* remember attributes for the symbol */ 02905 modifiers[current_root][name.lower()] |= currentModifiers; 02906 argName= name; 02907 int last= yy_top_state(); 02908 02909 v_type= V_IGNORE; 02910 if (!argType.isEmpty() && last != SubprogBody) 02911 { // new variable entry 02912 v_type = V_VARIABLE; 02913 current->section = Entry::VARIABLE_SEC; 02914 current->name = argName; 02915 current->type = argType; 02916 current->fileName = yyFileName; 02917 current->bodyLine = yyLineNr; // used for source reference 02918 addCurrentEntry(); 02919 } 02920 else if (!argType.isEmpty()) 02921 { // deklaration of parameter list: add type for corr. parameter 02922 parameter= addFortranParameter(argType,argName,docBlock); 02923 if (parameter) v_type= V_PARAMETER; 02924 // save, it may be function return type 02925 modifiers[current_root][name.lower()].type = argType; 02926 // any accumulated doc for argument should be emptied, 02927 // because it is handled other way and this doc can be 02928 // unexpectedly passed to the next member. 02929 current->doc.resize(0); 02930 current->brief.resize(0); 02931 } 02932 } 02933 YY_BREAK 02934 case 45: 02935 /* rule 45 can match eol */ 02936 YY_RULE_SETUP 02937 #line 524 "fortranscanner.l" 02938 { /* dimension of the previous entry. */ 02939 QCString name(argName); 02940 QCString attr("dimension"); 02941 attr += fscanYYtext; 02942 modifiers[current_root][name] |= attr; 02943 } 02944 YY_BREAK 02945 case 46: 02946 YY_RULE_SETUP 02947 #line 530 "fortranscanner.l" 02948 {} 02949 YY_BREAK 02950 case 47: 02951 YY_RULE_SETUP 02952 #line 531 "fortranscanner.l" 02953 { yy_push_state(YY_START); 02954 initializer=""; 02955 BEGIN(Initialization); 02956 } 02957 YY_BREAK 02958 case 48: 02959 /* rule 48 can match eol */ 02960 YY_RULE_SETUP 02961 #line 535 "fortranscanner.l" 02962 { currentModifiers = SymbolModifiers(); 02963 yy_pop_state(); // end variable deklaration list 02964 yyLineNr++; 02965 docBlock.resize(0); 02966 } 02967 YY_BREAK 02968 case 49: 02969 YY_RULE_SETUP 02970 #line 541 "fortranscanner.l" 02971 { initializer+=fscanYYtext; 02972 BEGIN(ArrayInitializer); // initializer may contain comma 02973 } 02974 YY_BREAK 02975 case 50: 02976 YY_RULE_SETUP 02977 #line 544 "fortranscanner.l" 02978 { initializer+=fscanYYtext; 02979 BEGIN(Initialization); 02980 } 02981 YY_BREAK 02982 case 51: 02983 YY_RULE_SETUP 02984 #line 547 "fortranscanner.l" 02985 { initializer+=fscanYYtext; } 02986 YY_BREAK 02987 case 52: 02988 YY_RULE_SETUP 02989 #line 548 "fortranscanner.l" 02990 { yy_pop_state(); // end initialization 02991 if (v_type == V_VARIABLE) last_entry->initializer= initializer; 02992 } 02993 YY_BREAK 02994 case 53: 02995 /* rule 53 can match eol */ 02996 YY_RULE_SETUP 02997 #line 551 "fortranscanner.l" 02998 { //| 02999 yy_pop_state(); // end initialization 03000 if (v_type == V_VARIABLE) last_entry->initializer= initializer; 03001 unput(*fscanYYtext); 03002 } 03003 YY_BREAK 03004 case 54: 03005 YY_RULE_SETUP 03006 #line 556 "fortranscanner.l" 03007 { initializer+=fscanYYtext; } 03008 YY_BREAK 03009 /*------ fortran subroutine/function handling ------------------------------------------------------------*/ 03010 /* Start is initial condition */ 03011 case 55: 03012 /* rule 55 can match eol */ 03013 YY_RULE_SETUP 03014 #line 561 "fortranscanner.l" 03015 { 03016 // TYPE_SPEC is for old function style function result 03017 result= fscanYYtext; 03018 result= result.stripWhiteSpace(); 03019 current->type = result; 03020 } 03021 YY_BREAK 03022 case 56: 03023 YY_RULE_SETUP 03024 #line 567 "fortranscanner.l" 03025 { // Fortran subroutine or function found 03026 //fprintf(stderr,"1=========> got subprog, type: %s\n",fscanYYtext); 03027 current->section = Entry::FUNCTION_SEC ; 03028 QCString subtype = fscanYYtext; subtype=subtype.lower().stripWhiteSpace(); 03029 if (!current->type) current->type = subtype; 03030 current->fileName = yyFileName; 03031 current->bodyLine = yyLineNr; // used for source reference 03032 current->startLine = -1; // ??? what is startLine for? 03033 current->args.resize(0); 03034 current->argList->clear(); 03035 yy_push_state(Subprog); 03036 docBlock.resize(0); 03037 } 03038 YY_BREAK 03039 case 57: 03040 YY_RULE_SETUP 03041 #line 580 "fortranscanner.l" 03042 { /* ignore white space */ } 03043 YY_BREAK 03044 case 58: 03045 YY_RULE_SETUP 03046 #line 581 "fortranscanner.l" 03047 { current->name = fscanYYtext; 03048 //cout << "1a==========> got " << current->type << " " << fscanYYtext << " " << yyLineNr << endl; 03049 modifiers[current_root][current->name.lower()].returnName = current->name; 03050 BEGIN(Parameterlist); 03051 } 03052 YY_BREAK 03053 case 59: 03054 /* rule 59 can match eol */ 03055 YY_RULE_SETUP 03056 #line 586 "fortranscanner.l" 03057 { 03058 //current->type not yet available 03059 QCString arglist= fscanYYtext; 03060 //cout << "3=========> got parameterlist " << fscanYYtext << endl; 03061 yyLineNr+= arglist.contains('\n'); 03062 static QRegExp re("&[^\n]*\n"); 03063 arglist = arglist.replace(re,""); 03064 //cout << "3=========> got parameterlist " << arglist << endl; 03065 current->args = arglist; 03066 current->args = removeRedundantWhiteSpace(current->args); 03067 stringToArgumentList(current->args, current->argList); 03068 addCurrentEntry(); 03069 startScope(last_entry); 03070 BEGIN(SubprogBody); 03071 } 03072 YY_BREAK 03073 case 60: 03074 /* rule 60 can match eol */ 03075 YY_RULE_SETUP 03076 #line 601 "fortranscanner.l" 03077 { 03078 yyLineNr++; 03079 //cout << "3=========> without parameterlist " <<endl; 03080 stringToArgumentList("", current->argList); 03081 addCurrentEntry(); 03082 startScope(last_entry); 03083 BEGIN(SubprogBody); 03084 } 03085 YY_BREAK 03086 case 61: 03087 YY_RULE_SETUP 03088 #line 609 "fortranscanner.l" 03089 { 03090 result= fscanYYtext; 03091 result= result.right(result.length()-result.find("(")-1); 03092 result= result.stripWhiteSpace(); 03093 modifiers[current_root->parent()][current_root->name.lower()].returnName = result; 03094 //cout << "=====> got result " << result << endl; 03095 } 03096 YY_BREAK 03097 /*---- documentation comments --------------------------------------------------------------------*/ 03098 case 62: 03099 YY_RULE_SETUP 03100 #line 619 "fortranscanner.l" 03101 { /* backward docu comment (only one line) */ 03102 if (v_type != V_IGNORE) { 03103 yy_push_state(YY_START); 03104 current->docLine = yyLineNr; 03105 docBlockJavaStyle = FALSE; 03106 docBlock.resize(0); 03107 docBlockJavaStyle = Config_getBool("JAVADOC_AUTOBRIEF"); 03108 startCommentBlock(TRUE); 03109 BEGIN(DocBackLine); 03110 } 03111 } 03112 YY_BREAK 03113 case 63: 03114 YY_RULE_SETUP 03115 #line 630 "fortranscanner.l" 03116 { // contents of current comment line 03117 docBlock=fscanYYtext; 03118 if (v_type == V_VARIABLE) 03119 { 03120 Entry *tmp_entry = current; 03121 current = last_entry; // temporarily switch to the previous entry 03122 handleCommentBlock(docBlock,TRUE); 03123 current=tmp_entry; 03124 } 03125 else if (v_type == V_PARAMETER) 03126 { 03127 parameter->docs=docBlock; 03128 } 03129 yy_pop_state(); 03130 } 03131 YY_BREAK 03132 case 64: 03133 YY_RULE_SETUP 03134 #line 646 "fortranscanner.l" 03135 { 03136 yy_push_state(YY_START); 03137 current->docLine = yyLineNr; 03138 docBlockJavaStyle = FALSE; 03139 docBlock.resize(0); 03140 docBlockJavaStyle = Config_getBool("JAVADOC_AUTOBRIEF"); 03141 startCommentBlock(TRUE); 03142 BEGIN(DocBlock); 03143 //cout << "start DocBlock " << endl; 03144 } 03145 YY_BREAK 03146 case 65: 03147 YY_RULE_SETUP 03148 #line 657 "fortranscanner.l" 03149 { // contents of current comment line 03150 docBlock+=fscanYYtext; 03151 } 03152 YY_BREAK 03153 case 66: 03154 /* rule 66 can match eol */ 03155 YY_RULE_SETUP 03156 #line 660 "fortranscanner.l" 03157 { // comment block (next line is also comment line) 03158 docBlock+="\n"; // \n is necessary for lists 03159 yyLineNr++; 03160 } 03161 YY_BREAK 03162 case 67: 03163 /* rule 67 can match eol */ 03164 YY_RULE_SETUP 03165 #line 664 "fortranscanner.l" 03166 { // comment block ends at the end of this line 03167 //cout <<"3=========> comment block : "<< docBlock << endl; 03168 unput(*fscanYYtext); 03169 handleCommentBlock(docBlock,TRUE); 03170 yy_pop_state(); 03171 } 03172 YY_BREAK 03173 /*------------------------------------------------------------------------------------------------*/ 03174 case 68: 03175 /* rule 68 can match eol */ 03176 YY_RULE_SETUP 03177 #line 673 "fortranscanner.l" 03178 { 03179 yyLineNr++; 03180 //if (debugStr.stripWhiteSpace().length() > 0) cout << "ignored text: " << debugStr << " state: " <<YY_START << endl; 03181 debugStr=""; 03182 } 03183 YY_BREAK 03184 /*---- error: EOF in wrong state --------------------------------------------------------------------*/ 03185 case YY_STATE_EOF(SubprogBody): 03186 case YY_STATE_EOF(ModuleBody): 03187 case YY_STATE_EOF(String): 03188 case YY_STATE_EOF(StrIgnore): 03189 case YY_STATE_EOF(InterfaceBody): 03190 #line 680 "fortranscanner.l" 03191 { 03192 fprintf(stderr,"==== Error: EOF reached in wrong state (end missing)"); 03193 scanner_abort(); 03194 yyterminate(); 03195 } 03196 YY_BREAK 03197 case 69: 03198 YY_RULE_SETUP 03199 #line 685 "fortranscanner.l" 03200 { 03201 debugStr+=fscanYYtext; 03202 } // ignore remaining text 03203 YY_BREAK 03204 /**********************************************************************************/ 03205 /**********************************************************************************/ 03206 /**********************************************************************************/ 03207 case 70: 03208 YY_RULE_SETUP 03209 #line 692 "fortranscanner.l" 03210 ECHO; 03211 YY_BREAK 03212 #line 3213 "<stdout>" 03213 case YY_STATE_EOF(INITIAL): 03214 case YY_STATE_EOF(Subprog): 03215 case YY_STATE_EOF(Parameterlist): 03216 case YY_STATE_EOF(Start): 03217 case YY_STATE_EOF(Comment): 03218 case YY_STATE_EOF(Module): 03219 case YY_STATE_EOF(AttributeList): 03220 case YY_STATE_EOF(Variable): 03221 case YY_STATE_EOF(Initialization): 03222 case YY_STATE_EOF(ArrayInitializer): 03223 case YY_STATE_EOF(Typedef): 03224 case YY_STATE_EOF(TypedefBody): 03225 case YY_STATE_EOF(Use): 03226 case YY_STATE_EOF(UseOnly): 03227 case YY_STATE_EOF(ModuleProcedure): 03228 case YY_STATE_EOF(DocBlock): 03229 case YY_STATE_EOF(DocBackLine): 03230 case YY_STATE_EOF(EndDoc): 03231 yyterminate(); 03232 03233 case YY_END_OF_BUFFER: 03234 { 03235 /* Amount of text matched not including the EOB char. */ 03236 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 03237 03238 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 03239 *yy_cp = (yy_hold_char); 03240 YY_RESTORE_YY_MORE_OFFSET 03241 03242 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 03243 { 03244 /* We're scanning a new file or input source. It's 03245 * possible that this happened because the user 03246 * just pointed fscanYYin at a new source and called 03247 * fscanYYlex(). If so, then we have to assure 03248 * consistency between YY_CURRENT_BUFFER and our 03249 * globals. Here is the right place to do so, because 03250 * this is the first action (other than possibly a 03251 * back-up) that will match for the new input source. 03252 */ 03253 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 03254 YY_CURRENT_BUFFER_LVALUE->yy_input_file = fscanYYin; 03255 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 03256 } 03257 03258 /* Note that here we test for yy_c_buf_p "<=" to the position 03259 * of the first EOB in the buffer, since yy_c_buf_p will 03260 * already have been incremented past the NUL character 03261 * (since all states make transitions on EOB to the 03262 * end-of-buffer state). Contrast this with the test 03263 * in input(). 03264 */ 03265 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 03266 { /* This was really a NUL. */ 03267 yy_state_type yy_next_state; 03268 03269 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 03270 03271 yy_current_state = yy_get_previous_state( ); 03272 03273 /* Okay, we're now positioned to make the NUL 03274 * transition. We couldn't have 03275 * yy_get_previous_state() go ahead and do it 03276 * for us because it doesn't know how to deal 03277 * with the possibility of jamming (and we don't 03278 * want to build jamming into it because then it 03279 * will run more slowly). 03280 */ 03281 03282 yy_next_state = yy_try_NUL_trans( yy_current_state ); 03283 03284 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03285 03286 if ( yy_next_state ) 03287 { 03288 /* Consume the NUL. */ 03289 yy_cp = ++(yy_c_buf_p); 03290 yy_current_state = yy_next_state; 03291 goto yy_match; 03292 } 03293 03294 else 03295 { 03296 yy_cp = (yy_c_buf_p); 03297 goto yy_find_action; 03298 } 03299 } 03300 03301 else switch ( yy_get_next_buffer( ) ) 03302 { 03303 case EOB_ACT_END_OF_FILE: 03304 { 03305 (yy_did_buffer_switch_on_eof) = 0; 03306 03307 if ( fscanYYwrap( ) ) 03308 { 03309 /* Note: because we've taken care in 03310 * yy_get_next_buffer() to have set up 03311 * fscanYYtext, we can now set up 03312 * yy_c_buf_p so that if some total 03313 * hoser (like flex itself) wants to 03314 * call the scanner after we return the 03315 * YY_NULL, it'll still work - another 03316 * YY_NULL will get returned. 03317 */ 03318 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 03319 03320 yy_act = YY_STATE_EOF(YY_START); 03321 goto do_action; 03322 } 03323 03324 else 03325 { 03326 if ( ! (yy_did_buffer_switch_on_eof) ) 03327 YY_NEW_FILE; 03328 } 03329 break; 03330 } 03331 03332 case EOB_ACT_CONTINUE_SCAN: 03333 (yy_c_buf_p) = 03334 (yytext_ptr) + yy_amount_of_matched_text; 03335 03336 yy_current_state = yy_get_previous_state( ); 03337 03338 yy_cp = (yy_c_buf_p); 03339 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03340 goto yy_match; 03341 03342 case EOB_ACT_LAST_MATCH: 03343 (yy_c_buf_p) = 03344 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 03345 03346 yy_current_state = yy_get_previous_state( ); 03347 03348 yy_cp = (yy_c_buf_p); 03349 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03350 goto yy_find_action; 03351 } 03352 break; 03353 } 03354 03355 default: 03356 YY_FATAL_ERROR( 03357 "fatal flex scanner internal error--no action found" ); 03358 } /* end of action switch */ 03359 } /* end of scanning one token */ 03360 } /* end of fscanYYlex */ 03361 03362 /* yy_get_next_buffer - try to read in a new buffer 03363 * 03364 * Returns a code representing an action: 03365 * EOB_ACT_LAST_MATCH - 03366 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 03367 * EOB_ACT_END_OF_FILE - end of file 03368 */ 03369 static int yy_get_next_buffer (void) 03370 { 03371 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 03372 register char *source = (yytext_ptr); 03373 register int number_to_move, i; 03374 int ret_val; 03375 03376 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 03377 YY_FATAL_ERROR( 03378 "fatal flex scanner internal error--end of buffer missed" ); 03379 03380 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 03381 { /* Don't try to fill the buffer, so this is an EOF. */ 03382 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 03383 { 03384 /* We matched a single character, the EOB, so 03385 * treat this as a final EOF. 03386 */ 03387 return EOB_ACT_END_OF_FILE; 03388 } 03389 03390 else 03391 { 03392 /* We matched some text prior to the EOB, first 03393 * process it. 03394 */ 03395 return EOB_ACT_LAST_MATCH; 03396 } 03397 } 03398 03399 /* Try to read more data. */ 03400 03401 /* First move last chars to start of buffer. */ 03402 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 03403 03404 for ( i = 0; i < number_to_move; ++i ) 03405 *(dest++) = *(source++); 03406 03407 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 03408 /* don't do the read, it's not guaranteed to return an EOF, 03409 * just force an EOF 03410 */ 03411 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 03412 03413 else 03414 { 03415 int num_to_read = 03416 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 03417 03418 while ( num_to_read <= 0 ) 03419 { /* Not enough room in the buffer - grow it. */ 03420 03421 YY_FATAL_ERROR( 03422 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 03423 03424 } 03425 03426 if ( num_to_read > YY_READ_BUF_SIZE ) 03427 num_to_read = YY_READ_BUF_SIZE; 03428 03429 /* Read in more data. */ 03430 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 03431 (yy_n_chars), num_to_read ); 03432 03433 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03434 } 03435 03436 if ( (yy_n_chars) == 0 ) 03437 { 03438 if ( number_to_move == YY_MORE_ADJ ) 03439 { 03440 ret_val = EOB_ACT_END_OF_FILE; 03441 fscanYYrestart(fscanYYin ); 03442 } 03443 03444 else 03445 { 03446 ret_val = EOB_ACT_LAST_MATCH; 03447 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 03448 YY_BUFFER_EOF_PENDING; 03449 } 03450 } 03451 03452 else 03453 ret_val = EOB_ACT_CONTINUE_SCAN; 03454 03455 (yy_n_chars) += number_to_move; 03456 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 03457 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 03458 03459 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 03460 03461 return ret_val; 03462 } 03463 03464 /* yy_get_previous_state - get the state just before the EOB char was reached */ 03465 03466 static yy_state_type yy_get_previous_state (void) 03467 { 03468 register yy_state_type yy_current_state; 03469 register char *yy_cp; 03470 03471 yy_current_state = (yy_start); 03472 yy_current_state += YY_AT_BOL(); 03473 03474 (yy_state_ptr) = (yy_state_buf); 03475 *(yy_state_ptr)++ = yy_current_state; 03476 03477 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 03478 { 03479 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 03480 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 03481 { 03482 yy_current_state = (int) yy_def[yy_current_state]; 03483 if ( yy_current_state >= 1195 ) 03484 yy_c = yy_meta[(unsigned int) yy_c]; 03485 } 03486 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 03487 *(yy_state_ptr)++ = yy_current_state; 03488 } 03489 03490 return yy_current_state; 03491 } 03492 03493 /* yy_try_NUL_trans - try to make a transition on the NUL character 03494 * 03495 * synopsis 03496 * next_state = yy_try_NUL_trans( current_state ); 03497 */ 03498 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 03499 { 03500 register int yy_is_jam; 03501 03502 register YY_CHAR yy_c = 1; 03503 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 03504 { 03505 yy_current_state = (int) yy_def[yy_current_state]; 03506 if ( yy_current_state >= 1195 ) 03507 yy_c = yy_meta[(unsigned int) yy_c]; 03508 } 03509 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 03510 yy_is_jam = (yy_current_state == 1194); 03511 if ( ! yy_is_jam ) 03512 *(yy_state_ptr)++ = yy_current_state; 03513 03514 return yy_is_jam ? 0 : yy_current_state; 03515 } 03516 03517 static void yyunput (int c, register char * yy_bp ) 03518 { 03519 register char *yy_cp; 03520 03521 yy_cp = (yy_c_buf_p); 03522 03523 /* undo effects of setting up fscanYYtext */ 03524 *yy_cp = (yy_hold_char); 03525 03526 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 03527 { /* need to shift things up to make room */ 03528 /* +2 for EOB chars. */ 03529 register int number_to_move = (yy_n_chars) + 2; 03530 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 03531 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 03532 register char *source = 03533 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 03534 03535 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 03536 *--dest = *--source; 03537 03538 yy_cp += (int) (dest - source); 03539 yy_bp += (int) (dest - source); 03540 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 03541 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 03542 03543 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 03544 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 03545 } 03546 03547 *--yy_cp = (char) c; 03548 03549 (yytext_ptr) = yy_bp; 03550 (yy_hold_char) = *yy_cp; 03551 (yy_c_buf_p) = yy_cp; 03552 } 03553 03554 #ifndef YY_NO_INPUT 03555 #ifdef __cplusplus 03556 static int yyinput (void) 03557 #else 03558 static int input (void) 03559 #endif 03560 03561 { 03562 int c; 03563 03564 *(yy_c_buf_p) = (yy_hold_char); 03565 03566 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 03567 { 03568 /* yy_c_buf_p now points to the character we want to return. 03569 * If this occurs *before* the EOB characters, then it's a 03570 * valid NUL; if not, then we've hit the end of the buffer. 03571 */ 03572 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 03573 /* This was really a NUL. */ 03574 *(yy_c_buf_p) = '\0'; 03575 03576 else 03577 { /* need more input */ 03578 int offset = (yy_c_buf_p) - (yytext_ptr); 03579 ++(yy_c_buf_p); 03580 03581 switch ( yy_get_next_buffer( ) ) 03582 { 03583 case EOB_ACT_LAST_MATCH: 03584 /* This happens because yy_g_n_b() 03585 * sees that we've accumulated a 03586 * token and flags that we need to 03587 * try matching the token before 03588 * proceeding. But for input(), 03589 * there's no matching to consider. 03590 * So convert the EOB_ACT_LAST_MATCH 03591 * to EOB_ACT_END_OF_FILE. 03592 */ 03593 03594 /* Reset buffer status. */ 03595 fscanYYrestart(fscanYYin ); 03596 03597 /*FALLTHROUGH*/ 03598 03599 case EOB_ACT_END_OF_FILE: 03600 { 03601 if ( fscanYYwrap( ) ) 03602 return 0; 03603 03604 if ( ! (yy_did_buffer_switch_on_eof) ) 03605 YY_NEW_FILE; 03606 #ifdef __cplusplus 03607 return yyinput(); 03608 #else 03609 return input(); 03610 #endif 03611 } 03612 03613 case EOB_ACT_CONTINUE_SCAN: 03614 (yy_c_buf_p) = (yytext_ptr) + offset; 03615 break; 03616 } 03617 } 03618 } 03619 03620 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 03621 *(yy_c_buf_p) = '\0'; /* preserve fscanYYtext */ 03622 (yy_hold_char) = *++(yy_c_buf_p); 03623 03624 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); 03625 03626 return c; 03627 } 03628 #endif /* ifndef YY_NO_INPUT */ 03629 03635 void fscanYYrestart (FILE * input_file ) 03636 { 03637 03638 if ( ! YY_CURRENT_BUFFER ){ 03639 fscanYYensure_buffer_stack (); 03640 YY_CURRENT_BUFFER_LVALUE = 03641 fscanYY_create_buffer(fscanYYin,YY_BUF_SIZE ); 03642 } 03643 03644 fscanYY_init_buffer(YY_CURRENT_BUFFER,input_file ); 03645 fscanYY_load_buffer_state( ); 03646 } 03647 03652 void fscanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 03653 { 03654 03655 /* TODO. We should be able to replace this entire function body 03656 * with 03657 * fscanYYpop_buffer_state(); 03658 * fscanYYpush_buffer_state(new_buffer); 03659 */ 03660 fscanYYensure_buffer_stack (); 03661 if ( YY_CURRENT_BUFFER == new_buffer ) 03662 return; 03663 03664 if ( YY_CURRENT_BUFFER ) 03665 { 03666 /* Flush out information for old buffer. */ 03667 *(yy_c_buf_p) = (yy_hold_char); 03668 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 03669 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03670 } 03671 03672 YY_CURRENT_BUFFER_LVALUE = new_buffer; 03673 fscanYY_load_buffer_state( ); 03674 03675 /* We don't actually know whether we did this switch during 03676 * EOF (fscanYYwrap()) processing, but the only time this flag 03677 * is looked at is after fscanYYwrap() is called, so it's safe 03678 * to go ahead and always set it. 03679 */ 03680 (yy_did_buffer_switch_on_eof) = 1; 03681 } 03682 03683 static void fscanYY_load_buffer_state (void) 03684 { 03685 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 03686 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 03687 fscanYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 03688 (yy_hold_char) = *(yy_c_buf_p); 03689 } 03690 03697 YY_BUFFER_STATE fscanYY_create_buffer (FILE * file, int size ) 03698 { 03699 YY_BUFFER_STATE b; 03700 03701 b = (YY_BUFFER_STATE) fscanYYalloc(sizeof( struct yy_buffer_state ) ); 03702 if ( ! b ) 03703 YY_FATAL_ERROR( "out of dynamic memory in fscanYY_create_buffer()" ); 03704 03705 b->yy_buf_size = size; 03706 03707 /* yy_ch_buf has to be 2 characters longer than the size given because 03708 * we need to put in 2 end-of-buffer characters. 03709 */ 03710 b->yy_ch_buf = (char *) fscanYYalloc(b->yy_buf_size + 2 ); 03711 if ( ! b->yy_ch_buf ) 03712 YY_FATAL_ERROR( "out of dynamic memory in fscanYY_create_buffer()" ); 03713 03714 b->yy_is_our_buffer = 1; 03715 03716 fscanYY_init_buffer(b,file ); 03717 03718 return b; 03719 } 03720 03725 void fscanYY_delete_buffer (YY_BUFFER_STATE b ) 03726 { 03727 03728 if ( ! b ) 03729 return; 03730 03731 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 03732 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 03733 03734 if ( b->yy_is_our_buffer ) 03735 fscanYYfree((void *) b->yy_ch_buf ); 03736 03737 fscanYYfree((void *) b ); 03738 } 03739 03740 #ifndef __cplusplus 03741 extern int isatty (int ); 03742 #endif /* __cplusplus */ 03743 03744 /* Initializes or reinitializes a buffer. 03745 * This function is sometimes called more than once on the same buffer, 03746 * such as during a fscanYYrestart() or at EOF. 03747 */ 03748 static void fscanYY_init_buffer (YY_BUFFER_STATE b, FILE * file ) 03749 03750 { 03751 int oerrno = errno; 03752 03753 fscanYY_flush_buffer(b ); 03754 03755 b->yy_input_file = file; 03756 b->yy_fill_buffer = 1; 03757 03758 /* If b is the current buffer, then fscanYY_init_buffer was _probably_ 03759 * called from fscanYYrestart() or through yy_get_next_buffer. 03760 * In that case, we don't want to reset the lineno or column. 03761 */ 03762 if (b != YY_CURRENT_BUFFER){ 03763 b->yy_bs_lineno = 1; 03764 b->yy_bs_column = 0; 03765 } 03766 03767 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 03768 03769 errno = oerrno; 03770 } 03771 03776 void fscanYY_flush_buffer (YY_BUFFER_STATE b ) 03777 { 03778 if ( ! b ) 03779 return; 03780 03781 b->yy_n_chars = 0; 03782 03783 /* We always need two end-of-buffer characters. The first causes 03784 * a transition to the end-of-buffer state. The second causes 03785 * a jam in that state. 03786 */ 03787 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 03788 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 03789 03790 b->yy_buf_pos = &b->yy_ch_buf[0]; 03791 03792 b->yy_at_bol = 1; 03793 b->yy_buffer_status = YY_BUFFER_NEW; 03794 03795 if ( b == YY_CURRENT_BUFFER ) 03796 fscanYY_load_buffer_state( ); 03797 } 03798 03805 void fscanYYpush_buffer_state (YY_BUFFER_STATE new_buffer ) 03806 { 03807 if (new_buffer == NULL) 03808 return; 03809 03810 fscanYYensure_buffer_stack(); 03811 03812 /* This block is copied from fscanYY_switch_to_buffer. */ 03813 if ( YY_CURRENT_BUFFER ) 03814 { 03815 /* Flush out information for old buffer. */ 03816 *(yy_c_buf_p) = (yy_hold_char); 03817 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 03818 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03819 } 03820 03821 /* Only push if top exists. Otherwise, replace top. */ 03822 if (YY_CURRENT_BUFFER) 03823 (yy_buffer_stack_top)++; 03824 YY_CURRENT_BUFFER_LVALUE = new_buffer; 03825 03826 /* copied from fscanYY_switch_to_buffer. */ 03827 fscanYY_load_buffer_state( ); 03828 (yy_did_buffer_switch_on_eof) = 1; 03829 } 03830 03835 void fscanYYpop_buffer_state (void) 03836 { 03837 if (!YY_CURRENT_BUFFER) 03838 return; 03839 03840 fscanYY_delete_buffer(YY_CURRENT_BUFFER ); 03841 YY_CURRENT_BUFFER_LVALUE = NULL; 03842 if ((yy_buffer_stack_top) > 0) 03843 --(yy_buffer_stack_top); 03844 03845 if (YY_CURRENT_BUFFER) { 03846 fscanYY_load_buffer_state( ); 03847 (yy_did_buffer_switch_on_eof) = 1; 03848 } 03849 } 03850 03851 /* Allocates the stack if it does not exist. 03852 * Guarantees space for at least one push. 03853 */ 03854 static void fscanYYensure_buffer_stack (void) 03855 { 03856 int num_to_alloc; 03857 03858 if (!(yy_buffer_stack)) { 03859 03860 /* First allocation is just for 2 elements, since we don't know if this 03861 * scanner will even need a stack. We use 2 instead of 1 to avoid an 03862 * immediate realloc on the next call. 03863 */ 03864 num_to_alloc = 1; 03865 (yy_buffer_stack) = (struct yy_buffer_state**)fscanYYalloc 03866 (num_to_alloc * sizeof(struct yy_buffer_state*) 03867 ); 03868 03869 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 03870 03871 (yy_buffer_stack_max) = num_to_alloc; 03872 (yy_buffer_stack_top) = 0; 03873 return; 03874 } 03875 03876 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 03877 03878 /* Increase the buffer to prepare for a possible push. */ 03879 int grow_size = 8 /* arbitrary grow size */; 03880 03881 num_to_alloc = (yy_buffer_stack_max) + grow_size; 03882 (yy_buffer_stack) = (struct yy_buffer_state**)fscanYYrealloc 03883 ((yy_buffer_stack), 03884 num_to_alloc * sizeof(struct yy_buffer_state*) 03885 ); 03886 03887 /* zero only the new slots.*/ 03888 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 03889 (yy_buffer_stack_max) = num_to_alloc; 03890 } 03891 } 03892 03899 YY_BUFFER_STATE fscanYY_scan_buffer (char * base, yy_size_t size ) 03900 { 03901 YY_BUFFER_STATE b; 03902 03903 if ( size < 2 || 03904 base[size-2] != YY_END_OF_BUFFER_CHAR || 03905 base[size-1] != YY_END_OF_BUFFER_CHAR ) 03906 /* They forgot to leave room for the EOB's. */ 03907 return 0; 03908 03909 b = (YY_BUFFER_STATE) fscanYYalloc(sizeof( struct yy_buffer_state ) ); 03910 if ( ! b ) 03911 YY_FATAL_ERROR( "out of dynamic memory in fscanYY_scan_buffer()" ); 03912 03913 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 03914 b->yy_buf_pos = b->yy_ch_buf = base; 03915 b->yy_is_our_buffer = 0; 03916 b->yy_input_file = 0; 03917 b->yy_n_chars = b->yy_buf_size; 03918 b->yy_is_interactive = 0; 03919 b->yy_at_bol = 1; 03920 b->yy_fill_buffer = 0; 03921 b->yy_buffer_status = YY_BUFFER_NEW; 03922 03923 fscanYY_switch_to_buffer(b ); 03924 03925 return b; 03926 } 03927 03936 YY_BUFFER_STATE fscanYY_scan_string (yyconst char * yystr ) 03937 { 03938 03939 return fscanYY_scan_bytes(yystr,strlen(yystr) ); 03940 } 03941 03949 YY_BUFFER_STATE fscanYY_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 03950 { 03951 YY_BUFFER_STATE b; 03952 char *buf; 03953 yy_size_t n; 03954 int i; 03955 03956 /* Get memory for full buffer, including space for trailing EOB's. */ 03957 n = _yybytes_len + 2; 03958 buf = (char *) fscanYYalloc(n ); 03959 if ( ! buf ) 03960 YY_FATAL_ERROR( "out of dynamic memory in fscanYY_scan_bytes()" ); 03961 03962 for ( i = 0; i < _yybytes_len; ++i ) 03963 buf[i] = yybytes[i]; 03964 03965 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 03966 03967 b = fscanYY_scan_buffer(buf,n ); 03968 if ( ! b ) 03969 YY_FATAL_ERROR( "bad buffer in fscanYY_scan_bytes()" ); 03970 03971 /* It's okay to grow etc. this buffer, and we should throw it 03972 * away when we're done. 03973 */ 03974 b->yy_is_our_buffer = 1; 03975 03976 return b; 03977 } 03978 03979 static void yy_push_state (int new_state ) 03980 { 03981 if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) 03982 { 03983 yy_size_t new_size; 03984 03985 (yy_start_stack_depth) += YY_START_STACK_INCR; 03986 new_size = (yy_start_stack_depth) * sizeof( int ); 03987 03988 if ( ! (yy_start_stack) ) 03989 (yy_start_stack) = (int *) fscanYYalloc(new_size ); 03990 03991 else 03992 (yy_start_stack) = (int *) fscanYYrealloc((void *) (yy_start_stack),new_size ); 03993 03994 if ( ! (yy_start_stack) ) 03995 YY_FATAL_ERROR( 03996 "out of memory expanding start-condition stack" ); 03997 } 03998 03999 (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; 04000 04001 BEGIN(new_state); 04002 } 04003 04004 static void yy_pop_state (void) 04005 { 04006 if ( --(yy_start_stack_ptr) < 0 ) 04007 YY_FATAL_ERROR( "start-condition stack underflow" ); 04008 04009 BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); 04010 } 04011 04012 static int yy_top_state (void) 04013 { 04014 return (yy_start_stack)[(yy_start_stack_ptr) - 1]; 04015 } 04016 04017 #ifndef YY_EXIT_FAILURE 04018 #define YY_EXIT_FAILURE 2 04019 #endif 04020 04021 static void yy_fatal_error (yyconst char* msg ) 04022 { 04023 (void) fprintf( stderr, "%s\n", msg ); 04024 exit( YY_EXIT_FAILURE ); 04025 } 04026 04027 /* Redefine yyless() so it works in section 3 code. */ 04028 04029 #undef yyless 04030 #define yyless(n) \ 04031 do \ 04032 { \ 04033 /* Undo effects of setting up fscanYYtext. */ \ 04034 int yyless_macro_arg = (n); \ 04035 YY_LESS_LINENO(yyless_macro_arg);\ 04036 fscanYYtext[fscanYYleng] = (yy_hold_char); \ 04037 (yy_c_buf_p) = fscanYYtext + yyless_macro_arg; \ 04038 (yy_hold_char) = *(yy_c_buf_p); \ 04039 *(yy_c_buf_p) = '\0'; \ 04040 fscanYYleng = yyless_macro_arg; \ 04041 } \ 04042 while ( 0 ) 04043 04044 /* Accessor methods (get/set functions) to struct members. */ 04045 04049 int fscanYYget_lineno (void) 04050 { 04051 04052 return fscanYYlineno; 04053 } 04054 04058 FILE *fscanYYget_in (void) 04059 { 04060 return fscanYYin; 04061 } 04062 04066 FILE *fscanYYget_out (void) 04067 { 04068 return fscanYYout; 04069 } 04070 04074 int fscanYYget_leng (void) 04075 { 04076 return fscanYYleng; 04077 } 04078 04083 char *fscanYYget_text (void) 04084 { 04085 return fscanYYtext; 04086 } 04087 04092 void fscanYYset_lineno (int line_number ) 04093 { 04094 04095 fscanYYlineno = line_number; 04096 } 04097 04104 void fscanYYset_in (FILE * in_str ) 04105 { 04106 fscanYYin = in_str ; 04107 } 04108 04109 void fscanYYset_out (FILE * out_str ) 04110 { 04111 fscanYYout = out_str ; 04112 } 04113 04114 int fscanYYget_debug (void) 04115 { 04116 return fscanYY_flex_debug; 04117 } 04118 04119 void fscanYYset_debug (int bdebug ) 04120 { 04121 fscanYY_flex_debug = bdebug ; 04122 } 04123 04124 static int yy_init_globals (void) 04125 { 04126 /* Initialization is the same as for the non-reentrant scanner. 04127 * This function is called from fscanYYlex_destroy(), so don't allocate here. 04128 */ 04129 04130 (yy_buffer_stack) = 0; 04131 (yy_buffer_stack_top) = 0; 04132 (yy_buffer_stack_max) = 0; 04133 (yy_c_buf_p) = (char *) 0; 04134 (yy_init) = 0; 04135 (yy_start) = 0; 04136 04137 (yy_start_stack_ptr) = 0; 04138 (yy_start_stack_depth) = 0; 04139 (yy_start_stack) = NULL; 04140 04141 (yy_state_buf) = 0; 04142 (yy_state_ptr) = 0; 04143 (yy_full_match) = 0; 04144 (yy_lp) = 0; 04145 04146 /* Defined in main.c */ 04147 #ifdef YY_STDINIT 04148 fscanYYin = stdin; 04149 fscanYYout = stdout; 04150 #else 04151 fscanYYin = (FILE *) 0; 04152 fscanYYout = (FILE *) 0; 04153 #endif 04154 04155 /* For future reference: Set errno on error, since we are called by 04156 * fscanYYlex_init() 04157 */ 04158 return 0; 04159 } 04160 04161 /* fscanYYlex_destroy is for both reentrant and non-reentrant scanners. */ 04162 int fscanYYlex_destroy (void) 04163 { 04164 04165 /* Pop the buffer stack, destroying each element. */ 04166 while(YY_CURRENT_BUFFER){ 04167 fscanYY_delete_buffer(YY_CURRENT_BUFFER ); 04168 YY_CURRENT_BUFFER_LVALUE = NULL; 04169 fscanYYpop_buffer_state(); 04170 } 04171 04172 /* Destroy the stack itself. */ 04173 fscanYYfree((yy_buffer_stack) ); 04174 (yy_buffer_stack) = NULL; 04175 04176 /* Destroy the start condition stack. */ 04177 fscanYYfree((yy_start_stack) ); 04178 (yy_start_stack) = NULL; 04179 04180 fscanYYfree ( (yy_state_buf) ); 04181 (yy_state_buf) = NULL; 04182 04183 /* Reset the globals. This is important in a non-reentrant scanner so the next time 04184 * fscanYYlex() is called, initialization will occur. */ 04185 yy_init_globals( ); 04186 04187 return 0; 04188 } 04189 04190 /* 04191 * Internal utility routines. 04192 */ 04193 04194 #ifndef yytext_ptr 04195 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 04196 { 04197 register int i; 04198 for ( i = 0; i < n; ++i ) 04199 s1[i] = s2[i]; 04200 } 04201 #endif 04202 04203 #ifdef YY_NEED_STRLEN 04204 static int yy_flex_strlen (yyconst char * s ) 04205 { 04206 register int n; 04207 for ( n = 0; s[n]; ++n ) 04208 ; 04209 04210 return n; 04211 } 04212 #endif 04213 04214 void *fscanYYalloc (yy_size_t size ) 04215 { 04216 return (void *) malloc( size ); 04217 } 04218 04219 void *fscanYYrealloc (void * ptr, yy_size_t size ) 04220 { 04221 /* The cast to (char *) in the following accommodates both 04222 * implementations that use char* generic pointers, and those 04223 * that use void* generic pointers. It works with the latter 04224 * because both ANSI C and C++ allow castless assignment from 04225 * any pointer type to void*, and deal with argument conversions 04226 * as though doing an assignment. 04227 */ 04228 return (void *) realloc( (char *) ptr, size ); 04229 } 04230 04231 void fscanYYfree (void * ptr ) 04232 { 04233 free( (char *) ptr ); /* see fscanYYrealloc() for (char *) cast */ 04234 } 04235 04236 #define YYTABLES_NAME "yytables" 04237 04238 #line 692 "fortranscanner.l" 04239 04240 04241 //---------------------------------------------------------------------------- 04242 04244 static void copyEntry(Entry *dest, Entry *src) 04245 { 04246 dest->type = src->type; 04247 dest->fileName = src->fileName; 04248 dest->bodyLine = src->bodyLine; 04249 dest->args = src->args; 04250 dest->argList = new ArgumentList(*src->argList); 04251 } 04252 04257 void resolveModuleProcedures(QList<Entry> &moduleProcedures, Entry *current_root) 04258 { 04259 if (moduleProcedures.isEmpty()) return; 04260 04261 EntryListIterator eli1(moduleProcedures); 04262 // for all module procedures 04263 for (Entry *ce1; (ce1=eli1.current()); ++eli1) 04264 { 04265 // check all entries in this module 04266 EntryListIterator eli2(*current_root->children()); 04267 for (Entry *ce2; (ce2=eli2.current()); ++eli2) 04268 { 04269 if (ce1->name == ce2->name) 04270 { 04271 copyEntry(ce1, ce2); 04272 } 04273 } // for procedures in current module 04274 } // for all interface module procedures 04275 moduleProcedures.clear(); 04276 } 04277 04278 static bool isTypeName(QCString name) 04279 { 04280 name = name.lower(); 04281 return name=="integer" || name == "real" || 04282 name=="complex" || name == "logical"; 04283 } 04284 04286 static QCString extractFromParens(const QCString name) 04287 { 04288 QCString extracted = name; 04289 int start = extracted.find("("); 04290 if (start != -1) 04291 { 04292 extracted.remove(0, start+1); 04293 } 04294 int end = extracted.findRev(")"); 04295 if (end != -1) 04296 { 04297 int length = extracted.length(); 04298 extracted.remove(end, length); 04299 } 04300 extracted = extracted.stripWhiteSpace(); 04301 04302 return extracted; 04303 } 04304 04306 SymbolModifiers& SymbolModifiers::operator|=(const SymbolModifiers &mdfs) 04307 { 04308 if (mdfs.protection!=NONE_P) protection = mdfs.protection; 04309 if (mdfs.direction!=NONE_D) direction = mdfs.direction; 04310 optional |= mdfs.optional; 04311 if (!mdfs.dimension.isNull()) dimension = mdfs.dimension; 04312 allocatable |= mdfs.allocatable; 04313 external |= mdfs.external; 04314 intrinsic |= mdfs.intrinsic; 04315 parameter |= mdfs.parameter; 04316 pointer |= mdfs.pointer; 04317 target |= mdfs.target; 04318 save |= mdfs.save; 04319 return *this; 04320 } 04321 04323 SymbolModifiers& SymbolModifiers::operator|=(QCString mdfString) 04324 { 04325 mdfString = mdfString.lower(); 04326 SymbolModifiers newMdf; 04327 04328 if (mdfString.find("dimension")==0) 04329 { 04330 newMdf.dimension=mdfString; 04331 } 04332 else if (mdfString.contains("intent")) 04333 { 04334 QCString tmp = extractFromParens(mdfString); 04335 bool isin = tmp.contains("in"); 04336 bool isout = tmp.contains("out"); 04337 if (isin && isout) newMdf.direction = SymbolModifiers::INOUT; 04338 else if (isin) newMdf.direction = SymbolModifiers::IN; 04339 else if (isout) newMdf.direction = SymbolModifiers::OUT; 04340 } 04341 else if (mdfString=="public") 04342 { 04343 newMdf.protection = SymbolModifiers::PUBLIC; 04344 } 04345 else if (mdfString=="private") 04346 { 04347 newMdf.protection = SymbolModifiers::PRIVATE; 04348 } 04349 else if (mdfString=="optional") 04350 { 04351 newMdf.optional = TRUE; 04352 } 04353 else if (mdfString=="allocatable") 04354 { 04355 newMdf.allocatable = TRUE; 04356 } 04357 else if (mdfString=="external") 04358 { 04359 newMdf.external = TRUE; 04360 } 04361 else if (mdfString=="intrinsic") 04362 { 04363 newMdf.intrinsic = TRUE; 04364 } 04365 else if (mdfString=="parameter") 04366 { 04367 newMdf.parameter = TRUE; 04368 } 04369 else if (mdfString=="pointer") 04370 { 04371 newMdf.pointer = TRUE; 04372 } 04373 else if (mdfString=="target") 04374 { 04375 newMdf.target = TRUE; 04376 } 04377 else if (mdfString=="save") 04378 { 04379 newMdf.save = TRUE; 04380 } 04381 04382 (*this) |= newMdf; 04383 return *this; 04384 } 04385 04387 //ostream& operator<<(ostream& out, const SymbolModifiers& mdfs) 04388 //{ 04389 // out<<mdfs.protection<<", "<<mdfs.direction<<", "<<mdfs.optional<< 04390 // ", "<<(mdfs.dimension.isNull() ? "" : mdfs.dimension.latin1())<< 04391 // ", "<<mdfs.allocatable<<", "<<mdfs.external<<", "<<mdfs.intrinsic; 04392 // 04393 // return out; 04394 //} 04395 04397 static Argument *findArgument(Entry* subprog, QCString name, bool byTypeName = FALSE) 04398 { 04399 QCString cname(name.lower()); 04400 for (unsigned int i=0; i<subprog->argList->count(); i++) 04401 { 04402 Argument *arg = subprog->argList->at(i); 04403 if (!byTypeName && arg->name.lower() == cname || 04404 byTypeName && arg->type.lower() == cname) 04405 return arg; 04406 } 04407 04408 return 0; 04409 } 04410 04412 #if 0 04413 static Entry *findFunction(Entry* entry, QCString name) 04414 { 04415 QCString cname(name.lower()); 04416 04417 EntryListIterator eli(*entry->children()); 04418 Entry *ce; 04419 for (;(ce=eli.current());++eli) 04420 { 04421 if (ce->section != Entry::FUNCTION_SEC) 04422 continue; 04423 04424 if (ce->name.lower() == cname) 04425 return ce; 04426 } 04427 04428 return 0; 04429 } 04430 #endif 04431 04433 static QCString applyModifiers(QCString typeName, SymbolModifiers& mdfs) 04434 { 04435 if (!mdfs.dimension.isNull()) 04436 { 04437 typeName += ","; 04438 typeName += mdfs.dimension; 04439 } 04440 if (mdfs.direction!=SymbolModifiers::NONE_D) 04441 { 04442 typeName += ","; 04443 typeName += directionStrs[mdfs.direction]; 04444 } 04445 if (mdfs.optional) 04446 { 04447 typeName += ","; 04448 typeName += "optional"; 04449 } 04450 if (mdfs.allocatable) 04451 { 04452 typeName += ","; 04453 typeName += "allocatable"; 04454 } 04455 if (mdfs.external) 04456 { 04457 typeName += ","; 04458 typeName += "external"; 04459 } 04460 if (mdfs.intrinsic) 04461 { 04462 typeName += ","; 04463 typeName += "intrinsic"; 04464 } 04465 if (mdfs.parameter) 04466 { 04467 typeName += ","; 04468 typeName += "parameter"; 04469 } 04470 if (mdfs.pointer) 04471 { 04472 typeName += ","; 04473 typeName += "pointer"; 04474 } 04475 if (mdfs.target) 04476 { 04477 typeName += ","; 04478 typeName += "target"; 04479 } 04480 if (mdfs.save) 04481 { 04482 typeName += ","; 04483 typeName += "save"; 04484 } 04485 04486 return typeName; 04487 } 04488 04490 static void applyModifiers(Argument *arg, SymbolModifiers& mdfs) 04491 { 04492 QCString tmp = arg->type; 04493 arg->type = applyModifiers(tmp, mdfs); 04494 } 04495 04497 static void applyModifiers(Entry *ent, SymbolModifiers& mdfs) 04498 { 04499 QCString tmp = ent->type; 04500 ent->type = applyModifiers(tmp, mdfs); 04501 04502 if (mdfs.protection == SymbolModifiers::PUBLIC) 04503 ent->protection = Public; 04504 else if (mdfs.protection == SymbolModifiers::PRIVATE) 04505 ent->protection = Private; 04506 } 04507 04512 static void startScope(Entry *scope) 04513 { 04514 //cout<<"start scope: "<<scope->name<<endl; 04515 current_root= scope; /* start substructure */ 04516 04517 QMap<QCString,SymbolModifiers> mdfMap; 04518 modifiers.insert(scope, mdfMap); 04519 } 04520 04524 static bool endScope(Entry *scope) 04525 { 04526 //cout<<"end scope: "<<scope->name<<endl; 04527 if (current_root->parent()) 04528 { 04529 current_root= current_root->parent(); /* end substructure */ 04530 } 04531 else 04532 { 04533 fprintf(stderr,"parse error in end <scopename>"); 04534 scanner_abort(); 04535 return FALSE; 04536 } 04537 04538 // update variables or subprogram arguments with modifiers 04539 QMap<QCString,SymbolModifiers>& mdfsMap = modifiers[scope]; 04540 04541 if (scope->section == Entry::FUNCTION_SEC) 04542 { 04543 // iterate all symbol modifiers of the scope 04544 for (QMap<QCString,SymbolModifiers>::Iterator it=mdfsMap.begin(); it!=mdfsMap.end(); it++) 04545 { 04546 //cout<<it.key()<<": "<<it.data()<<endl; 04547 Argument *arg = findArgument(scope, it.key()); 04548 04549 if (arg) 04550 applyModifiers(arg, it.data()); 04551 } 04552 04553 // find return type for function 04554 //cout<<"RETURN NAME "<<modifiers[current_root][scope->name.lower()].returnName<<endl; 04555 QCString returnName = modifiers[current_root][scope->name.lower()].returnName.lower(); 04556 if (modifiers[scope].contains(returnName)) 04557 { 04558 scope->type = modifiers[scope][returnName].type; // returning type works 04559 applyModifiers(scope, modifiers[scope][returnName]); // returning array works 04560 } 04561 04562 } 04563 if (scope->section == Entry::CLASS_SEC) 04564 { // was INTERFACE_SEC 04565 if (scope->parent()->section == Entry::FUNCTION_SEC) 04566 { // interface within function 04567 // iterate functions of interface and 04568 // try to find types for dummy(ie. argument) procedures. 04569 //cout<<"Search in "<<scope->name<<endl; 04570 EntryListIterator eli(*scope->children()); 04571 Entry *ce; 04572 for (;(ce=eli.current());++eli) 04573 { 04574 if (ce->section != Entry::FUNCTION_SEC) 04575 continue; 04576 04577 Argument *arg = findArgument(scope->parent(), ce->name, TRUE); 04578 if (arg != 0) 04579 { 04580 // set type of dummy procedure argument to interface 04581 arg->name = arg->type; 04582 arg->type = scope->name; 04583 } 04584 } 04585 } 04586 } 04587 if (scope->section!=Entry::FUNCTION_SEC) 04588 { // not function section 04589 // iterate variables: get and apply modifiers 04590 EntryListIterator eli(*scope->children()); 04591 Entry *ce; 04592 for (;(ce=eli.current());++eli) 04593 { 04594 if (ce->section != Entry::VARIABLE_SEC && ce->section != Entry::FUNCTION_SEC) 04595 continue; 04596 04597 //cout<<ce->name<<", "<<mdfsMap.contains(ce->name.lower())<<mdfsMap.count()<<endl; 04598 if (mdfsMap.contains(ce->name.lower())) 04599 applyModifiers(ce, mdfsMap[ce->name.lower()]); 04600 } 04601 } 04602 04603 // clear all modifiers of the scope 04604 modifiers.remove(scope); 04605 04606 return TRUE; 04607 } 04608 04610 static QCString getFullName(Entry *e) 04611 { 04612 QCString name = e->name; 04613 if (e->section == Entry::CLASS_SEC // || e->section == Entry::INTERFACE_SEC 04614 || !e->parent() || e->parent()->name.isEmpty()) 04615 return name; 04616 04617 return getFullName(e->parent())+"::"+name; 04618 } 04619 04620 static int yyread(char *buf,int max_size) 04621 { 04622 int c=0; 04623 while ( c < max_size && inputString[inputPosition] ) 04624 { 04625 *buf = inputString[inputPosition++] ; 04626 c++; buf++; 04627 } 04628 return c; 04629 } 04630 04631 static void initParser() 04632 { 04633 last_entry = 0; 04634 } 04635 04636 static void initEntry() 04637 { 04638 current->protection = defaultProtection ; 04639 current->mtype = mtype; 04640 current->virt = virt; 04641 current->stat = gstat; 04642 initGroupInfo(current); 04643 } 04644 04648 static void addCurrentEntry() 04649 { 04650 //cout << "Adding entry " <<current->name.data() << endl; 04651 current_root->addSubEntry(current); 04652 last_entry = current; 04653 current = new Entry ; 04654 initEntry(); 04655 } 04656 04661 static void addInterface(QCString name) 04662 { 04663 current->section = Entry::CLASS_SEC; // was Entry::INTERFACE_SEC; 04664 current->spec = Entry::Interface; 04665 current->name = name; 04666 04667 /* if type is part of a module, mod name is necessary for output */ 04668 if ((current_root) && 04669 (current_root->section == Entry::CLASS_SEC || 04670 current_root->section == Entry::NAMESPACE_SEC)) 04671 { 04672 current->name= current_root->name+"::"+current->name; 04673 } 04674 if ((current_root) && 04675 (current_root->section == Entry::FUNCTION_SEC)) 04676 { 04677 current->name = getFullName(current_root) + "__" + QCString(current->name); 04678 } 04679 04680 current->fileName = yyFileName; 04681 current->bodyLine = yyLineNr; 04682 addCurrentEntry(); 04683 } 04684 04685 04686 //----------------------------------------------------------------------------- 04687 04690 static Argument *addFortranParameter(const QCString &type,const QCString &name, const QCString docs) 04691 { 04692 //cout<<"addFortranParameter(): "<<name<<" DOCS:"<<(docs.isNull()?QCString("null"):docs)<<endl; 04693 Argument *ret = 0; 04694 if (current_root->argList==0) return 0; 04695 ArgumentListIterator ali(*current_root->argList); 04696 Argument *a; 04697 for (ali.toFirst();(a=ali.current());++ali) 04698 { 04699 if (a->type.lower()==name.lower()) 04700 { 04701 ret=a; 04702 //cout << "addParameter found: " << type << " , " << name << endl; 04703 a->type=type.stripWhiteSpace(); 04704 a->name=name.stripWhiteSpace(); 04705 if (!docs.isNull()) 04706 a->docs = docs; 04707 break; 04708 } 04709 } // for 04710 return ret; 04711 } 04712 04713 //---------------------------------------------------------------------------- 04714 static void startCommentBlock(bool brief) 04715 { 04716 if (brief) 04717 { 04718 current->briefFile = yyFileName; 04719 current->briefLine = yyLineNr; 04720 } 04721 else 04722 { 04723 current->docFile = yyFileName; 04724 current->docLine = yyLineNr; 04725 } 04726 } 04727 04728 //---------------------------------------------------------------------------- 04729 static void handleCommentBlock(const QCString &doc,bool brief) 04730 { 04731 docBlockInBody = FALSE; 04732 bool needsEntry = FALSE; 04733 static bool hideInBodyDocs = Config_getBool("HIDE_IN_BODY_DOCS"); 04734 int position=0; 04735 if (docBlockInBody && hideInBodyDocs) return; 04736 //fprintf(stderr,"call parseCommentBlock [%s]\n",doc.data()); 04737 while (parseCommentBlock( 04738 g_thisParser, 04739 docBlockInBody ? last_entry : current, 04740 doc, // text 04741 yyFileName, // file 04742 brief ? current->briefLine : current->docLine, // line of block start 04743 docBlockInBody ? FALSE : brief, 04744 docBlockInBody ? FALSE : docBlockJavaStyle, 04745 docBlockInBody, 04746 defaultProtection, 04747 position, 04748 needsEntry 04749 )) 04750 { 04751 //fprintf(stderr,"parseCommentBlock position=%d [%s] needsEntry=%d\n",position,doc.data()+position,needsEntry); 04752 if (needsEntry) addCurrentEntry(); 04753 } 04754 //fprintf(stderr,"parseCommentBlock position=%d [%s] needsEntry=%d\n",position,doc.data()+position,needsEntry); 04755 04756 if (needsEntry) addCurrentEntry(); 04757 } 04758 04759 //---------------------------------------------------------------------------- 04760 static int level=0; 04761 static void debugCompounds(Entry *rt) // print Entry structure (for debugging) 04762 { 04763 level++; 04764 printf("%d) debugCompounds(%s) line %d\n",level, rt->name.data(), rt->bodyLine); 04765 EntryListIterator eli(*rt->children()); 04766 Entry *ce; 04767 for (;(ce=eli.current());++eli) 04768 { 04769 debugCompounds(ce); 04770 } 04771 level--; 04772 } 04773 04774 04775 static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) 04776 { 04777 initParser(); 04778 04779 defaultProtection = Public; 04780 inputString = fileBuf; 04781 inputPosition = 0; 04782 04783 //anonCount = 0; // don't reset per file 04784 mtype = Method; 04785 gstat = FALSE; 04786 virt = Normal; 04787 current_root = rt; 04788 global_root = rt; 04789 inputFile.setName(fileName); 04790 if (inputFile.open(IO_ReadOnly)) 04791 { 04792 yyLineNr= 1 ; 04793 yyFileName = fileName; 04794 msg("Parsing file %s...\n",yyFileName.data()); 04795 04796 current_root = rt ; 04797 initParser(); 04798 groupEnterFile(yyFileName,yyLineNr); 04799 04800 current = new Entry; 04801 current->name = yyFileName; 04802 current->section = Entry::SOURCE_SEC; 04803 current_root->addSubEntry(current); 04804 file_root = current; 04805 current = new Entry; 04806 04807 fscanYYrestart( fscanYYin ); 04808 { 04809 BEGIN( Start ); 04810 } 04811 04812 fscanYYlex(); 04813 groupLeaveFile(yyFileName,yyLineNr); 04814 04815 //debugCompounds(rt); //debug 04816 04817 rt->program.resize(0); 04818 delete current; current=0; 04819 moduleProcedures.clear(); 04820 04821 inputFile.close(); 04822 } 04823 } 04824 04825 //---------------------------------------------------------------------------- 04826 04827 void FortranLanguageScanner::parseInput(const char *fileName,const char *fileBuf,Entry *root) 04828 { 04829 g_thisParser = this; 04830 ::parseMain(fileName,fileBuf,root); 04831 } 04832 04833 void FortranLanguageScanner::parseCode(CodeOutputInterface & codeOutIntf, 04834 const char * scopeName, 04835 const QCString & input, 04836 bool isExampleBlock, 04837 const char * exampleName, 04838 FileDef * fileDef, 04839 int startLine, 04840 int endLine, 04841 bool inlineFragment, 04842 MemberDef *memberDef 04843 ) 04844 { 04845 ::parseFortranCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName, 04846 fileDef,startLine,endLine,inlineFragment,memberDef); 04847 } 04848 04849 bool FortranLanguageScanner::needsPreprocessing(const QCString &extension) 04850 { 04851 (void)extension; 04852 return TRUE; 04853 } 04854 void FortranLanguageScanner::resetCodeParserState() 04855 { 04856 ::resetFortranCodeParserState(); 04857 } 04858 04859 void FortranLanguageScanner::parsePrototype(const char *text) 04860 { 04861 (void)text; 04862 } 04863 04864 static void scanner_abort() 04865 { 04866 fprintf(stderr,"********************************************************************\n"); 04867 fprintf(stderr,"Error in file %s line: %d, state: %d\n",yyFileName.data(),yyLineNr,YY_START); 04868 fprintf(stderr,"********************************************************************\n"); 04869 04870 EntryListIterator eli(*global_root->children()); 04871 Entry *ce; 04872 bool start=FALSE; 04873 04874 for (;(ce=eli.current());++eli) 04875 { 04876 if (ce == file_root) start=TRUE; 04877 if (start) ce->reset(); 04878 } 04879 04880 return; 04881 //exit(-1); 04882 } 04883 04884 //---------------------------------------------------------------------------- 04885 04886 #if !defined(YY_FLEX_SUBMINOR_VERSION) 04887 //---------------------------------------------------------------------------- 04888 extern "C" { // some bogus code to keep the compiler happy 04889 void fscannerYYdummy() { yy_flex_realloc(0,0); yy_top_state(); } 04890 } 04891 #endif 04892 04893