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 vhdlcodeYYrestart(vhdlcodeYYin ) 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 vhdlcodeYYleng; 00155 00156 extern FILE *vhdlcodeYYin, *vhdlcodeYYout; 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 vhdlcodeYYtext. */ \ 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 vhdlcodeYYtext 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 vhdlcodeYYrestart()), so that the user can continue scanning by 00248 * just pointing vhdlcodeYYin 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 vhdlcodeYYtext is formed. */ 00276 static char yy_hold_char; 00277 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00278 int vhdlcodeYYleng; 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 vhdlcodeYYwrap()'s to do buffer switches 00286 * instead of setting up a fresh vhdlcodeYYin. A bit of a hack ... 00287 */ 00288 static int yy_did_buffer_switch_on_eof; 00289 00290 void vhdlcodeYYrestart (FILE *input_file ); 00291 void vhdlcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00292 YY_BUFFER_STATE vhdlcodeYY_create_buffer (FILE *file,int size ); 00293 void vhdlcodeYY_delete_buffer (YY_BUFFER_STATE b ); 00294 void vhdlcodeYY_flush_buffer (YY_BUFFER_STATE b ); 00295 void vhdlcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ); 00296 void vhdlcodeYYpop_buffer_state (void ); 00297 00298 static void vhdlcodeYYensure_buffer_stack (void ); 00299 static void vhdlcodeYY_load_buffer_state (void ); 00300 static void vhdlcodeYY_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00301 00302 #define YY_FLUSH_BUFFER vhdlcodeYY_flush_buffer(YY_CURRENT_BUFFER ) 00303 00304 YY_BUFFER_STATE vhdlcodeYY_scan_buffer (char *base,yy_size_t size ); 00305 YY_BUFFER_STATE vhdlcodeYY_scan_string (yyconst char *yy_str ); 00306 YY_BUFFER_STATE vhdlcodeYY_scan_bytes (yyconst char *bytes,int len ); 00307 00308 void *vhdlcodeYYalloc (yy_size_t ); 00309 void *vhdlcodeYYrealloc (void *,yy_size_t ); 00310 void vhdlcodeYYfree (void * ); 00311 00312 #define yy_new_buffer vhdlcodeYY_create_buffer 00313 00314 #define yy_set_interactive(is_interactive) \ 00315 { \ 00316 if ( ! YY_CURRENT_BUFFER ){ \ 00317 vhdlcodeYYensure_buffer_stack (); \ 00318 YY_CURRENT_BUFFER_LVALUE = \ 00319 vhdlcodeYY_create_buffer(vhdlcodeYYin,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 vhdlcodeYYensure_buffer_stack (); \ 00328 YY_CURRENT_BUFFER_LVALUE = \ 00329 vhdlcodeYY_create_buffer(vhdlcodeYYin,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 vhdlcodeYYwrap(n) 1 00339 #define YY_SKIP_YYWRAP 00340 00341 typedef unsigned char YY_CHAR; 00342 00343 FILE *vhdlcodeYYin = (FILE *) 0, *vhdlcodeYYout = (FILE *) 0; 00344 00345 typedef int yy_state_type; 00346 00347 extern int vhdlcodeYYlineno; 00348 00349 int vhdlcodeYYlineno = 1; 00350 00351 extern char *vhdlcodeYYtext; 00352 #define yytext_ptr vhdlcodeYYtext 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 vhdlcodeYYtext. 00361 */ 00362 #define YY_DO_BEFORE_ACTION \ 00363 (yytext_ptr) = yy_bp; \ 00364 vhdlcodeYYleng = (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 50 00370 #define YY_END_OF_BUFFER 51 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_accept[852] = 00379 { 0, 00380 0, 0, 0, 0, 12, 12, 0, 0, 20, 20, 00381 30, 30, 27, 27, 0, 0, 0, 0, 0, 0, 00382 0, 0, 3, 3, 0, 0, 51, 1, 1, 47, 00383 1, 48, 48, 47, 48, 48, 45, 48, 48, 45, 00384 45, 46, 45, 45, 45, 46, 45, 43, 46, 45, 00385 45, 45, 45, 42, 42, 42, 42, 42, 42, 42, 00386 42, 42, 42, 42, 42, 42, 45, 45, 48, 48, 00387 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 00388 42, 48, 12, 7, 48, 12, 12, 14, 15, 48, 00389 13, 13, 13, 12, 13, 48, 48, 48, 6, 20, 00390 00391 21, 20, 20, 17, 18, 19, 23, 26, 26, 26, 00392 30, 30, 30, 30, 27, 27, 27, 28, 29, 27, 00393 16, 3, 3, 4, 2, 5, 4, 3, 0, 0, 00394 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00395 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 00396 42, 42, 45, 0, 0, 0, 0, 0, 43, 45, 00397 45, 45, 0, 0, 42, 0, 42, 42, 42, 42, 00398 42, 42, 42, 42, 42, 41, 42, 42, 42, 42, 00399 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00400 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 00401 00402 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 00403 0, 0, 12, 0, 12, 0, 0, 12, 12, 13, 00404 13, 8, 13, 13, 12, 0, 13, 6, 20, 20, 00405 19, 0, 0, 22, 0, 0, 23, 26, 26, 26, 00406 30, 30, 30, 30, 27, 27, 27, 27, 16, 3, 00407 3, 3, 3, 49, 0, 0, 0, 0, 0, 0, 00408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00409 42, 42, 0, 0, 43, 0, 0, 0, 42, 42, 00410 42, 42, 41, 42, 42, 42, 42, 42, 42, 42, 00411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00412 00413 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 00414 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 00415 0, 0, 0, 0, 13, 8, 13, 13, 0, 13, 00416 0, 0, 22, 0, 23, 26, 26, 30, 27, 3, 00417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00418 0, 0, 0, 0, 0, 0, 42, 0, 43, 0, 00419 0, 0, 0, 42, 42, 0, 0, 0, 42, 42, 00420 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 00421 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 00422 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 00423 00424 42, 42, 38, 38, 38, 42, 0, 0, 0, 0, 00425 13, 13, 0, 0, 0, 13, 0, 0, 23, 26, 00426 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00427 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 00428 0, 0, 42, 0, 0, 42, 0, 0, 0, 42, 00429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00430 0, 0, 0, 44, 0, 42, 42, 37, 42, 42, 00431 42, 42, 42, 42, 42, 42, 42, 42, 0, 9, 00432 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 00433 0, 26, 0, 24, 0, 0, 0, 0, 0, 0, 00434 00435 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 00436 0, 0, 42, 0, 0, 42, 42, 0, 0, 0, 00437 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 00438 0, 0, 0, 42, 42, 37, 42, 42, 42, 42, 00439 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 00440 0, 0, 0, 0, 0, 11, 11, 0, 26, 0, 00441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00442 0, 0, 0, 42, 0, 0, 42, 0, 0, 42, 00443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00444 0, 0, 0, 0, 42, 42, 42, 42, 40, 40, 00445 00446 40, 42, 42, 42, 42, 0, 0, 0, 0, 0, 00447 0, 0, 0, 0, 0, 0, 10, 0, 0, 26, 00448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00449 0, 0, 42, 0, 0, 42, 0, 0, 0, 0, 00450 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 00451 42, 42, 40, 42, 0, 0, 0, 10, 0, 0, 00452 0, 0, 0, 0, 0, 25, 35, 35, 35, 35, 00453 35, 35, 35, 0, 0, 0, 0, 0, 0, 0, 00454 0, 0, 0, 0, 0, 35, 35, 35, 35, 0, 00455 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 00456 00457 42, 42, 0, 0, 0, 0, 42, 40, 40, 40, 00458 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 00459 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, 00460 0, 0, 0, 0, 35, 35, 35, 35, 35, 35, 00461 35, 35, 0, 0, 0, 0, 0, 42, 0, 0, 00462 0, 0, 0, 0, 0, 0, 39, 0, 0, 42, 00463 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 00464 0, 35, 36, 36, 0, 0, 42, 32, 32, 0, 00465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00466 0, 0, 0, 0, 42, 32, 32, 0, 0, 0, 00467 00468 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 00469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00470 0, 34, 34, 0, 0, 0, 0, 0, 34, 34, 00471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00472 0, 0, 0, 0, 0, 0, 33, 33, 33, 33, 00473 0 00474 } ; 00475 00476 static yyconst flex_int32_t yy_ec[256] = 00477 { 0, 00478 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00479 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 00480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00481 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 00482 14, 15, 16, 17, 18, 19, 20, 21, 21, 21, 00483 21, 21, 21, 21, 21, 21, 21, 22, 23, 24, 00484 25, 26, 1, 1, 29, 30, 31, 32, 33, 34, 00485 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 00486 38, 45, 46, 47, 48, 49, 50, 38, 51, 38, 00487 1, 1, 1, 27, 28, 1, 29, 30, 31, 32, 00488 00489 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 00490 43, 44, 38, 45, 46, 47, 48, 49, 50, 38, 00491 51, 38, 1, 52, 1, 53, 1, 1, 1, 1, 00492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00493 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00494 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00495 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00498 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00499 00500 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00501 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00502 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00503 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00505 1, 1, 1, 1, 1 00506 } ; 00507 00508 static yyconst flex_int32_t yy_meta[54] = 00509 { 0, 00510 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 00511 7, 7, 8, 9, 10, 11, 12, 13, 14, 10, 00512 15, 16, 17, 10, 10, 10, 1, 18, 19, 19, 00513 19, 19, 20, 19, 21, 22, 22, 22, 22, 22, 00514 22, 22, 22, 21, 22, 22, 22, 22, 22, 22, 00515 22, 1, 1 00516 } ; 00517 00518 static yyconst flex_int16_t yy_base[914] = 00519 { 0, 00520 0, 4, 22, 74, 123, 76, 176, 0, 229, 0, 00521 93, 281, 287, 293, 284, 0, 0, 0, 0, 0, 00522 329, 0, 335, 379, 0, 0, 2555, 4106, 75, 4106, 00523 2536, 2508, 396, 383, 402, 445, 57, 389, 2507, 58, 00524 75, 2496, 65, 66, 69, 407, 266, 417, 358, 399, 00525 364, 409, 388, 488, 531, 2494, 2509, 245, 2493, 56, 00526 305, 2492, 2495, 2484, 2479, 2475, 416, 2466, 556, 440, 00527 296, 52, 259, 416, 69, 307, 426, 260, 2457, 2455, 00528 2464, 2454, 605, 472, 482, 657, 2451, 2443, 2441, 377, 00529 2433, 0, 2415, 452, 2423, 4106, 476, 2436, 0, 519, 00530 00531 4106, 524, 465, 4106, 4106, 2435, 0, 0, 2419, 2407, 00532 0, 517, 0, 2431, 0, 523, 0, 4106, 4106, 2430, 00533 0, 0, 525, 4106, 4106, 4106, 4106, 2420, 562, 2419, 00534 0, 2391, 496, 2390, 2389, 494, 543, 689, 714, 383, 00535 632, 641, 2388, 2378, 568, 4106, 569, 570, 645, 673, 00536 0, 2371, 4106, 634, 639, 698, 0, 720, 2365, 4106, 00537 2376, 2370, 722, 726, 0, 747, 2345, 2356, 2342, 2340, 00538 2349, 2347, 2329, 2331, 2325, 0, 2319, 2309, 2309, 2306, 00539 2314, 2304, 751, 309, 2310, 312, 388, 411, 51, 550, 00540 529, 437, 446, 555, 752, 753, 2310, 2290, 2299, 431, 00541 00542 470, 2290, 2296, 2289, 2275, 2282, 2285, 2270, 2280, 2261, 00543 2263, 2259, 2257, 760, 2250, 622, 2239, 2242, 796, 0, 00544 2227, 0, 2222, 2230, 776, 2227, 2224, 0, 0, 0, 00545 2239, 2223, 2212, 0, 0, 2227, 680, 0, 2205, 2191, 00546 0, 765, 2217, 648, 0, 766, 2216, 1, 0, 0, 00547 774, 2214, 3, 0, 2187, 501, 780, 2185, 478, 652, 00548 602, 812, 822, 823, 775, 827, 8, 833, 846, 2171, 00549 0, 2169, 837, 2199, 850, 2179, 859, 871, 2149, 2158, 00550 2149, 2147, 880, 2128, 2133, 2118, 2116, 2111, 2109, 2115, 00551 858, 566, 619, 677, 704, 659, 527, 568, 825, 757, 00552 00553 835, 693, 609, 2116, 754, 2112, 2102, 2100, 2092, 2089, 00554 2091, 2096, 2081, 2085, 2091, 2079, 2073, 2085, 892, 2080, 00555 2084, 2064, 2062, 2070, 2069, 0, 2058, 902, 2054, 2051, 00556 2044, 2039, 0, 2064, 2050, 2023, 2008, 866, 791, 885, 00557 2013, 2010, 739, 846, 906, 907, 912, 916, 920, 928, 00558 933, 943, 954, 977, 875, 1998, 2009, 964, 4106, 988, 00559 999, 0, 897, 2008, 1993, 1003, 1011, 1015, 1984, 1985, 00560 1024, 1983, 1994, 800, 824, 820, 665, 643, 506, 894, 00561 919, 899, 458, 934, 920, 845, 1993, 1036, 937, 1979, 00562 1978, 1972, 1969, 1964, 1963, 1953, 1970, 1968, 1963, 1965, 00563 00564 1937, 0, 1046, 1058, 1062, 1953, 1068, 1949, 1948, 1072, 00565 1076, 1083, 1098, 1102, 1941, 1934, 1942, 1927, 4106, 1927, 00566 1106, 1938, 938, 1110, 1937, 1115, 1119, 1123, 943, 951, 00567 1934, 1923, 1930, 1919, 1144, 1148, 1930, 1899, 1133, 1887, 00568 954, 855, 1890, 1876, 1137, 494, 1159, 1165, 1170, 1878, 00569 978, 998, 1009, 942, 967, 989, 997, 1049, 1023, 1024, 00570 1886, 1025, 543, 1884, 1060, 1868, 1878, 1901, 1861, 1873, 00571 1846, 1857, 1836, 1832, 1834, 1824, 1813, 1824, 1181, 4106, 00572 1185, 1191, 1205, 1210, 1214, 1798, 1238, 1803, 1839, 1796, 00573 1218, 1803, 1222, 4106, 1782, 1057, 880, 1227, 1243, 1228, 00574 00575 1084, 1781, 1783, 1779, 1772, 1760, 1249, 1253, 1771, 1757, 00576 1257, 1085, 1755, 1757, 1258, 1746, 1761, 1762, 1265, 1748, 00577 1050, 1101, 1111, 1138, 1125, 684, 1164, 1238, 1143, 1244, 00578 726, 782, 1169, 1747, 1730, 1280, 1743, 1725, 1302, 1721, 00579 1712, 1729, 1711, 1721, 1706, 1306, 1310, 1314, 1318, 1365, 00580 1702, 1701, 1679, 1677, 1667, 1698, 4106, 1665, 1668, 1652, 00581 1172, 1094, 1322, 1326, 1248, 1189, 1658, 1642, 1641, 1622, 00582 1347, 1352, 1607, 1604, 1337, 1243, 1603, 1609, 1356, 1593, 00583 1572, 1338, 1263, 1582, 1297, 1581, 1292, 1360, 1293, 1235, 00584 1579, 1299, 1564, 1259, 1565, 1540, 1540, 1524, 1372, 1386, 00585 00586 1404, 1527, 1408, 1523, 1534, 1412, 1416, 1420, 1425, 1429, 00587 1442, 1451, 1457, 1522, 1501, 1504, 4106, 1501, 1512, 1466, 00588 1479, 1484, 1491, 1495, 1503, 1493, 1507, 1471, 1516, 1520, 00589 1524, 1469, 1528, 1532, 1339, 1547, 1481, 1537, 1553, 1559, 00590 1340, 1132, 1353, 1403, 1359, 1571, 1404, 1469, 1454, 1466, 00591 1451, 1603, 1581, 1440, 1586, 1590, 1597, 1575, 1628, 1425, 00592 1433, 1418, 1397, 1639, 1643, 4106, 1655, 1659, 1663, 1675, 00593 1679, 1683, 1691, 904, 1704, 1712, 1716, 1403, 1720, 1401, 00594 1724, 1729, 1733, 1738, 1767, 1781, 1785, 1793, 1814, 1358, 00595 1753, 1818, 4106, 1830, 1834, 1430, 1370, 1431, 1858, 1348, 00596 00597 1331, 1747, 1846, 1867, 1888, 1883, 1909, 1896, 1934, 1938, 00598 1632, 1942, 1946, 1950, 1954, 1298, 1255, 1982, 1988, 1333, 00599 2000, 2004, 2016, 2020, 2032, 2044, 1445, 1268, 264, 1235, 00600 1230, 1215, 2048, 2056, 2060, 1225, 2065, 2078, 2090, 2094, 00601 2106, 2110, 1152, 1807, 1409, 2072, 2149, 1112, 2137, 2141, 00602 2174, 2181, 2195, 2220, 2224, 2236, 4106, 2241, 2248, 2269, 00603 1090, 1668, 2263, 2186, 1055, 1063, 2294, 1001, 1353, 980, 00604 2128, 2299, 4106, 1633, 1458, 2320, 952, 0, 2345, 2306, 00605 2353, 2374, 2395, 778, 1853, 2380, 2389, 651, 613, 2422, 00606 2426, 2438, 2442, 387, 2201, 0, 2470, 339, 2495, 2326, 00607 00608 2456, 2275, 313, 2460, 4106, 2478, 2502, 2465, 2402, 2516, 00609 2521, 2528, 2540, 2545, 2555, 2564, 2585, 2571, 2580, 2591, 00610 2606, 0, 2627, 2595, 2617, 2612, 2633, 2652, 0, 2677, 00611 2658, 2683, 2705, 2709, 2713, 2717, 2759, 2721, 2726, 58, 00612 1808, 2738, 2748, 2784, 2788, 2809, 0, 2830, 0, 2855, 00613 4106, 2881, 2903, 2925, 2947, 2968, 2989, 3010, 3015, 3036, 00614 3057, 3079, 3098, 3119, 3134, 3152, 3173, 3180, 3202, 3224, 00615 3241, 3263, 3285, 3306, 3327, 3335, 3347, 3367, 3389, 3401, 00616 3421, 3443, 3465, 3486, 3507, 3528, 3549, 3570, 3591, 3612, 00617 3633, 3654, 3675, 3696, 3717, 3738, 3759, 3776, 3797, 3818, 00618 00619 3839, 3860, 3881, 3898, 3919, 3940, 3961, 3982, 4003, 4024, 00620 4045, 4062, 4083 00621 } ; 00622 00623 static yyconst flex_int16_t yy_def[914] = 00624 { 0, 00625 852, 852, 851, 3, 851, 5, 851, 7, 851, 9, 00626 853, 853, 854, 854, 7, 15, 15, 15, 15, 15, 00627 15, 21, 855, 855, 15, 15, 851, 851, 851, 851, 00628 851, 851, 856, 857, 857, 856, 851, 858, 859, 851, 00629 851, 851, 851, 851, 851, 860, 851, 860, 851, 851, 00630 851, 851, 851, 861, 861, 55, 55, 55, 55, 55, 00631 55, 55, 55, 55, 55, 55, 851, 851, 36, 69, 00632 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00633 55, 851, 851, 862, 862, 863, 864, 851, 851, 851, 00634 865, 865, 865, 83, 865, 851, 851, 851, 866, 867, 00635 00636 851, 867, 867, 851, 851, 851, 851, 868, 868, 868, 00637 869, 869, 869, 869, 870, 870, 870, 851, 851, 870, 00638 871, 872, 872, 851, 851, 851, 851, 872, 851, 851, 00639 873, 851, 36, 35, 36, 858, 860, 874, 874, 139, 00640 858, 858, 36, 36, 875, 851, 851, 858, 851, 858, 00641 876, 876, 851, 851, 860, 860, 877, 860, 48, 851, 00642 851, 851, 851, 860, 55, 875, 55, 55, 55, 55, 00643 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00644 55, 69, 69, 139, 139, 139, 139, 139, 139, 139, 00645 139, 139, 139, 139, 69, 69, 55, 55, 55, 55, 00646 00647 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00648 851, 851, 83, 862, 864, 851, 851, 864, 865, 865, 00649 865, 878, 865, 865, 83, 851, 865, 866, 102, 103, 00650 851, 851, 851, 879, 880, 851, 851, 868, 868, 868, 00651 869, 869, 869, 881, 870, 870, 870, 882, 871, 872, 00652 872, 872, 883, 873, 851, 139, 858, 139, 139, 139, 00653 139, 858, 858, 858, 875, 875, 884, 875, 851, 851, 00654 876, 876, 860, 877, 860, 166, 166, 166, 55, 55, 00655 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00656 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 00657 00658 139, 139, 139, 139, 139, 55, 55, 55, 55, 55, 00659 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00660 851, 851, 851, 851, 865, 878, 865, 865, 851, 865, 00661 851, 851, 879, 880, 851, 868, 868, 881, 882, 883, 00662 851, 139, 139, 139, 858, 858, 858, 278, 851, 278, 00663 851, 851, 884, 851, 278, 851, 876, 860, 851, 278, 00664 851, 360, 278, 55, 55, 851, 851, 860, 55, 55, 00665 55, 55, 55, 139, 139, 139, 139, 139, 139, 139, 00666 139, 139, 139, 139, 139, 139, 139, 139, 139, 55, 00667 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 00668 00669 55, 55, 851, 851, 860, 55, 851, 851, 851, 851, 00670 865, 865, 851, 851, 851, 865, 851, 851, 851, 868, 00671 868, 851, 139, 139, 139, 858, 858, 858, 278, 278, 00672 851, 851, 851, 851, 884, 884, 851, 876, 860, 278, 00673 851, 278, 55, 851, 860, 55, 851, 851, 860, 55, 00674 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 00675 139, 139, 139, 139, 139, 55, 55, 55, 55, 55, 00676 55, 55, 55, 55, 55, 55, 55, 55, 885, 851, 00677 851, 851, 885, 483, 885, 851, 851, 851, 865, 851, 00678 851, 868, 851, 851, 851, 139, 139, 858, 851, 858, 00679 00680 278, 278, 851, 851, 851, 851, 884, 884, 851, 876, 00681 860, 278, 55, 851, 860, 55, 55, 851, 860, 139, 00682 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 00683 139, 139, 139, 55, 55, 860, 55, 55, 55, 55, 00684 55, 55, 55, 55, 55, 886, 483, 483, 886, 483, 00685 851, 851, 851, 851, 851, 851, 851, 851, 868, 851, 00686 139, 139, 858, 858, 278, 278, 851, 851, 851, 851, 00687 884, 884, 851, 876, 860, 278, 55, 851, 860, 55, 00688 851, 860, 139, 139, 139, 139, 139, 139, 139, 139, 00689 139, 139, 139, 139, 55, 55, 55, 55, 851, 851, 00690 00691 860, 55, 55, 55, 55, 851, 886, 550, 886, 886, 00692 886, 886, 886, 851, 851, 851, 851, 851, 851, 868, 00693 851, 139, 858, 278, 278, 851, 851, 851, 851, 884, 00694 884, 851, 876, 860, 278, 55, 851, 860, 851, 860, 00695 139, 139, 139, 139, 139, 139, 139, 139, 55, 55, 00696 55, 887, 860, 55, 886, 886, 886, 886, 886, 851, 00697 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00698 860, 851, 851, 278, 851, 851, 360, 851, 851, 851, 00699 851, 884, 851, 851, 884, 851, 851, 860, 278, 851, 00700 860, 851, 851, 851, 860, 139, 139, 139, 888, 139, 00701 00702 55, 55, 889, 889, 890, 891, 892, 851, 851, 860, 00703 860, 886, 886, 886, 886, 851, 851, 851, 851, 851, 00704 851, 851, 851, 860, 851, 851, 278, 851, 278, 851, 00705 851, 851, 884, 884, 851, 851, 851, 860, 851, 851, 00706 360, 884, 851, 860, 139, 139, 893, 55, 894, 894, 00707 895, 896, 897, 851, 851, 891, 851, 851, 860, 892, 00708 851, 860, 886, 886, 851, 851, 851, 851, 278, 851, 00709 884, 851, 851, 860, 139, 893, 55, 898, 899, 896, 00710 851, 860, 897, 851, 860, 886, 886, 851, 851, 851, 00711 278, 851, 884, 139, 55, 898, 899, 851, 900, 886, 00712 00713 886, 851, 851, 851, 851, 851, 851, 360, 884, 851, 00714 851, 851, 685, 139, 901, 901, 902, 903, 903, 903, 00715 900, 904, 905, 886, 886, 906, 907, 908, 904, 905, 00716 906, 909, 851, 907, 851, 860, 908, 851, 909, 851, 00717 860, 851, 860, 910, 910, 911, 912, 913, 912, 913, 00718 0, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00719 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00720 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00721 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00722 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00723 00724 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 00725 851, 851, 851 00726 } ; 00727 00728 static yyconst flex_int16_t yy_nxt[4160] = 00729 { 0, 00730 851, 29, 30, 245, 29, 29, 30, 235, 29, 351, 00731 352, 352, 353, 254, 254, 254, 254, 31, 236, 254, 00732 237, 31, 32, 33, 34, 35, 36, 37, 38, 32, 00733 39, 40, 41, 42, 42, 42, 43, 44, 42, 45, 00734 46, 47, 48, 49, 32, 50, 51, 52, 53, 54, 00735 55, 56, 57, 55, 58, 59, 60, 55, 61, 55, 00736 55, 62, 55, 63, 55, 64, 65, 55, 55, 55, 00737 55, 66, 55, 67, 68, 69, 129, 94, 70, 129, 00738 94, 146, 153, 258, 199, 146, 131, 298, 174, 153, 00739 153, 842, 130, 153, 112, 113, 168, 112, 175, 153, 00740 00741 132, 132, 71, 72, 73, 95, 74, 75, 132, 132, 00742 114, 173, 132, 76, 96, 96, 202, 77, 132, 78, 00743 79, 80, 81, 82, 83, 84, 85, 83, 82, 86, 00744 82, 82, 82, 87, 87, 88, 89, 87, 87, 87, 00745 90, 82, 87, 82, 87, 87, 87, 87, 87, 82, 00746 91, 92, 92, 92, 92, 93, 92, 92, 92, 92, 00747 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 00748 92, 92, 92, 92, 82, 82, 96, 97, 30, 96, 00749 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 00750 96, 96, 96, 98, 96, 96, 96, 96, 96, 96, 00751 00752 96, 96, 96, 99, 99, 99, 99, 99, 99, 99, 00753 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 00754 99, 99, 99, 99, 99, 99, 99, 96, 96, 96, 00755 100, 101, 96, 102, 96, 103, 96, 96, 96, 103, 00756 103, 104, 105, 103, 103, 103, 106, 96, 103, 107, 00757 103, 103, 103, 103, 103, 96, 108, 108, 108, 108, 00758 108, 108, 108, 109, 108, 108, 108, 108, 108, 108, 00759 108, 108, 110, 108, 108, 108, 108, 108, 108, 108, 00760 96, 96, 112, 113, 170, 112, 171, 169, 116, 117, 00761 153, 116, 769, 172, 116, 117, 206, 116, 114, 118, 00762 00763 119, 200, 96, 96, 120, 118, 119, 207, 268, 132, 00764 120, 96, 96, 96, 96, 96, 96, 96, 96, 96, 00765 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 00766 96, 96, 96, 96, 96, 121, 123, 124, 176, 123, 00767 197, 258, 198, 203, 258, 617, 176, 125, 126, 177, 00768 176, 127, 128, 292, 295, 293, 121, 121, 121, 121, 00769 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 00770 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 00771 123, 124, 160, 123, 134, 134, 134, 134, 146, 818, 00772 147, 125, 126, 147, 222, 127, 128, 133, 134, 134, 00773 00774 135, 132, 136, 134, 134, 134, 134, 132, 154, 211, 00775 149, 155, 153, 130, 137, 258, 137, 141, 154, 814, 00776 258, 155, 161, 146, 157, 260, 142, 261, 145, 296, 00777 139, 132, 150, 146, 162, 158, 141, 159, 145, 140, 00778 153, 195, 132, 258, 196, 142, 143, 134, 134, 144, 00779 156, 136, 132, 225, 204, 170, 225, 201, 297, 132, 00780 156, 145, 130, 137, 172, 137, 145, 146, 179, 258, 00781 205, 309, 310, 214, 214, 214, 214, 129, 258, 139, 00782 129, 226, 851, 214, 214, 214, 214, 303, 140, 163, 00783 258, 304, 164, 130, 148, 147, 460, 133, 147, 851, 00784 00785 135, 283, 148, 148, 211, 148, 137, 148, 851, 166, 00786 258, 148, 148, 148, 211, 149, 311, 851, 242, 342, 00787 229, 242, 516, 229, 246, 229, 251, 246, 229, 251, 00788 517, 167, 163, 258, 243, 164, 231, 148, 258, 256, 00789 247, 231, 252, 260, 154, 148, 148, 155, 148, 137, 00790 148, 456, 166, 232, 148, 148, 148, 182, 232, 258, 00791 183, 258, 233, 129, 145, 301, 129, 233, 381, 265, 00792 147, 147, 266, 147, 147, 258, 302, 851, 299, 130, 00793 267, 267, 258, 305, 184, 185, 186, 258, 187, 188, 00794 149, 149, 260, 532, 300, 189, 375, 382, 258, 190, 00795 00796 258, 191, 192, 193, 194, 212, 213, 214, 214, 213, 00797 212, 215, 212, 212, 212, 215, 215, 212, 212, 215, 00798 215, 215, 216, 212, 215, 212, 215, 215, 215, 215, 00799 215, 212, 212, 147, 258, 154, 147, 217, 154, 222, 00800 154, 258, 147, 155, 344, 147, 269, 269, 269, 269, 00801 241, 258, 387, 149, 322, 145, 212, 212, 218, 803, 00802 145, 218, 149, 219, 262, 376, 149, 218, 218, 254, 00803 254, 218, 218, 218, 147, 258, 218, 147, 218, 218, 00804 218, 218, 218, 263, 258, 264, 455, 235, 270, 221, 00805 163, 258, 802, 164, 149, 148, 343, 258, 236, 154, 00806 00807 237, 454, 155, 148, 148, 380, 148, 137, 148, 258, 00808 166, 377, 148, 148, 148, 163, 258, 264, 164, 145, 00809 148, 154, 386, 163, 155, 258, 163, 163, 148, 148, 00810 164, 148, 137, 148, 588, 166, 258, 148, 148, 148, 00811 275, 145, 273, 166, 378, 379, 259, 166, 276, 269, 00812 269, 277, 195, 195, 195, 196, 196, 196, 258, 267, 00813 267, 214, 214, 214, 214, 464, 242, 246, 149, 242, 00814 246, 258, 145, 145, 145, 251, 265, 225, 251, 266, 00815 225, 147, 243, 247, 147, 424, 258, 267, 267, 258, 00816 278, 252, 322, 245, 291, 291, 291, 218, 389, 384, 00817 00818 218, 149, 219, 254, 254, 226, 218, 218, 323, 798, 00819 218, 218, 218, 147, 258, 218, 147, 218, 218, 218, 00820 218, 218, 263, 147, 147, 593, 147, 147, 348, 349, 00821 349, 350, 258, 149, 354, 349, 349, 355, 154, 267, 00822 267, 155, 451, 149, 149, 267, 267, 269, 269, 269, 00823 269, 154, 258, 345, 155, 383, 258, 258, 145, 452, 00824 360, 361, 361, 362, 453, 347, 346, 258, 241, 385, 00825 275, 145, 354, 349, 349, 355, 425, 258, 258, 358, 00826 851, 366, 367, 367, 368, 512, 299, 254, 254, 270, 00827 258, 463, 851, 403, 404, 404, 405, 254, 254, 268, 00828 00829 260, 254, 374, 413, 413, 413, 414, 147, 147, 429, 00830 147, 147, 258, 147, 268, 363, 147, 348, 430, 268, 00831 350, 349, 349, 349, 349, 562, 258, 149, 149, 348, 00832 457, 258, 350, 149, 351, 352, 352, 351, 426, 442, 00833 727, 268, 428, 459, 352, 352, 352, 352, 268, 458, 00834 429, 258, 258, 427, 431, 351, 352, 352, 353, 430, 00835 268, 462, 429, 432, 461, 154, 258, 433, 155, 258, 00836 258, 430, 268, 465, 258, 501, 434, 433, 354, 349, 00837 349, 354, 496, 523, 795, 145, 434, 268, 435, 360, 00838 361, 361, 362, 502, 439, 268, 504, 436, 356, 258, 00839 00840 361, 361, 361, 361, 366, 367, 367, 366, 520, 524, 00841 258, 431, 367, 367, 367, 367, 366, 367, 367, 368, 00842 432, 258, 429, 792, 166, 447, 448, 448, 449, 258, 00843 258, 440, 268, 431, 521, 525, 166, 403, 404, 404, 00844 405, 258, 441, 526, 790, 522, 444, 403, 404, 404, 00845 403, 528, 529, 531, 444, 258, 258, 258, 445, 404, 00846 404, 404, 404, 403, 404, 404, 405, 166, 258, 479, 00847 479, 479, 479, 483, 483, 483, 484, 479, 479, 479, 00848 479, 258, 258, 166, 485, 485, 485, 485, 533, 258, 00849 480, 789, 258, 561, 480, 527, 584, 788, 480, 413, 00850 00851 413, 413, 413, 487, 487, 487, 487, 493, 493, 493, 00852 493, 447, 448, 448, 449, 536, 147, 576, 494, 147, 00853 499, 448, 448, 499, 147, 565, 258, 147, 268, 268, 00854 585, 486, 784, 258, 154, 486, 149, 155, 154, 622, 00855 149, 155, 258, 258, 149, 351, 352, 352, 353, 351, 00856 352, 352, 353, 587, 145, 500, 777, 258, 145, 498, 00857 447, 448, 448, 447, 258, 511, 448, 448, 448, 448, 00858 258, 447, 448, 448, 449, 258, 507, 591, 697, 586, 00859 166, 515, 479, 479, 479, 479, 485, 485, 485, 485, 00860 508, 166, 547, 547, 547, 548, 258, 773, 594, 518, 00861 00862 589, 258, 424, 480, 258, 518, 483, 483, 483, 483, 00863 519, 550, 550, 550, 550, 485, 485, 485, 485, 493, 00864 493, 493, 493, 493, 493, 493, 493, 480, 147, 147, 00865 494, 147, 147, 268, 494, 625, 851, 736, 549, 487, 00866 487, 487, 487, 770, 499, 448, 448, 499, 149, 149, 00867 351, 352, 352, 353, 351, 352, 352, 353, 154, 154, 00868 629, 155, 155, 563, 149, 627, 154, 258, 552, 155, 00869 258, 486, 553, 564, 554, 592, 258, 555, 145, 145, 00870 624, 163, 590, 518, 164, 388, 145, 268, 635, 562, 00871 571, 258, 268, 582, 592, 258, 768, 572, 648, 766, 00872 00873 579, 166, 575, 599, 600, 600, 601, 606, 606, 606, 00874 606, 547, 547, 547, 547, 608, 608, 608, 608, 606, 00875 606, 606, 606, 147, 258, 258, 147, 147, 480, 258, 00876 147, 258, 851, 644, 765, 645, 851, 720, 154, 154, 00877 480, 155, 155, 149, 642, 720, 647, 149, 351, 352, 00878 352, 353, 427, 351, 352, 352, 353, 154, 145, 145, 00879 155, 599, 600, 600, 601, 609, 550, 550, 550, 550, 00880 696, 623, 258, 599, 600, 600, 599, 145, 748, 630, 00881 699, 640, 634, 268, 689, 258, 638, 600, 600, 600, 00882 600, 258, 258, 166, 698, 610, 791, 268, 631, 611, 00883 00884 699, 612, 464, 743, 613, 599, 600, 600, 601, 599, 00885 600, 600, 653, 606, 606, 606, 606, 606, 606, 606, 00886 606, 608, 608, 608, 608, 166, 606, 606, 606, 606, 00887 606, 606, 606, 606, 480, 258, 258, 731, 480, 730, 00888 617, 258, 851, 606, 606, 606, 606, 480, 700, 464, 00889 717, 480, 606, 606, 606, 606, 775, 656, 606, 606, 00890 606, 606, 258, 258, 480, 617, 655, 665, 665, 665, 00891 665, 716, 652, 480, 657, 625, 745, 746, 666, 480, 00892 667, 667, 667, 668, 658, 670, 667, 667, 671, 268, 00893 258, 669, 672, 667, 667, 673, 669, 702, 402, 659, 00894 00895 701, 464, 794, 669, 675, 676, 676, 677, 679, 679, 00896 679, 679, 149, 690, 686, 680, 258, 681, 681, 681, 00897 681, 351, 352, 352, 353, 683, 684, 684, 685, 667, 00898 667, 667, 668, 687, 667, 667, 688, 678, 154, 674, 00899 669, 155, 664, 663, 669, 662, 661, 268, 670, 667, 00900 667, 671, 660, 145, 692, 692, 692, 692, 145, 669, 00901 694, 692, 692, 695, 682, 693, 402, 654, 652, 691, 00902 402, 693, 599, 600, 600, 653, 606, 606, 606, 606, 00903 145, 651, 708, 709, 709, 710, 650, 606, 606, 606, 00904 606, 606, 606, 606, 606, 649, 464, 480, 606, 606, 00905 00906 606, 606, 166, 258, 703, 704, 704, 705, 480, 706, 00907 711, 646, 480, 643, 641, 639, 712, 148, 148, 480, 00908 148, 137, 148, 165, 166, 176, 148, 148, 148, 606, 00909 606, 606, 606, 154, 154, 713, 155, 155, 714, 637, 00910 665, 665, 665, 665, 665, 665, 665, 665, 636, 633, 00911 480, 666, 632, 145, 145, 666, 667, 667, 667, 667, 00912 718, 718, 718, 719, 721, 721, 721, 722, 629, 154, 00913 715, 720, 155, 628, 762, 720, 670, 667, 667, 670, 00914 723, 718, 718, 724, 672, 667, 667, 672, 627, 145, 00915 626, 720, 725, 718, 718, 726, 166, 621, 620, 785, 00916 00917 166, 619, 557, 720, 149, 675, 676, 676, 675, 618, 00918 617, 616, 149, 676, 676, 676, 676, 675, 676, 676, 00919 677, 679, 679, 679, 679, 681, 681, 681, 681, 615, 00920 351, 352, 352, 353, 683, 684, 684, 683, 431, 684, 00921 684, 684, 684, 614, 728, 605, 431, 432, 749, 750, 00922 750, 751, 728, 402, 154, 432, 729, 155, 604, 430, 00923 728, 603, 319, 602, 732, 733, 598, 433, 683, 684, 00924 684, 685, 433, 732, 145, 597, 434, 596, 732, 595, 00925 583, 434, 735, 735, 735, 735, 687, 667, 667, 687, 00926 581, 371, 580, 736, 737, 718, 718, 738, 744, 578, 00927 00928 577, 435, 574, 573, 570, 720, 145, 734, 154, 154, 00929 436, 155, 155, 569, 145, 739, 740, 740, 741, 692, 00930 692, 692, 692, 568, 567, 566, 742, 560, 145, 145, 00931 693, 694, 692, 692, 694, 694, 692, 692, 695, 559, 00932 558, 843, 693, 557, 556, 551, 693, 703, 704, 704, 00933 703, 145, 774, 545, 154, 145, 544, 155, 268, 703, 00934 704, 704, 705, 402, 706, 543, 542, 166, 704, 704, 00935 704, 704, 148, 148, 145, 148, 137, 148, 258, 166, 00936 541, 148, 148, 148, 754, 755, 755, 754, 851, 703, 00937 704, 704, 705, 540, 752, 757, 539, 708, 709, 709, 00938 00939 708, 538, 537, 799, 149, 536, 137, 535, 137, 166, 00940 758, 755, 755, 759, 534, 756, 258, 166, 530, 176, 00941 514, 757, 513, 756, 756, 761, 756, 137, 756, 502, 00942 166, 510, 756, 756, 756, 709, 709, 709, 709, 708, 00943 709, 709, 710, 606, 606, 606, 606, 606, 606, 606, 00944 606, 606, 606, 606, 606, 606, 606, 606, 606, 166, 00945 509, 506, 505, 761, 480, 504, 503, 711, 480, 497, 00946 495, 492, 480, 491, 490, 489, 480, 488, 658, 482, 00947 481, 478, 764, 718, 718, 718, 719, 477, 763, 718, 00948 718, 718, 719, 476, 720, 475, 474, 658, 473, 472, 00949 00950 720, 721, 721, 721, 722, 721, 721, 721, 722, 471, 00951 470, 469, 720, 468, 467, 466, 720, 723, 718, 718, 00952 767, 723, 718, 718, 724, 464, 176, 450, 720, 446, 00953 176, 176, 720, 725, 718, 718, 726, 166, 443, 438, 00954 437, 166, 423, 422, 720, 725, 718, 718, 726, 351, 00955 352, 352, 353, 149, 421, 420, 720, 351, 352, 352, 00956 353, 735, 735, 735, 735, 149, 737, 718, 718, 772, 00957 335, 419, 736, 749, 750, 750, 751, 720, 631, 737, 00958 718, 718, 738, 418, 771, 417, 145, 416, 415, 412, 00959 720, 739, 740, 740, 739, 740, 740, 740, 740, 145, 00960 00961 411, 410, 736, 409, 258, 408, 736, 739, 740, 740, 00962 741, 351, 352, 352, 353, 407, 406, 402, 742, 401, 00963 400, 399, 742, 398, 431, 397, 396, 395, 431, 351, 00964 352, 352, 353, 432, 394, 393, 392, 432, 749, 750, 00965 750, 749, 750, 750, 750, 750, 391, 390, 388, 430, 00966 758, 755, 755, 759, 373, 756, 372, 371, 166, 176, 00967 176, 757, 851, 756, 756, 370, 756, 137, 756, 369, 00968 166, 793, 756, 756, 756, 749, 750, 750, 751, 176, 00969 778, 176, 755, 755, 755, 755, 365, 606, 606, 606, 00970 606, 364, 137, 757, 137, 166, 781, 755, 755, 782, 00971 00972 851, 780, 815, 816, 816, 817, 359, 757, 480, 780, 00973 780, 357, 780, 137, 780, 356, 145, 258, 780, 780, 00974 780, 754, 755, 755, 754, 755, 755, 755, 755, 341, 00975 787, 253, 757, 248, 244, 337, 757, 754, 755, 755, 00976 754, 149, 758, 755, 755, 758, 336, 335, 757, 758, 00977 755, 755, 759, 757, 332, 331, 234, 149, 330, 329, 00978 757, 328, 166, 327, 606, 606, 606, 606, 325, 166, 00979 758, 755, 755, 759, 851, 756, 826, 826, 826, 826, 00980 324, 757, 322, 756, 756, 480, 756, 137, 756, 323, 00981 166, 322, 756, 756, 756, 723, 718, 718, 767, 786, 00982 00983 737, 718, 718, 772, 321, 320, 720, 755, 755, 755, 00984 755, 720, 319, 318, 317, 166, 316, 315, 757, 314, 00985 145, 758, 755, 755, 759, 313, 756, 606, 606, 606, 00986 606, 312, 757, 308, 756, 756, 307, 756, 137, 756, 00987 306, 166, 294, 756, 756, 756, 154, 291, 480, 155, 00988 290, 796, 289, 288, 781, 755, 755, 781, 176, 796, 00989 796, 287, 796, 137, 796, 757, 145, 824, 796, 796, 00990 796, 286, 285, 176, 145, 781, 755, 755, 782, 284, 00991 283, 606, 606, 606, 606, 282, 757, 281, 280, 279, 00992 606, 606, 606, 606, 153, 145, 781, 755, 755, 782, 00993 00994 153, 780, 480, 351, 352, 352, 353, 757, 137, 780, 00995 780, 480, 780, 137, 780, 272, 145, 801, 780, 780, 00996 780, 256, 800, 804, 804, 804, 804, 806, 807, 807, 00997 808, 256, 256, 257, 805, 255, 131, 253, 809, 810, 00998 810, 810, 810, 811, 812, 812, 813, 248, 244, 240, 00999 805, 239, 234, 131, 809, 227, 224, 606, 606, 606, 01000 606, 804, 804, 804, 804, 223, 806, 807, 807, 808, 01001 268, 154, 805, 211, 155, 211, 796, 809, 480, 806, 01002 807, 807, 806, 211, 796, 796, 211, 796, 137, 796, 01003 805, 145, 210, 796, 796, 796, 819, 820, 820, 821, 01004 01005 209, 822, 825, 807, 807, 807, 807, 208, 430, 132, 01006 181, 180, 431, 137, 805, 137, 145, 810, 810, 810, 01007 810, 432, 811, 812, 812, 811, 179, 178, 805, 812, 01008 812, 812, 812, 805, 177, 173, 431, 169, 168, 132, 01009 805, 811, 812, 812, 813, 432, 815, 816, 816, 817, 01010 152, 132, 809, 131, 851, 433, 815, 816, 816, 815, 01011 851, 851, 433, 851, 434, 816, 816, 816, 816, 851, 01012 851, 434, 820, 820, 820, 820, 166, 258, 851, 851, 01013 267, 819, 820, 820, 819, 851, 815, 816, 816, 817, 01014 851, 827, 820, 820, 820, 820, 831, 831, 831, 831, 01015 01016 851, 145, 851, 137, 851, 137, 166, 819, 820, 820, 01017 821, 851, 822, 826, 826, 826, 826, 480, 606, 606, 01018 606, 606, 851, 851, 137, 851, 137, 145, 154, 851, 01019 851, 155, 851, 829, 833, 833, 833, 833, 851, 480, 01020 851, 829, 829, 851, 829, 137, 829, 851, 145, 658, 01021 829, 829, 829, 835, 833, 833, 836, 851, 834, 831, 01022 831, 831, 831, 851, 851, 851, 834, 834, 851, 834, 01023 137, 834, 851, 145, 851, 834, 834, 834, 154, 851, 01024 480, 155, 851, 829, 838, 838, 838, 838, 851, 851, 01025 851, 829, 829, 851, 829, 137, 829, 851, 145, 851, 01026 01027 829, 829, 829, 851, 851, 480, 833, 833, 833, 833, 01028 833, 833, 833, 833, 835, 833, 833, 835, 835, 833, 01029 833, 836, 838, 838, 838, 838, 851, 838, 838, 838, 01030 838, 851, 851, 851, 145, 851, 851, 851, 145, 844, 01031 844, 844, 844, 480, 851, 851, 851, 840, 480, 845, 01032 844, 844, 846, 851, 851, 840, 851, 851, 851, 841, 01033 835, 833, 833, 836, 851, 834, 851, 851, 851, 145, 01034 851, 851, 851, 834, 834, 851, 834, 137, 834, 851, 01035 145, 851, 834, 834, 834, 844, 844, 844, 844, 845, 01036 844, 844, 845, 851, 851, 851, 851, 851, 851, 851, 01037 01038 851, 851, 851, 851, 851, 851, 851, 851, 851, 145, 01039 845, 844, 844, 846, 851, 847, 851, 851, 851, 851, 01040 851, 851, 851, 851, 851, 851, 851, 137, 851, 137, 01041 145, 154, 851, 851, 155, 851, 849, 851, 851, 851, 01042 851, 851, 851, 851, 849, 849, 851, 849, 137, 849, 01043 851, 145, 851, 849, 849, 849, 154, 851, 851, 155, 01044 851, 849, 851, 851, 851, 851, 851, 851, 851, 849, 01045 849, 851, 849, 137, 849, 851, 145, 851, 849, 849, 01046 849, 28, 28, 28, 28, 28, 28, 28, 28, 28, 01047 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 01048 01049 28, 28, 28, 111, 111, 111, 111, 111, 111, 111, 01050 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 01051 111, 111, 111, 111, 111, 115, 115, 115, 115, 115, 01052 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 01053 115, 115, 115, 115, 115, 115, 115, 122, 122, 122, 01054 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 01055 122, 122, 122, 122, 122, 122, 122, 122, 122, 138, 01056 138, 138, 138, 138, 851, 851, 851, 851, 851, 851, 01057 138, 138, 138, 851, 851, 138, 138, 138, 138, 138, 01058 136, 136, 136, 136, 136, 851, 851, 851, 851, 851, 01059 01060 851, 851, 851, 851, 851, 851, 136, 136, 136, 136, 01061 136, 148, 851, 851, 148, 148, 851, 851, 851, 148, 01062 148, 851, 148, 851, 148, 148, 851, 148, 148, 148, 01063 148, 148, 151, 151, 151, 151, 151, 137, 851, 851, 01064 137, 851, 851, 851, 851, 851, 851, 851, 851, 137, 01065 137, 137, 851, 137, 137, 137, 137, 137, 165, 851, 01066 851, 165, 165, 851, 851, 851, 165, 165, 851, 165, 01067 165, 165, 165, 851, 165, 165, 165, 165, 165, 212, 01068 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 01069 212, 212, 212, 212, 212, 212, 212, 851, 212, 220, 01070 01071 851, 851, 220, 220, 220, 851, 851, 220, 220, 220, 01072 851, 851, 220, 220, 220, 220, 220, 220, 220, 220, 01073 218, 851, 851, 218, 218, 218, 851, 851, 218, 218, 01074 218, 851, 851, 851, 218, 218, 851, 851, 218, 220, 01075 851, 851, 851, 851, 851, 851, 851, 851, 220, 851, 01076 851, 220, 220, 220, 220, 220, 228, 851, 851, 851, 01077 851, 851, 851, 851, 851, 851, 228, 851, 851, 228, 01078 228, 228, 228, 228, 230, 851, 851, 230, 230, 230, 01079 851, 851, 230, 230, 230, 230, 851, 851, 230, 230, 01080 851, 851, 851, 230, 238, 851, 851, 238, 238, 238, 01081 01082 238, 238, 241, 241, 241, 241, 241, 241, 241, 241, 01083 241, 241, 241, 241, 241, 241, 241, 851, 851, 241, 01084 241, 241, 241, 241, 245, 245, 245, 245, 245, 245, 01085 245, 851, 851, 245, 245, 245, 245, 245, 245, 245, 01086 245, 245, 245, 245, 245, 245, 249, 851, 851, 851, 01087 249, 249, 851, 249, 851, 249, 851, 851, 249, 249, 01088 249, 249, 249, 250, 250, 851, 250, 250, 250, 250, 01089 851, 851, 250, 250, 851, 250, 250, 250, 250, 250, 01090 250, 250, 250, 250, 250, 254, 254, 851, 254, 254, 01091 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 01092 01093 254, 254, 254, 254, 254, 254, 254, 258, 851, 851, 01094 258, 258, 851, 851, 851, 258, 258, 851, 258, 258, 01095 258, 258, 851, 258, 258, 258, 258, 258, 268, 851, 01096 851, 268, 851, 851, 268, 268, 851, 851, 851, 851, 01097 268, 268, 851, 851, 268, 268, 268, 268, 268, 271, 01098 851, 851, 271, 271, 271, 271, 271, 274, 851, 851, 01099 274, 274, 851, 851, 274, 274, 274, 326, 326, 851, 01100 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 01101 326, 326, 326, 326, 326, 326, 326, 326, 326, 333, 01102 333, 851, 333, 333, 333, 333, 333, 333, 333, 333, 01103 01104 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 01105 333, 334, 851, 851, 334, 334, 851, 851, 334, 334, 01106 334, 338, 338, 338, 338, 338, 338, 338, 338, 338, 01107 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 01108 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 01109 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 01110 339, 339, 339, 339, 339, 340, 340, 851, 340, 340, 01111 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 01112 340, 340, 340, 340, 340, 340, 340, 267, 267, 267, 01113 267, 851, 851, 267, 267, 851, 851, 851, 851, 267, 01114 01115 267, 851, 851, 267, 267, 267, 267, 267, 546, 546, 01116 546, 546, 546, 851, 851, 851, 851, 851, 851, 851, 01117 851, 851, 851, 546, 546, 546, 546, 546, 546, 607, 01118 607, 607, 607, 607, 851, 851, 851, 607, 607, 851, 01119 607, 851, 607, 851, 607, 607, 607, 607, 607, 607, 01120 707, 707, 707, 707, 707, 851, 851, 851, 707, 707, 01121 851, 707, 707, 707, 707, 851, 707, 707, 707, 707, 01122 707, 747, 747, 747, 747, 747, 851, 851, 851, 747, 01123 747, 851, 747, 747, 747, 747, 851, 747, 747, 747, 01124 747, 747, 752, 752, 752, 752, 752, 851, 851, 851, 01125 01126 851, 851, 851, 851, 851, 851, 752, 851, 752, 752, 01127 752, 752, 752, 753, 753, 753, 753, 753, 851, 851, 01128 851, 851, 851, 851, 851, 753, 753, 753, 851, 753, 01129 753, 753, 753, 753, 756, 756, 756, 756, 756, 851, 01130 756, 851, 756, 756, 851, 756, 851, 756, 756, 851, 01131 756, 756, 756, 756, 756, 760, 760, 760, 760, 760, 01132 851, 760, 851, 760, 760, 851, 760, 760, 760, 760, 01133 851, 760, 760, 760, 760, 760, 776, 776, 776, 776, 01134 776, 851, 776, 851, 776, 776, 851, 776, 776, 776, 01135 776, 851, 776, 776, 776, 776, 776, 778, 778, 778, 01136 01137 778, 778, 851, 851, 851, 851, 851, 851, 851, 851, 01138 851, 778, 851, 778, 778, 778, 778, 778, 779, 779, 01139 779, 779, 779, 851, 851, 851, 851, 851, 851, 851, 01140 779, 779, 779, 851, 779, 779, 779, 779, 779, 780, 01141 780, 780, 780, 780, 851, 780, 851, 780, 780, 851, 01142 780, 851, 780, 851, 851, 780, 780, 780, 780, 780, 01143 783, 783, 783, 783, 783, 851, 783, 851, 783, 783, 01144 851, 783, 783, 783, 783, 851, 783, 783, 783, 783, 01145 783, 796, 851, 851, 851, 796, 796, 851, 796, 851, 01146 796, 851, 851, 796, 796, 796, 796, 796, 797, 851, 01147 01148 851, 797, 797, 851, 851, 851, 797, 797, 851, 797, 01149 797, 797, 797, 851, 797, 797, 797, 797, 797, 823, 01150 823, 823, 823, 823, 851, 851, 851, 851, 851, 851, 01151 851, 823, 823, 823, 851, 823, 823, 823, 823, 823, 01152 827, 827, 827, 827, 827, 851, 851, 851, 851, 851, 01153 851, 851, 851, 851, 827, 851, 827, 827, 827, 827, 01154 827, 828, 828, 828, 828, 828, 851, 851, 851, 851, 01155 851, 851, 851, 828, 828, 828, 851, 828, 828, 828, 01156 828, 828, 822, 822, 822, 822, 822, 851, 851, 851, 01157 851, 851, 851, 851, 851, 851, 851, 851, 822, 822, 01158 01159 822, 822, 822, 829, 851, 851, 851, 829, 829, 851, 01160 829, 851, 829, 851, 851, 829, 829, 829, 829, 829, 01161 830, 851, 851, 830, 830, 851, 851, 851, 830, 830, 01162 851, 830, 830, 830, 830, 851, 830, 830, 830, 830, 01163 830, 832, 832, 832, 832, 832, 851, 851, 851, 851, 01164 851, 851, 851, 851, 851, 851, 851, 832, 832, 832, 01165 832, 832, 834, 834, 834, 834, 834, 851, 851, 851, 01166 834, 834, 851, 834, 851, 834, 851, 851, 834, 834, 01167 834, 834, 834, 837, 837, 837, 837, 837, 851, 851, 01168 851, 837, 837, 851, 837, 837, 837, 837, 851, 837, 01169 01170 837, 837, 837, 837, 839, 839, 839, 839, 839, 851, 01171 851, 851, 839, 839, 851, 839, 851, 839, 851, 839, 01172 839, 839, 839, 839, 839, 847, 847, 847, 847, 847, 01173 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01174 851, 847, 847, 847, 847, 847, 848, 848, 848, 848, 01175 848, 851, 851, 851, 851, 851, 851, 851, 848, 848, 01176 848, 851, 848, 848, 848, 848, 848, 849, 851, 851, 01177 851, 849, 849, 851, 849, 851, 849, 851, 851, 849, 01178 849, 849, 849, 849, 850, 851, 851, 850, 850, 851, 01179 851, 851, 850, 850, 851, 850, 850, 850, 850, 851, 01180 01181 850, 850, 850, 850, 850, 27, 851, 851, 851, 851, 01182 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01183 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01184 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01185 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01186 851, 851, 851, 851, 851, 851, 851, 851, 851 01187 } ; 01188 01189 static yyconst flex_int16_t yy_chk[4160] = 01190 { 0, 01191 0, 1, 1, 248, 1, 2, 2, 107, 2, 267, 01192 267, 267, 267, 248, 248, 253, 253, 1, 107, 253, 01193 107, 2, 3, 3, 3, 3, 3, 3, 3, 3, 01194 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01195 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01196 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01197 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 01198 3, 3, 3, 3, 3, 4, 29, 6, 4, 29, 01199 6, 37, 40, 189, 72, 41, 45, 189, 60, 43, 01200 44, 840, 29, 45, 11, 11, 72, 11, 60, 41, 01201 01202 37, 40, 4, 4, 4, 6, 4, 4, 43, 44, 01203 11, 75, 45, 4, 11, 11, 75, 4, 41, 4, 01204 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 01205 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 01206 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 01207 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 01208 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 01209 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 01210 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01211 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01212 01213 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01214 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 01215 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 01216 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 01217 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 01218 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 01219 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 01220 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 01221 9, 9, 12, 12, 58, 12, 58, 73, 13, 13, 01222 47, 13, 729, 58, 14, 14, 78, 14, 12, 13, 01223 01224 13, 73, 12, 12, 13, 14, 14, 78, 729, 47, 01225 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 01226 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 01227 15, 15, 15, 15, 15, 21, 23, 23, 61, 23, 01228 71, 184, 71, 76, 186, 803, 61, 23, 23, 76, 01229 61, 23, 23, 184, 186, 184, 21, 21, 21, 21, 01230 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 01231 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 01232 24, 24, 49, 24, 34, 34, 34, 34, 51, 798, 01233 38, 24, 24, 38, 90, 24, 24, 33, 33, 33, 01234 01235 33, 49, 33, 35, 35, 35, 35, 51, 46, 90, 01236 38, 46, 53, 33, 33, 140, 33, 34, 48, 794, 01237 187, 48, 50, 50, 48, 140, 34, 140, 46, 187, 01238 33, 53, 38, 52, 52, 48, 35, 48, 48, 33, 01239 67, 70, 50, 188, 70, 35, 36, 36, 36, 36, 01240 46, 36, 52, 94, 77, 74, 94, 74, 188, 67, 01241 48, 70, 36, 36, 74, 36, 36, 67, 77, 192, 01242 77, 200, 200, 84, 84, 84, 84, 97, 193, 36, 01243 97, 94, 103, 85, 85, 85, 85, 192, 36, 54, 01244 383, 193, 54, 97, 54, 136, 383, 133, 136, 103, 01245 01246 133, 201, 54, 54, 84, 54, 54, 54, 103, 54, 01247 259, 54, 54, 54, 85, 136, 201, 133, 112, 259, 01248 100, 112, 446, 100, 116, 102, 123, 116, 102, 123, 01249 446, 54, 55, 256, 112, 55, 100, 55, 379, 133, 01250 116, 102, 123, 256, 137, 55, 55, 137, 55, 55, 01251 55, 379, 55, 100, 55, 55, 55, 69, 102, 297, 01252 69, 191, 100, 129, 137, 191, 129, 102, 297, 145, 01253 147, 148, 145, 147, 148, 463, 191, 69, 190, 129, 01254 145, 145, 190, 194, 69, 69, 69, 194, 69, 69, 01255 147, 148, 190, 463, 190, 69, 292, 298, 292, 69, 01256 01257 298, 69, 69, 69, 69, 83, 83, 83, 83, 83, 01258 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 01259 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 01260 83, 83, 83, 141, 261, 154, 141, 83, 154, 216, 01261 155, 303, 142, 155, 261, 142, 149, 149, 149, 149, 01262 244, 293, 303, 141, 216, 154, 83, 83, 86, 789, 01263 155, 86, 142, 86, 141, 293, 149, 86, 86, 244, 01264 244, 86, 86, 86, 150, 378, 86, 150, 86, 86, 01265 86, 86, 86, 142, 260, 142, 378, 237, 149, 86, 01266 138, 296, 788, 138, 150, 138, 260, 377, 237, 156, 01267 01268 237, 377, 156, 138, 138, 296, 138, 138, 138, 294, 01269 138, 294, 138, 138, 138, 139, 526, 150, 139, 156, 01270 139, 158, 302, 163, 158, 302, 163, 164, 139, 139, 01271 164, 139, 139, 139, 526, 139, 295, 139, 139, 139, 01272 158, 158, 156, 163, 295, 295, 139, 164, 166, 166, 01273 166, 166, 183, 195, 196, 183, 195, 196, 531, 166, 01274 166, 214, 214, 214, 214, 531, 242, 246, 166, 242, 01275 246, 343, 183, 195, 196, 251, 265, 225, 251, 265, 01276 225, 257, 242, 246, 257, 343, 305, 265, 265, 300, 01277 166, 251, 214, 339, 183, 195, 196, 219, 305, 300, 01278 01279 219, 257, 219, 339, 339, 225, 219, 219, 225, 784, 01280 219, 219, 219, 262, 532, 219, 262, 219, 219, 219, 01281 219, 219, 257, 263, 264, 532, 263, 264, 266, 266, 01282 266, 266, 374, 262, 268, 268, 268, 268, 273, 266, 01283 266, 273, 374, 263, 264, 268, 268, 269, 269, 269, 01284 269, 275, 376, 262, 275, 299, 375, 299, 273, 375, 01285 277, 277, 277, 277, 376, 264, 263, 301, 338, 301, 01286 275, 275, 278, 278, 278, 278, 344, 386, 344, 273, 01287 277, 283, 283, 283, 283, 442, 291, 338, 338, 269, 01288 291, 386, 278, 319, 319, 319, 319, 340, 340, 442, 01289 01290 291, 340, 291, 328, 328, 328, 328, 345, 346, 355, 01291 345, 346, 497, 347, 278, 278, 347, 348, 355, 355, 01292 348, 349, 349, 349, 349, 497, 380, 345, 346, 350, 01293 380, 382, 350, 347, 351, 351, 351, 351, 345, 363, 01294 674, 363, 347, 382, 352, 352, 352, 352, 674, 381, 01295 348, 381, 385, 346, 349, 353, 353, 353, 353, 348, 01296 348, 385, 350, 349, 384, 358, 384, 351, 358, 389, 01297 423, 350, 350, 389, 454, 429, 351, 352, 354, 354, 01298 354, 354, 423, 454, 777, 358, 352, 429, 353, 360, 01299 360, 360, 360, 430, 358, 430, 441, 353, 441, 455, 01300 01301 361, 361, 361, 361, 366, 366, 366, 366, 451, 455, 01302 451, 354, 367, 367, 367, 367, 368, 368, 368, 368, 01303 354, 456, 360, 770, 366, 371, 371, 371, 371, 457, 01304 452, 360, 360, 361, 452, 456, 368, 388, 388, 388, 01305 388, 453, 361, 457, 768, 453, 366, 403, 403, 403, 01306 403, 459, 460, 462, 367, 459, 460, 462, 368, 404, 01307 404, 404, 404, 405, 405, 405, 405, 403, 388, 407, 01308 407, 407, 407, 410, 410, 410, 410, 411, 411, 411, 01309 411, 458, 521, 405, 412, 412, 412, 412, 465, 496, 01310 407, 766, 465, 496, 410, 458, 521, 765, 411, 413, 01311 01312 413, 413, 413, 414, 414, 414, 414, 421, 421, 421, 01313 421, 424, 424, 424, 424, 523, 426, 512, 421, 426, 01314 427, 427, 427, 427, 428, 501, 562, 428, 501, 512, 01315 522, 413, 761, 522, 439, 414, 426, 439, 445, 562, 01316 427, 445, 424, 523, 428, 435, 435, 435, 435, 436, 01317 436, 436, 436, 525, 439, 428, 748, 525, 445, 426, 01318 447, 447, 447, 447, 642, 439, 448, 448, 448, 448, 01319 524, 449, 449, 449, 449, 529, 435, 529, 642, 524, 01320 447, 445, 479, 479, 479, 479, 481, 481, 481, 481, 01321 436, 449, 482, 482, 482, 482, 527, 743, 533, 447, 01322 01323 527, 533, 561, 479, 561, 448, 483, 483, 483, 483, 01324 449, 484, 484, 484, 484, 485, 485, 485, 485, 491, 01325 491, 491, 491, 493, 493, 493, 493, 483, 498, 500, 01326 491, 498, 500, 566, 493, 566, 485, 736, 483, 487, 01327 487, 487, 487, 732, 499, 499, 499, 499, 498, 500, 01328 507, 507, 507, 507, 508, 508, 508, 508, 511, 515, 01329 731, 511, 515, 498, 499, 730, 519, 590, 487, 519, 01330 528, 487, 487, 500, 487, 530, 530, 487, 511, 515, 01331 565, 536, 528, 499, 536, 590, 519, 576, 576, 530, 01332 507, 594, 565, 519, 583, 583, 728, 508, 594, 717, 01333 01334 515, 536, 511, 539, 539, 539, 539, 546, 546, 546, 01335 546, 547, 547, 547, 547, 548, 548, 548, 548, 549, 01336 549, 549, 549, 563, 587, 589, 563, 564, 546, 585, 01337 564, 592, 547, 587, 716, 589, 548, 720, 575, 582, 01338 549, 575, 582, 563, 585, 720, 592, 564, 571, 571, 01339 571, 571, 563, 572, 572, 572, 572, 579, 575, 582, 01340 579, 588, 588, 588, 588, 549, 550, 550, 550, 550, 01341 641, 564, 641, 599, 599, 599, 599, 579, 701, 571, 01342 700, 582, 575, 635, 635, 643, 579, 600, 600, 600, 01343 600, 645, 588, 599, 643, 550, 769, 769, 572, 550, 01344 01345 645, 550, 697, 690, 550, 601, 601, 601, 601, 603, 01346 603, 603, 603, 606, 606, 606, 606, 607, 607, 607, 01347 607, 608, 608, 608, 608, 601, 609, 609, 609, 609, 01348 610, 610, 610, 610, 606, 644, 647, 680, 607, 678, 01349 663, 745, 608, 611, 611, 611, 611, 609, 647, 644, 01350 662, 610, 612, 612, 612, 612, 745, 610, 613, 613, 01351 613, 613, 696, 698, 611, 661, 609, 620, 620, 620, 01352 620, 660, 654, 612, 611, 727, 696, 698, 620, 613, 01353 621, 621, 621, 621, 612, 622, 622, 622, 622, 727, 01354 775, 621, 623, 623, 623, 623, 622, 651, 650, 613, 01355 01356 649, 648, 775, 623, 625, 625, 625, 625, 627, 627, 01357 627, 627, 623, 637, 632, 628, 622, 629, 629, 629, 01358 629, 630, 630, 630, 630, 631, 631, 631, 631, 633, 01359 633, 633, 633, 634, 634, 634, 634, 626, 638, 624, 01360 633, 638, 619, 618, 634, 616, 615, 625, 636, 636, 01361 636, 636, 614, 634, 639, 639, 639, 639, 638, 636, 01362 640, 640, 640, 640, 630, 639, 605, 604, 602, 638, 01363 598, 640, 646, 646, 646, 646, 658, 658, 658, 658, 01364 640, 597, 653, 653, 653, 653, 596, 655, 655, 655, 01365 655, 656, 656, 656, 656, 595, 593, 658, 657, 657, 01366 01367 657, 657, 653, 646, 652, 652, 652, 652, 655, 652, 01368 653, 591, 656, 586, 584, 581, 655, 652, 652, 657, 01369 652, 652, 652, 652, 652, 580, 652, 652, 652, 659, 01370 659, 659, 659, 711, 774, 656, 711, 774, 657, 578, 01371 664, 664, 664, 664, 665, 665, 665, 665, 577, 574, 01372 659, 664, 573, 711, 774, 665, 667, 667, 667, 667, 01373 668, 668, 668, 668, 669, 669, 669, 669, 570, 762, 01374 659, 668, 762, 569, 711, 669, 670, 670, 670, 670, 01375 671, 671, 671, 671, 672, 672, 672, 672, 568, 762, 01376 567, 671, 673, 673, 673, 673, 670, 560, 559, 762, 01377 01378 671, 558, 556, 673, 672, 675, 675, 675, 675, 555, 01379 554, 553, 673, 676, 676, 676, 676, 677, 677, 677, 01380 677, 679, 679, 679, 679, 681, 681, 681, 681, 552, 01381 682, 682, 682, 682, 683, 683, 683, 683, 675, 684, 01382 684, 684, 684, 551, 675, 545, 676, 675, 702, 702, 01383 702, 702, 676, 544, 691, 676, 677, 691, 543, 677, 01384 679, 542, 541, 540, 681, 682, 538, 683, 685, 685, 01385 685, 685, 684, 683, 691, 537, 683, 535, 684, 534, 01386 520, 684, 686, 686, 686, 686, 687, 687, 687, 687, 01387 518, 517, 516, 686, 688, 688, 688, 688, 691, 514, 01388 01389 513, 685, 510, 509, 506, 688, 687, 685, 744, 841, 01390 685, 744, 841, 505, 688, 689, 689, 689, 689, 692, 01391 692, 692, 692, 504, 503, 502, 689, 495, 744, 841, 01392 692, 694, 694, 694, 694, 695, 695, 695, 695, 492, 01393 490, 841, 694, 489, 488, 486, 695, 703, 703, 703, 01394 703, 694, 744, 478, 785, 695, 477, 785, 689, 699, 01395 699, 699, 699, 476, 699, 475, 474, 703, 704, 704, 01396 704, 704, 699, 699, 785, 699, 699, 699, 699, 699, 01397 473, 699, 699, 699, 706, 706, 706, 706, 704, 705, 01398 705, 705, 705, 472, 705, 706, 471, 708, 708, 708, 01399 01400 708, 470, 469, 785, 706, 468, 705, 467, 705, 705, 01401 707, 707, 707, 707, 466, 707, 464, 708, 461, 450, 01402 444, 707, 443, 707, 707, 708, 707, 707, 707, 440, 01403 707, 438, 707, 707, 707, 709, 709, 709, 709, 710, 01404 710, 710, 710, 712, 712, 712, 712, 713, 713, 713, 01405 713, 714, 714, 714, 714, 715, 715, 715, 715, 710, 01406 437, 434, 433, 709, 712, 432, 431, 710, 713, 425, 01407 422, 420, 714, 418, 417, 416, 715, 415, 713, 409, 01408 408, 406, 714, 718, 718, 718, 718, 401, 712, 719, 01409 719, 719, 719, 400, 718, 399, 398, 715, 397, 396, 01410 01411 719, 721, 721, 721, 721, 722, 722, 722, 722, 395, 01412 394, 393, 721, 392, 391, 390, 722, 723, 723, 723, 01413 723, 724, 724, 724, 724, 387, 373, 372, 723, 370, 01414 369, 365, 724, 725, 725, 725, 725, 723, 364, 357, 01415 356, 724, 342, 341, 725, 726, 726, 726, 726, 733, 01416 733, 733, 733, 725, 337, 336, 726, 734, 734, 734, 01417 734, 735, 735, 735, 735, 726, 737, 737, 737, 737, 01418 335, 334, 735, 746, 746, 746, 746, 737, 733, 738, 01419 738, 738, 738, 332, 734, 331, 737, 330, 329, 327, 01420 738, 739, 739, 739, 739, 740, 740, 740, 740, 738, 01421 01422 325, 324, 739, 323, 746, 322, 740, 741, 741, 741, 01423 741, 742, 742, 742, 742, 321, 320, 318, 741, 317, 01424 316, 315, 742, 314, 739, 313, 312, 311, 740, 771, 01425 771, 771, 771, 739, 310, 309, 308, 740, 749, 749, 01426 749, 749, 750, 750, 750, 750, 307, 306, 304, 741, 01427 747, 747, 747, 747, 290, 747, 289, 288, 749, 287, 01428 286, 747, 750, 747, 747, 285, 747, 747, 747, 284, 01429 747, 771, 747, 747, 747, 751, 751, 751, 751, 282, 01430 751, 281, 752, 752, 752, 752, 280, 764, 764, 764, 01431 764, 279, 751, 752, 751, 751, 753, 753, 753, 753, 01432 01433 276, 753, 795, 795, 795, 795, 274, 753, 764, 753, 01434 753, 272, 753, 753, 753, 270, 753, 258, 753, 753, 01435 753, 754, 754, 754, 754, 755, 755, 755, 755, 255, 01436 764, 252, 754, 247, 243, 240, 755, 756, 756, 756, 01437 756, 754, 758, 758, 758, 758, 239, 236, 756, 759, 01438 759, 759, 759, 758, 233, 232, 231, 756, 227, 226, 01439 759, 224, 758, 223, 763, 763, 763, 763, 221, 759, 01440 760, 760, 760, 760, 218, 760, 802, 802, 802, 802, 01441 217, 760, 215, 760, 760, 763, 760, 760, 760, 213, 01442 760, 212, 760, 760, 760, 767, 767, 767, 767, 763, 01443 01444 772, 772, 772, 772, 211, 210, 767, 780, 780, 780, 01445 780, 772, 209, 208, 207, 767, 206, 205, 780, 204, 01446 772, 776, 776, 776, 776, 203, 776, 800, 800, 800, 01447 800, 202, 776, 199, 776, 776, 198, 776, 776, 776, 01448 197, 776, 185, 776, 776, 776, 779, 182, 800, 779, 01449 181, 779, 180, 179, 781, 781, 781, 781, 178, 779, 01450 779, 177, 779, 779, 779, 781, 779, 800, 779, 779, 01451 779, 175, 174, 173, 781, 782, 782, 782, 782, 172, 01452 171, 786, 786, 786, 786, 170, 782, 169, 168, 167, 01453 787, 787, 787, 787, 162, 782, 783, 783, 783, 783, 01454 01455 161, 783, 786, 809, 809, 809, 809, 783, 159, 783, 01456 783, 787, 783, 783, 783, 152, 783, 787, 783, 783, 01457 783, 144, 786, 790, 790, 790, 790, 791, 791, 791, 01458 791, 143, 135, 134, 790, 132, 130, 128, 791, 792, 01459 792, 792, 792, 793, 793, 793, 793, 120, 114, 110, 01460 792, 109, 106, 98, 793, 95, 93, 801, 801, 801, 01461 801, 804, 804, 804, 804, 91, 808, 808, 808, 808, 01462 791, 797, 804, 89, 797, 88, 797, 808, 801, 806, 01463 806, 806, 806, 87, 797, 797, 82, 797, 797, 797, 01464 806, 797, 81, 797, 797, 797, 799, 799, 799, 799, 01465 01466 80, 799, 801, 807, 807, 807, 807, 79, 808, 68, 01467 66, 65, 806, 799, 807, 799, 799, 810, 810, 810, 01468 810, 806, 811, 811, 811, 811, 64, 63, 810, 812, 01469 812, 812, 812, 811, 62, 59, 807, 57, 56, 42, 01470 812, 813, 813, 813, 813, 807, 814, 814, 814, 814, 01471 39, 32, 813, 31, 27, 811, 815, 815, 815, 815, 01472 0, 0, 812, 0, 811, 816, 816, 816, 816, 0, 01473 0, 812, 818, 818, 818, 818, 815, 814, 0, 0, 01474 813, 819, 819, 819, 819, 816, 817, 817, 817, 817, 01475 0, 817, 820, 820, 820, 820, 824, 824, 824, 824, 01476 01477 0, 819, 0, 817, 0, 817, 817, 821, 821, 821, 01478 821, 0, 821, 826, 826, 826, 826, 824, 825, 825, 01479 825, 825, 0, 0, 821, 0, 821, 821, 823, 0, 01480 0, 823, 0, 823, 827, 827, 827, 827, 0, 825, 01481 0, 823, 823, 0, 823, 823, 823, 0, 823, 825, 01482 823, 823, 823, 828, 828, 828, 828, 0, 828, 831, 01483 831, 831, 831, 0, 0, 0, 828, 828, 0, 828, 01484 828, 828, 0, 828, 0, 828, 828, 828, 830, 0, 01485 831, 830, 0, 830, 832, 832, 832, 832, 0, 0, 01486 0, 830, 830, 0, 830, 830, 830, 0, 830, 0, 01487 01488 830, 830, 830, 0, 0, 832, 833, 833, 833, 833, 01489 834, 834, 834, 834, 835, 835, 835, 835, 836, 836, 01490 836, 836, 838, 838, 838, 838, 0, 839, 839, 839, 01491 839, 0, 0, 0, 835, 0, 0, 0, 836, 842, 01492 842, 842, 842, 838, 0, 0, 0, 833, 839, 843, 01493 843, 843, 843, 0, 0, 835, 0, 0, 0, 836, 01494 837, 837, 837, 837, 0, 837, 0, 0, 0, 843, 01495 0, 0, 0, 837, 837, 0, 837, 837, 837, 0, 01496 837, 0, 837, 837, 837, 844, 844, 844, 844, 845, 01497 845, 845, 845, 0, 0, 0, 0, 0, 0, 0, 01498 01499 0, 0, 0, 0, 0, 0, 0, 0, 0, 845, 01500 846, 846, 846, 846, 0, 846, 0, 0, 0, 0, 01501 0, 0, 0, 0, 0, 0, 0, 846, 0, 846, 01502 846, 848, 0, 0, 848, 0, 848, 0, 0, 0, 01503 0, 0, 0, 0, 848, 848, 0, 848, 848, 848, 01504 0, 848, 0, 848, 848, 848, 850, 0, 0, 850, 01505 0, 850, 0, 0, 0, 0, 0, 0, 0, 850, 01506 850, 0, 850, 850, 850, 0, 850, 0, 850, 850, 01507 850, 852, 852, 852, 852, 852, 852, 852, 852, 852, 01508 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 01509 01510 852, 852, 852, 853, 853, 853, 853, 853, 853, 853, 01511 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 01512 853, 853, 853, 853, 853, 854, 854, 854, 854, 854, 01513 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 01514 854, 854, 854, 854, 854, 854, 854, 855, 855, 855, 01515 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 01516 855, 855, 855, 855, 855, 855, 855, 855, 855, 856, 01517 856, 856, 856, 856, 0, 0, 0, 0, 0, 0, 01518 856, 856, 856, 0, 0, 856, 856, 856, 856, 856, 01519 857, 857, 857, 857, 857, 0, 0, 0, 0, 0, 01520 01521 0, 0, 0, 0, 0, 0, 857, 857, 857, 857, 01522 857, 858, 0, 0, 858, 858, 0, 0, 0, 858, 01523 858, 0, 858, 0, 858, 858, 0, 858, 858, 858, 01524 858, 858, 859, 859, 859, 859, 859, 860, 0, 0, 01525 860, 0, 0, 0, 0, 0, 0, 0, 0, 860, 01526 860, 860, 0, 860, 860, 860, 860, 860, 861, 0, 01527 0, 861, 861, 0, 0, 0, 861, 861, 0, 861, 01528 861, 861, 861, 0, 861, 861, 861, 861, 861, 862, 01529 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 01530 862, 862, 862, 862, 862, 862, 862, 0, 862, 863, 01531 01532 0, 0, 863, 863, 863, 0, 0, 863, 863, 863, 01533 0, 0, 863, 863, 863, 863, 863, 863, 863, 863, 01534 864, 0, 0, 864, 864, 864, 0, 0, 864, 864, 01535 864, 0, 0, 0, 864, 864, 0, 0, 864, 865, 01536 0, 0, 0, 0, 0, 0, 0, 0, 865, 0, 01537 0, 865, 865, 865, 865, 865, 866, 0, 0, 0, 01538 0, 0, 0, 0, 0, 0, 866, 0, 0, 866, 01539 866, 866, 866, 866, 867, 0, 0, 867, 867, 867, 01540 0, 0, 867, 867, 867, 867, 0, 0, 867, 867, 01541 0, 0, 0, 867, 868, 0, 0, 868, 868, 868, 01542 01543 868, 868, 869, 869, 869, 869, 869, 869, 869, 869, 01544 869, 869, 869, 869, 869, 869, 869, 0, 0, 869, 01545 869, 869, 869, 869, 870, 870, 870, 870, 870, 870, 01546 870, 0, 0, 870, 870, 870, 870, 870, 870, 870, 01547 870, 870, 870, 870, 870, 870, 871, 0, 0, 0, 01548 871, 871, 0, 871, 0, 871, 0, 0, 871, 871, 01549 871, 871, 871, 872, 872, 0, 872, 872, 872, 872, 01550 0, 0, 872, 872, 0, 872, 872, 872, 872, 872, 01551 872, 872, 872, 872, 872, 873, 873, 0, 873, 873, 01552 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 01553 01554 873, 873, 873, 873, 873, 873, 873, 874, 0, 0, 01555 874, 874, 0, 0, 0, 874, 874, 0, 874, 874, 01556 874, 874, 0, 874, 874, 874, 874, 874, 875, 0, 01557 0, 875, 0, 0, 875, 875, 0, 0, 0, 0, 01558 875, 875, 0, 0, 875, 875, 875, 875, 875, 876, 01559 0, 0, 876, 876, 876, 876, 876, 877, 0, 0, 01560 877, 877, 0, 0, 877, 877, 877, 878, 878, 0, 01561 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 01562 878, 878, 878, 878, 878, 878, 878, 878, 878, 879, 01563 879, 0, 879, 879, 879, 879, 879, 879, 879, 879, 01564 01565 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 01566 879, 880, 0, 0, 880, 880, 0, 0, 880, 880, 01567 880, 881, 881, 881, 881, 881, 881, 881, 881, 881, 01568 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 01569 881, 881, 881, 882, 882, 882, 882, 882, 882, 882, 01570 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 01571 882, 882, 882, 882, 882, 883, 883, 0, 883, 883, 01572 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 01573 883, 883, 883, 883, 883, 883, 883, 884, 884, 884, 01574 884, 0, 0, 884, 884, 0, 0, 0, 0, 884, 01575 01576 884, 0, 0, 884, 884, 884, 884, 884, 885, 885, 01577 885, 885, 885, 0, 0, 0, 0, 0, 0, 0, 01578 0, 0, 0, 885, 885, 885, 885, 885, 885, 886, 01579 886, 886, 886, 886, 0, 0, 0, 886, 886, 0, 01580 886, 0, 886, 0, 886, 886, 886, 886, 886, 886, 01581 887, 887, 887, 887, 887, 0, 0, 0, 887, 887, 01582 0, 887, 887, 887, 887, 0, 887, 887, 887, 887, 01583 887, 888, 888, 888, 888, 888, 0, 0, 0, 888, 01584 888, 0, 888, 888, 888, 888, 0, 888, 888, 888, 01585 888, 888, 889, 889, 889, 889, 889, 0, 0, 0, 01586 01587 0, 0, 0, 0, 0, 0, 889, 0, 889, 889, 01588 889, 889, 889, 890, 890, 890, 890, 890, 0, 0, 01589 0, 0, 0, 0, 0, 890, 890, 890, 0, 890, 01590 890, 890, 890, 890, 891, 891, 891, 891, 891, 0, 01591 891, 0, 891, 891, 0, 891, 0, 891, 891, 0, 01592 891, 891, 891, 891, 891, 892, 892, 892, 892, 892, 01593 0, 892, 0, 892, 892, 0, 892, 892, 892, 892, 01594 0, 892, 892, 892, 892, 892, 893, 893, 893, 893, 01595 893, 0, 893, 0, 893, 893, 0, 893, 893, 893, 01596 893, 0, 893, 893, 893, 893, 893, 894, 894, 894, 01597 01598 894, 894, 0, 0, 0, 0, 0, 0, 0, 0, 01599 0, 894, 0, 894, 894, 894, 894, 894, 895, 895, 01600 895, 895, 895, 0, 0, 0, 0, 0, 0, 0, 01601 895, 895, 895, 0, 895, 895, 895, 895, 895, 896, 01602 896, 896, 896, 896, 0, 896, 0, 896, 896, 0, 01603 896, 0, 896, 0, 0, 896, 896, 896, 896, 896, 01604 897, 897, 897, 897, 897, 0, 897, 0, 897, 897, 01605 0, 897, 897, 897, 897, 0, 897, 897, 897, 897, 01606 897, 898, 0, 0, 0, 898, 898, 0, 898, 0, 01607 898, 0, 0, 898, 898, 898, 898, 898, 899, 0, 01608 01609 0, 899, 899, 0, 0, 0, 899, 899, 0, 899, 01610 899, 899, 899, 0, 899, 899, 899, 899, 899, 900, 01611 900, 900, 900, 900, 0, 0, 0, 0, 0, 0, 01612 0, 900, 900, 900, 0, 900, 900, 900, 900, 900, 01613 901, 901, 901, 901, 901, 0, 0, 0, 0, 0, 01614 0, 0, 0, 0, 901, 0, 901, 901, 901, 901, 01615 901, 902, 902, 902, 902, 902, 0, 0, 0, 0, 01616 0, 0, 0, 902, 902, 902, 0, 902, 902, 902, 01617 902, 902, 903, 903, 903, 903, 903, 0, 0, 0, 01618 0, 0, 0, 0, 0, 0, 0, 0, 903, 903, 01619 01620 903, 903, 903, 904, 0, 0, 0, 904, 904, 0, 01621 904, 0, 904, 0, 0, 904, 904, 904, 904, 904, 01622 905, 0, 0, 905, 905, 0, 0, 0, 905, 905, 01623 0, 905, 905, 905, 905, 0, 905, 905, 905, 905, 01624 905, 906, 906, 906, 906, 906, 0, 0, 0, 0, 01625 0, 0, 0, 0, 0, 0, 0, 906, 906, 906, 01626 906, 906, 907, 907, 907, 907, 907, 0, 0, 0, 01627 907, 907, 0, 907, 0, 907, 0, 0, 907, 907, 01628 907, 907, 907, 908, 908, 908, 908, 908, 0, 0, 01629 0, 908, 908, 0, 908, 908, 908, 908, 0, 908, 01630 01631 908, 908, 908, 908, 909, 909, 909, 909, 909, 0, 01632 0, 0, 909, 909, 0, 909, 0, 909, 0, 909, 01633 909, 909, 909, 909, 909, 910, 910, 910, 910, 910, 01634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01635 0, 910, 910, 910, 910, 910, 911, 911, 911, 911, 01636 911, 0, 0, 0, 0, 0, 0, 0, 911, 911, 01637 911, 0, 911, 911, 911, 911, 911, 912, 0, 0, 01638 0, 912, 912, 0, 912, 0, 912, 0, 0, 912, 01639 912, 912, 912, 912, 913, 0, 0, 913, 913, 0, 01640 0, 0, 913, 913, 0, 913, 913, 913, 913, 0, 01641 01642 913, 913, 913, 913, 913, 851, 851, 851, 851, 851, 01643 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01644 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01645 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01646 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 01647 851, 851, 851, 851, 851, 851, 851, 851, 851 01648 } ; 01649 01650 static yy_state_type yy_last_accepting_state; 01651 static char *yy_last_accepting_cpos; 01652 01653 extern int vhdlcodeYY_flex_debug; 01654 int vhdlcodeYY_flex_debug = 0; 01655 01656 /* The intent behind this definition is that it'll catch 01657 * any uses of REJECT which flex missed. 01658 */ 01659 #define REJECT reject_used_but_not_detected 01660 #define yymore() yymore_used_but_not_detected 01661 #define YY_MORE_ADJ 0 01662 #define YY_RESTORE_YY_MORE_OFFSET 01663 char *vhdlcodeYYtext; 01664 #line 1 "vhdlcode.l" 01665 /****************************************************************************** 01666 * 01667 * Copyright (C) 1997-2008 by Dimitri van Heesch. 01668 * 01669 * Permission to use, copy, modify, and distribute this software and its 01670 * documentation under the terms of the GNU General Public License is hereby 01671 * granted. No representations are made about the suitability of this software 01672 * for any purpose. It is provided "as is" without express or implied warranty. 01673 * See the GNU General Public License for more details. 01674 * 01675 * Documents produced by Doxygen are derivative works derived from the 01676 * input used in their production; they are not affected by this license. 01677 * 01678 */ 01679 /****************************************************************************** 01680 * Parser for syntax hightlighting and references for vhdl subset 01681 * written by M. Kreis 01682 * supports VHDL-87 01683 * does not support all keywords of VHDL '93 (impure function/shared variables grouping ..) 01684 * and VHDL-AMS 01685 ******************************************************************************/ 01686 #line 24 "vhdlcode.l" 01687 01688 /* 01689 * includes 01690 */ 01691 #include <stdio.h> 01692 #include <assert.h> 01693 #include <ctype.h> 01694 #include <qregexp.h> 01695 #include <qdir.h> 01696 #include <qstringlist.h> 01697 01698 #include "qtbc.h" 01699 #include "entry.h" 01700 #include "doxygen.h" 01701 #include "message.h" 01702 #include "outputlist.h" 01703 #include "util.h" 01704 #include "membername.h" 01705 #include "searchindex.h" 01706 #include "vhdldocgen.h" 01707 01708 #define YY_NEVER_INTERACTIVE 1 01709 01710 // Toggle for some debugging info 01711 //#define DBG_CTX(x) fprintf x 01712 #define DBG_CTX(x) do { } while(0) 01713 01714 01715 /* ----------------------------------------------------------------- 01716 * statics 01717 */ 01718 01719 // ----------------- <vhdl> ---------------------------------- 01720 01721 //static bool isPackBody=FALSE; 01722 static bool isFuncProto=FALSE; 01723 static bool isComponent=FALSE; 01724 static bool isPackageBody=FALSE; 01725 static bool isStartMap; 01726 static bool isProto = FALSE; 01727 static bool isStripCode = FALSE; 01728 01729 static QCString g_PrevString; 01730 static QCString g_CurrClass; 01731 static QDict<QCString>g_vhdlKeyDict; 01732 static QCString g_tempClass; 01733 static QCString g_tempComp; 01734 static QCString g_PortMapComp; 01735 static MemberDef *g_vhdlMember; 01736 static QCString g_FuncProto; 01737 01738 //----------------------------------------------------------- 01739 01740 static CodeOutputInterface * g_code; 01741 static QCString g_curClassName; 01742 static QCString g_parmType; 01743 static QCString g_parmName; 01744 static const char * g_inputString; 01745 static int g_inputPosition; 01746 static int g_inputLines; 01747 static int g_yyLineNr; 01748 static bool g_needsTermination; 01749 01750 static QCString g_exampleName; 01751 static QCString g_exampleFile; 01752 01753 static QCString g_type; 01754 static QCString g_name; 01755 static QCString g_args; 01756 static QCString g_classScope; 01757 01758 static QCString g_CurrScope; 01759 01760 static FileDef * g_sourceFileDef; 01761 static Definition * g_currentDefinition; 01762 static MemberDef * g_currentMemberDef; 01763 static bool g_includeCodeFragment; 01764 static const char * g_currentFontClass; 01765 01766 static bool g_lexInit = FALSE; 01767 static int g_braceCount=0; 01768 01769 01770 static void writeFont(const char *s,const char* text); 01771 static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& memberName); 01772 static bool writeColoredWord(QCString& word ); 01773 static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool typeOnly=FALSE); 01774 static void endFontClass(); 01775 01776 //------------------------------------------------------------------- 01777 01778 01779 static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") 01780 { 01781 static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); 01782 if (searchEngineEnabled) 01783 { 01784 Doxygen::searchIndex->setCurrentDoc(name,base,anchor); 01785 } 01786 } 01787 01788 01789 static void addToSearchIndex(const char *text) 01790 { 01791 static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); 01792 if (searchEngineEnabled) 01793 { 01794 Doxygen::searchIndex->addWord(text,FALSE); 01795 } 01796 } 01797 01798 01803 static void startCodeLine() 01804 { 01805 //if (g_currentFontClass) { g_code->endFontClass(); } 01806 if (g_sourceFileDef) 01807 { 01808 //QCString lineNumber,lineAnchor; 01809 //lineNumber.sprintf("%05d",g_yyLineNr); 01810 //lineAnchor.sprintf("l%05d",g_yyLineNr); 01811 // if ((g_yyLineNr % 500) == 0) 01812 // fprintf(stderr,"\n starting Line %d:",g_yyLineNr); 01813 Definition *d = g_sourceFileDef->getSourceDefinition(g_yyLineNr); 01814 //printf("startCodeLine %d d=%s\n", g_yyLineNr,d ? d->name().data() : "<null>"); 01815 if (!g_includeCodeFragment && d) 01816 { 01817 g_currentDefinition = d; 01818 g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr); 01819 if (!g_tempComp.isEmpty() && g_currentMemberDef ) 01820 { 01821 //ClassDef *cf=VhdlDocGen::getClass(g_tempComp.data()); 01822 QCString nn=g_currentMemberDef->name(); 01823 MemberDef* mdeff=VhdlDocGen::findMember(g_tempComp,nn); 01824 if (mdeff) 01825 { 01826 g_currentMemberDef=mdeff; 01827 } 01828 } 01829 01830 g_parmType.resize(0); 01831 g_parmName.resize(0); 01832 QCString lineAnchor; 01833 lineAnchor.sprintf("l%05d",g_yyLineNr); 01834 if (g_currentMemberDef) 01835 { 01836 g_code->writeLineNumber(g_currentMemberDef->getReference(), 01837 g_currentMemberDef->getOutputFileBase(), 01838 g_currentMemberDef->anchor(),g_yyLineNr); 01839 setCurrentDoc(g_currentMemberDef->qualifiedName(), 01840 g_sourceFileDef->getSourceFileBase(), 01841 lineAnchor); 01842 } 01843 else if (d->isLinkableInProject()) 01844 { 01845 g_code->writeLineNumber(d->getReference(), 01846 d->getOutputFileBase(), 01847 0,g_yyLineNr); 01848 setCurrentDoc(d->qualifiedName(), 01849 g_sourceFileDef->getSourceFileBase(), 01850 lineAnchor); 01851 } 01852 } 01853 else 01854 { 01855 g_code->writeLineNumber(0,0,0,g_yyLineNr); 01856 } 01857 } 01858 g_code->startCodeLine(); 01859 if (g_currentFontClass) 01860 { 01861 g_code->startFontClass(g_currentFontClass); 01862 } 01863 } 01864 01865 static void endCodeLine() 01866 { 01867 if (g_currentFontClass) { g_code->endFontClass(); } 01868 g_code->endCodeLine(); 01869 } 01870 01876 static void writeWord(const char *word,const char* curr_class=0,bool classLink=FALSE) 01877 { 01878 bool found=FALSE; 01879 QCString temp; 01880 QCString tclass(curr_class); 01881 QCString ttt(word); 01882 if (ttt.isEmpty()) return; 01883 for (unsigned int j=0;j<ttt.length();j++) 01884 { 01885 char c=ttt.at(j); 01886 if (c==' '|| c==',' || c==';' || c==':' || c=='(' || c==')' || c=='\r' || c=='\t') 01887 { 01888 if (found) 01889 { 01890 if (!writeColoredWord(temp)) // is it a keyword ? 01891 { 01892 //if (VhdlDocGen::findKeyWord(temp)) 01893 // writeFont("vhdlkeyword",temp.data()); 01894 //printf("writeWord: %s\n",temp.data()); 01895 if (!tclass.isEmpty()) 01896 { 01897 if (!classLink) 01898 { 01899 generateMemLink(*g_code,tclass,temp); 01900 } 01901 else 01902 { 01903 generateClassOrGlobalLink(*g_code,temp); 01904 } 01905 } 01906 else 01907 { 01908 g_code->codify(temp.data()); 01909 } 01910 } 01911 temp.resize(0); 01912 found=FALSE; 01913 } 01914 01915 char cc[2]; 01916 cc[0]=c; 01917 cc[1]=0; 01918 g_code->codify(cc); 01919 } 01920 else 01921 { 01922 found=TRUE; 01923 temp+=c; 01924 } 01925 } // for 01926 01927 if (!temp.isEmpty()) 01928 { 01929 if (!writeColoredWord(temp)) 01930 { 01931 if (!tclass.isEmpty()) 01932 { 01933 if (!classLink) 01934 { 01935 generateMemLink(*g_code,tclass,temp); // generateMemLink(*g_code,g_CurrClass,left); 01936 } 01937 else 01938 { 01939 generateClassOrGlobalLink(*g_code,temp); 01940 } 01941 } 01942 else 01943 { 01944 g_code->codify(temp.data()); 01945 } 01946 } 01947 } 01948 }// writeWord 01949 01950 01954 static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE) 01955 { 01956 // printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); 01957 const char *p=text,*sp=p; 01958 char c; 01959 bool done=FALSE; 01960 while (!done) 01961 { 01962 sp=p; 01963 while ((c=*p++) && c!='\n'); 01964 if (c=='\n') 01965 { 01966 g_yyLineNr++; 01967 QCString line = sp; 01968 line = line.left(p-sp-1); 01969 //*(p-1)='\0'; 01970 //g_code->codify(sp); 01971 writeWord(line,cl,classlink); 01972 endCodeLine(); 01973 if (g_yyLineNr<g_inputLines) 01974 { 01975 startCodeLine(); 01976 } 01977 } 01978 else 01979 { 01980 //g_code->codify(sp); 01981 writeWord(sp,cl,classlink); 01982 done=TRUE; 01983 } 01984 } 01985 } 01986 01991 static void writeMultiLineCodeLink(CodeOutputInterface &ol, 01992 const char *ref,const char *file, 01993 const char *anchor,const char *text, 01994 const char *tooltip) 01995 { 01996 bool done=FALSE; 01997 char *p=(char *)text; 01998 while (!done) 01999 { 02000 char *sp=p; 02001 char c; 02002 while ((c=*p++) && c!='\n'); 02003 if (c=='\n') 02004 { 02005 g_yyLineNr++; 02006 *(p-1)='\0'; 02007 // printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp); 02008 ol.writeCodeLink(ref,file,anchor,sp,tooltip); 02009 endCodeLine(); 02010 if (g_yyLineNr<g_inputLines) 02011 { 02012 startCodeLine(); 02013 } 02014 } 02015 else 02016 { 02017 ol.writeCodeLink(ref,file,anchor,sp,tooltip); 02018 done=TRUE; 02019 } 02020 } 02021 } 02022 02023 static void setParameterList(MemberDef *md) 02024 { 02025 g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : ""; 02026 LockingPtr<ArgumentList> al = md->argumentList(); 02027 if (al==0) return; 02028 Argument *a = al->first(); 02029 while (a) 02030 { 02031 g_parmName = a->name.copy(); 02032 g_parmType = a->type.copy(); 02033 int i = g_parmType.find('*'); 02034 if (i!=-1) g_parmType = g_parmType.left(i); 02035 i = g_parmType.find('&'); 02036 if (i!=-1) g_parmType = g_parmType.left(i); 02037 g_parmType.stripPrefix("const "); 02038 g_parmType=g_parmType.stripWhiteSpace(); 02039 // g_theVarContext.addVariable(g_parmType,g_parmName); 02040 a = al->next(); 02041 } 02042 } 02043 02044 02048 static void generateFuncLink(CodeOutputInterface &ol,MemberDef* mdef) 02049 { 02050 02051 //printf("generateFuncLink(FuncName=%s)\n",mdef->name().data()); 02052 QCString memberName=mdef->name(); 02053 02054 if (mdef && mdef->isLinkable()) // is it a linkable class 02055 { 02056 writeMultiLineCodeLink(ol,mdef->getReference(), 02057 mdef->getOutputFileBase(), 02058 mdef->anchor(), 02059 mdef->name(), 02060 mdef->briefDescriptionAsTooltip()); 02061 addToSearchIndex(memberName); 02062 return; 02063 } 02064 ol.linkableSymbol(g_yyLineNr,memberName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition); 02065 codifyLines(memberName.data()); 02066 addToSearchIndex(memberName); 02067 } // generateFuncLink 02068 02069 02070 static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& memberName) 02071 { 02072 if (clName.isEmpty() || memberName.isEmpty()) return; 02073 QCString className=clName; 02074 02075 MemberDef *md=0; 02076 //MemberDef *comp=0; 02077 //bool isLocal=FALSE; 02078 02079 md=VhdlDocGen::findMember(className,memberName); 02080 ClassDef *po=VhdlDocGen::getClass(className.data()); 02081 02082 if (md==0 && po && (VhdlDocGen::VhdlClasses)po->protection()==VhdlDocGen::PACKBODYCLASS) 02083 { 02084 QCString temp=className;//.stripPrefix("_"); 02085 temp.stripPrefix("_"); 02086 md=VhdlDocGen::findMember(temp,memberName); 02087 } 02088 02089 if (md && md->isLinkable()) // is it a linkable class 02090 { 02091 writeMultiLineCodeLink(ol,md->getReference(), 02092 md->getOutputFileBase(), 02093 md->anchor(), 02094 memberName, 02095 md->briefDescriptionAsTooltip()); 02096 addToSearchIndex(memberName); 02097 return; 02098 } 02099 // nothing found, just write out the word 02100 ol.linkableSymbol(g_yyLineNr,memberName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition); 02101 codifyLines(memberName.data()); 02102 addToSearchIndex(memberName); 02103 }// generateMemLink 02104 02105 02106 static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool /*typeOnly*/) 02107 { 02108 QCString className=clName; 02109 02110 if (className.isEmpty()) return; 02111 02112 ClassDef *cd=0; 02113 //MemberDef *md=0; 02114 //bool isLocal=FALSE; 02115 className.stripPrefix("_"); 02116 cd = getClass(className.data()); 02117 while (cd) 02118 { 02119 //className.stripPrefix("_"); 02120 QCString temp(clName); 02121 temp.stripPrefix("_"); 02122 if (cd && cd->isLinkable()) // is it a linkable class 02123 { 02124 //if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ARCHITECTURECLASS) 02125 //{ 02126 // temp=VhdlDocGen::getClassName(cd); 02127 //} 02128 ol.linkableSymbol(g_yyLineNr,temp,cd, 02129 g_currentMemberDef ? 02130 g_currentMemberDef : 02131 g_currentDefinition); 02132 writeMultiLineCodeLink(ol,cd->getReference(), 02133 cd->getOutputFileBase(), 02134 0, 02135 temp, 02136 cd->briefDescriptionAsTooltip()); 02137 addToSearchIndex(className); 02138 return; 02139 } 02140 Definition *d = cd->getOuterScope(); 02141 if (d && d->definitionType()==Definition::TypeClass) 02142 { 02143 cd = (ClassDef*)d; 02144 } 02145 else 02146 { 02147 cd = 0; 02148 } 02149 } 02150 02151 // nothing found, just write out the word 02152 ol.linkableSymbol(g_yyLineNr,clName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition); 02153 codifyLines(clName); 02154 addToSearchIndex(clName); 02155 }// generateClasss or global link 02156 02157 02159 static int countLines() 02160 { 02161 const char *p=g_inputString; 02162 char c; 02163 int count=1; 02164 while ((c=*p)) 02165 { 02166 p++ ; 02167 if (c=='\n') count++; 02168 } 02169 if (p>g_inputString && *(p-1)!='\n') 02170 { // last line does not end with a \n, so we add an extra 02171 // line and explicitly terminate the line after parsing. 02172 count++, 02173 g_needsTermination=TRUE; 02174 } 02175 return count; 02176 } 02177 02178 static void endFontClass() 02179 { 02180 if (g_currentFontClass) 02181 { 02182 g_code->endFontClass(); 02183 g_currentFontClass=0; 02184 } 02185 } 02186 02187 static void startFontClass(const char *s) 02188 { 02189 if (s==0) return; 02190 endFontClass(); 02191 g_code->startFontClass(s); 02192 g_currentFontClass=s; 02193 } 02194 02195 static void writeFont(const char *s,const char* text) 02196 { 02197 if (s==0) return; 02198 g_code->startFontClass(s); 02199 g_code->codify(text); 02200 g_code->endFontClass(); 02201 } 02202 02203 //---------------------------------------------------------------------------- 02204 02205 static void appStringLower(QCString& qcs,const char* text) 02206 { 02207 qcs.resize(0); 02208 qcs.append(text); 02209 //qcs=qcs.lower(); 02210 qcs=qcs.stripWhiteSpace(); 02211 } 02212 02213 //static void appString(QCString& qcs,const char* text) 02214 //{ 02215 // qcs.resize(0); 02216 // qcs.append(text); 02217 //} 02218 02219 static QCString g_temp; 02220 02221 /* writes and links a port map statement */ 02222 static void codifyMapLines(char *text) 02223 { 02224 g_temp.resize(0); 02225 bool dot=FALSE; 02226 //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); 02227 char *p=text,*sp=p; 02228 char c; 02229 bool done=FALSE; 02230 while (!done) 02231 { 02232 sp=p; 02233 while ((c=*p++) && c!='\n' && c!=':' && c != ' ' && c != '(') 02234 { 02235 g_temp+=c; 02236 } 02237 //printf("--> g_temp='%s'\n",g_temp.data()); 02238 if (c=='\n') 02239 { 02240 g_yyLineNr++; 02241 *(p-1)='\0'; 02242 //if (dot==TRUE) 02243 //{ 02244 QCString tt=g_temp; 02245 tt=tt.lower(); 02246 tt=tt.stripWhiteSpace(); 02247 QCString *ss; 02248 if ((ss=VhdlDocGen::findKeyWord(tt))) 02249 { 02250 writeFont(ss->data(),g_temp); 02251 } 02252 else 02253 { 02254 generateClassOrGlobalLink(*g_code,sp); 02255 g_PortMapComp=tt; 02256 } 02257 dot=FALSE; 02258 g_temp.resize(0); 02259 //} 02260 //else 02261 //{ 02262 // g_code->codify(g_temp); 02263 // g_temp.resize(0); 02264 //} 02265 endCodeLine(); 02266 if (g_yyLineNr<g_inputLines) 02267 { 02268 startCodeLine(); 02269 } 02270 } 02271 else 02272 { 02273 if (c==':') 02274 { 02275 dot = TRUE; 02276 g_code->codify(g_temp); 02277 g_code->codify(":"); 02278 g_temp.resize(0); 02279 } 02280 02281 if (c==' ' && !g_temp.isEmpty()) 02282 { 02283 //if (dot==TRUE) 02284 //{ 02285 QCString tt=g_temp; 02286 tt=tt.lower(); 02287 02288 QCString *ss; 02289 if ((ss=VhdlDocGen::findKeyWord(tt))) 02290 { 02291 writeFont(ss->data(),g_temp); 02292 } 02293 else 02294 { 02295 g_PortMapComp=tt; 02296 generateClassOrGlobalLink(*g_code,g_temp); 02297 } 02298 dot=FALSE; 02299 g_temp.resize(0); 02300 g_temp+=c; 02301 //} 02302 //else 02303 //{ 02304 // g_temp+=c; 02305 // g_code->codify(g_temp.data()); 02306 // g_temp.resize(0); 02307 //} 02308 02309 } 02310 else if (!g_temp.isEmpty()) 02311 { 02312 if (c!='(' && c!=' ') 02313 { 02314 g_temp+=c; 02315 } 02316 QCString *ss; 02317 if ((ss=VhdlDocGen::findKeyWord(g_temp.lower().stripWhiteSpace()))) 02318 { 02319 writeFont(ss->data(),g_temp); 02320 } 02321 else 02322 { 02323 g_code->codify(g_temp); 02324 } 02325 g_temp.resize(0); 02326 } 02327 else 02328 { 02329 g_code->codify(" "); 02330 } 02331 if (c=='(') 02332 { 02333 g_code->codify("("); 02334 done=TRUE; 02335 } 02336 } 02337 }//while 02338 }//codifymaplines 02339 02340 /* 02341 * writes a function|procedure prototype and links the function|procedure name 02342 */ 02343 02344 static void writeFuncProto() 02345 { 02346 QList<Argument> ql; 02347 QCString name,ret; 02348 VhdlDocGen::parseFuncProto(g_FuncProto.data(),ql,name,ret,FALSE); 02349 02350 QStringList qlist=QStringList::split(name.data(),g_FuncProto,FALSE); 02351 QCString temp=(QCString)qlist[0]; 02352 codifyLines(temp.data()); 02353 g_FuncProto.stripPrefix(temp.data()); 02354 temp.resize(0); 02355 temp=g_CurrClass; 02356 if (isPackageBody) 02357 { 02358 temp.stripPrefix("_"); 02359 } 02360 MemberDef *mdef=VhdlDocGen::findFunction(ql,name,temp,FALSE); 02361 02362 if (mdef) 02363 { 02364 generateFuncLink(*g_code,mdef); 02365 g_FuncProto.stripPrefix(name.data()); 02366 codifyLines(g_FuncProto.data()); 02367 } 02368 else 02369 { 02370 codifyLines(g_FuncProto.data()); 02371 } 02372 }// writeFuncProto 02373 02374 /* writes a process prototype to the ouput */ 02375 02376 static void writeProcessProto(){ 02377 codifyLines(g_FuncProto.data(),g_CurrClass.data()); 02378 g_vhdlKeyDict.clear(); 02379 }// writeProcessProto 02380 02381 /* writes a keyword */ 02382 02383 static bool writeColoredWord(QCString& word ) 02384 { 02385 QCString qcs=word.lower(); 02386 QCString *ss=VhdlDocGen::findKeyWord(qcs); 02387 if (ss) 02388 { 02389 writeFont(ss->data(),word.data()); 02390 return TRUE; 02391 } 02392 return FALSE; 02393 } 02394 02395 #undef YY_INPUT 02396 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); 02397 02398 static int yyread(char *buf,int max_size) 02399 { 02400 int c=0; 02401 while( c < max_size && g_inputString[g_inputPosition] ) 02402 { 02403 *buf = g_inputString[g_inputPosition++] ; 02404 c++; buf++; 02405 } 02406 return c; 02407 } 02408 02409 02410 02411 02412 02413 02414 02415 02416 02417 02418 02419 02420 02421 #line 2422 "<stdout>" 02422 02423 #define INITIAL 0 02424 #define Bases 1 02425 #define ParseType 2 02426 #define ParseFuncProto 3 02427 #define ParseComponent 4 02428 #define ParsePackage 5 02429 #define ParseProcessProto 6 02430 #define ClassName 7 02431 #define PackageName 8 02432 #define ClassVar 9 02433 #define ClassesName 10 02434 #define Map 11 02435 #define Body 12 02436 02437 #ifndef YY_NO_UNISTD_H 02438 /* Special case for "unistd.h", since it is non-ANSI. We include it way 02439 * down here because we want the user's section 1 to have been scanned first. 02440 * The user has a chance to override it with an option. 02441 */ 02442 #include <unistd.h> 02443 #endif 02444 02445 #ifndef YY_EXTRA_TYPE 02446 #define YY_EXTRA_TYPE void * 02447 #endif 02448 02449 static int yy_init_globals (void ); 02450 02451 /* Macros after this point can all be overridden by user definitions in 02452 * section 1. 02453 */ 02454 02455 #ifndef YY_SKIP_YYWRAP 02456 #ifdef __cplusplus 02457 extern "C" int vhdlcodeYYwrap (void ); 02458 #else 02459 extern int vhdlcodeYYwrap (void ); 02460 #endif 02461 #endif 02462 02463 #ifndef yytext_ptr 02464 static void yy_flex_strncpy (char *,yyconst char *,int ); 02465 #endif 02466 02467 #ifdef YY_NEED_STRLEN 02468 static int yy_flex_strlen (yyconst char * ); 02469 #endif 02470 02471 #ifndef YY_NO_INPUT 02472 02473 #ifdef __cplusplus 02474 static int yyinput (void ); 02475 #else 02476 static int input (void ); 02477 #endif 02478 02479 #endif 02480 02481 /* Amount of stuff to slurp up with each read. */ 02482 #ifndef YY_READ_BUF_SIZE 02483 #define YY_READ_BUF_SIZE 8192 02484 #endif 02485 02486 /* Copy whatever the last rule matched to the standard output. */ 02487 #ifndef ECHO 02488 /* This used to be an fputs(), but since the string might contain NUL's, 02489 * we now use fwrite(). 02490 */ 02491 #define ECHO (void) fwrite( vhdlcodeYYtext, vhdlcodeYYleng, 1, vhdlcodeYYout ) 02492 #endif 02493 02494 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 02495 * is returned in "result". 02496 */ 02497 #ifndef YY_INPUT 02498 #define YY_INPUT(buf,result,max_size) \ 02499 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 02500 { \ 02501 int c = '*'; \ 02502 size_t n; \ 02503 for ( n = 0; n < max_size && \ 02504 (c = getc( vhdlcodeYYin )) != EOF && c != '\n'; ++n ) \ 02505 buf[n] = (char) c; \ 02506 if ( c == '\n' ) \ 02507 buf[n++] = (char) c; \ 02508 if ( c == EOF && ferror( vhdlcodeYYin ) ) \ 02509 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 02510 result = n; \ 02511 } \ 02512 else \ 02513 { \ 02514 errno=0; \ 02515 while ( (result = fread(buf, 1, max_size, vhdlcodeYYin))==0 && ferror(vhdlcodeYYin)) \ 02516 { \ 02517 if( errno != EINTR) \ 02518 { \ 02519 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 02520 break; \ 02521 } \ 02522 errno=0; \ 02523 clearerr(vhdlcodeYYin); \ 02524 } \ 02525 }\ 02526 \ 02527 02528 #endif 02529 02530 /* No semi-colon after return; correct usage is to write "yyterminate();" - 02531 * we don't want an extra ';' after the "return" because that will cause 02532 * some compilers to complain about unreachable statements. 02533 */ 02534 #ifndef yyterminate 02535 #define yyterminate() return YY_NULL 02536 #endif 02537 02538 /* Number of entries by which start-condition stack grows. */ 02539 #ifndef YY_START_STACK_INCR 02540 #define YY_START_STACK_INCR 25 02541 #endif 02542 02543 /* Report a fatal error. */ 02544 #ifndef YY_FATAL_ERROR 02545 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 02546 #endif 02547 02548 /* end tables serialization structures and prototypes */ 02549 02550 /* Default declaration of generated scanner - a define so the user can 02551 * easily add parameters. 02552 */ 02553 #ifndef YY_DECL 02554 #define YY_DECL_IS_OURS 1 02555 02556 extern int vhdlcodeYYlex (void); 02557 02558 #define YY_DECL int vhdlcodeYYlex (void) 02559 #endif /* !YY_DECL */ 02560 02561 /* Code executed at the beginning of each rule, after vhdlcodeYYtext and vhdlcodeYYleng 02562 * have been set up. 02563 */ 02564 #ifndef YY_USER_ACTION 02565 #define YY_USER_ACTION 02566 #endif 02567 02568 /* Code executed at the end of each rule. */ 02569 #ifndef YY_BREAK 02570 #define YY_BREAK break; 02571 #endif 02572 02573 #define YY_RULE_SETUP \ 02574 if ( vhdlcodeYYleng > 0 ) \ 02575 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ 02576 (vhdlcodeYYtext[vhdlcodeYYleng - 1] == '\n'); \ 02577 YY_USER_ACTION 02578 02581 YY_DECL 02582 { 02583 register yy_state_type yy_current_state; 02584 register char *yy_cp, *yy_bp; 02585 register int yy_act; 02586 02587 #line 809 "vhdlcode.l" 02588 02589 02590 #line 2591 "<stdout>" 02591 02592 if ( !(yy_init) ) 02593 { 02594 (yy_init) = 1; 02595 02596 #ifdef YY_USER_INIT 02597 YY_USER_INIT; 02598 #endif 02599 02600 if ( ! (yy_start) ) 02601 (yy_start) = 1; /* first start state */ 02602 02603 if ( ! vhdlcodeYYin ) 02604 vhdlcodeYYin = stdin; 02605 02606 if ( ! vhdlcodeYYout ) 02607 vhdlcodeYYout = stdout; 02608 02609 if ( ! YY_CURRENT_BUFFER ) { 02610 vhdlcodeYYensure_buffer_stack (); 02611 YY_CURRENT_BUFFER_LVALUE = 02612 vhdlcodeYY_create_buffer(vhdlcodeYYin,YY_BUF_SIZE ); 02613 } 02614 02615 vhdlcodeYY_load_buffer_state( ); 02616 } 02617 02618 while ( 1 ) /* loops until end-of-file is reached */ 02619 { 02620 yy_cp = (yy_c_buf_p); 02621 02622 /* Support of vhdlcodeYYtext. */ 02623 *yy_cp = (yy_hold_char); 02624 02625 /* yy_bp points to the position in yy_ch_buf of the start of 02626 * the current run. 02627 */ 02628 yy_bp = yy_cp; 02629 02630 yy_current_state = (yy_start); 02631 yy_current_state += YY_AT_BOL(); 02632 yy_match: 02633 do 02634 { 02635 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 02636 if ( yy_accept[yy_current_state] ) 02637 { 02638 (yy_last_accepting_state) = yy_current_state; 02639 (yy_last_accepting_cpos) = yy_cp; 02640 } 02641 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02642 { 02643 yy_current_state = (int) yy_def[yy_current_state]; 02644 if ( yy_current_state >= 852 ) 02645 yy_c = yy_meta[(unsigned int) yy_c]; 02646 } 02647 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02648 ++yy_cp; 02649 } 02650 while ( yy_base[yy_current_state] != 4106 ); 02651 02652 yy_find_action: 02653 yy_act = yy_accept[yy_current_state]; 02654 if ( yy_act == 0 ) 02655 { /* have to back up */ 02656 yy_cp = (yy_last_accepting_cpos); 02657 yy_current_state = (yy_last_accepting_state); 02658 yy_act = yy_accept[yy_current_state]; 02659 } 02660 02661 YY_DO_BEFORE_ACTION; 02662 02663 do_action: /* This label is used only to access EOF actions. */ 02664 02665 switch ( yy_act ) 02666 { /* beginning of action switch */ 02667 case 0: /* must back up */ 02668 /* undo the effects of YY_DO_BEFORE_ACTION */ 02669 *yy_cp = (yy_hold_char); 02670 yy_cp = (yy_last_accepting_cpos); 02671 yy_current_state = (yy_last_accepting_state); 02672 goto yy_find_action; 02673 02674 case 1: 02675 YY_RULE_SETUP 02676 #line 811 "vhdlcode.l" 02677 { 02678 BEGIN(Bases); 02679 } 02680 YY_BREAK 02681 case 2: 02682 YY_RULE_SETUP 02683 #line 815 "vhdlcode.l" 02684 { 02685 g_braceCount++; 02686 writeFont("vhdlchar",vhdlcodeYYtext); 02687 BEGIN(Map); 02688 } 02689 YY_BREAK 02690 case 3: 02691 YY_RULE_SETUP 02692 #line 821 "vhdlcode.l" 02693 { /* write and link a port map lines */ 02694 QCString tt(vhdlcodeYYtext); 02695 VhdlDocGen::deleteAllChars(tt,','); 02696 QRegExp r("=>"); 02697 QStringList ql=QStringList::split(r,tt,FALSE); 02698 if (ql.count()>=2) 02699 { 02700 unsigned int index=0; 02701 QCString t1=(QCString)ql[0]; 02702 char cc=t1.at(index); 02703 while (cc==' ' || cc=='\t') 02704 { 02705 char c2[2]; 02706 c2[0]=cc; 02707 c2[1]=0; 02708 g_code->codify(c2); 02709 index++; 02710 if (index>=t1.size()) break; 02711 cc=t1.at(index); 02712 } 02713 02714 QCString s1=(QCString)ql[0]; 02715 s1=s1.stripWhiteSpace(); 02716 02717 // if (!g_PortMapComp.isEmpty()) 02718 generateMemLink(*g_code,g_PortMapComp,s1); 02719 while (index++<t1.size()) 02720 { 02721 char cc=t1.at(index); 02722 if (cc==' ' || cc=='\t') 02723 { 02724 char c2[2]; 02725 c2[0]=cc; 02726 c2[1]=0; 02727 g_code->codify(c2); 02728 } 02729 } 02730 codifyLines("=>"); 02731 index=0; 02732 QCString s2=(QCString)ql[1]; 02733 t1=s2; 02734 cc=t1.at(index); 02735 while (cc==' ' || cc=='\t') 02736 { 02737 char c2[2]; 02738 c2[0]=cc; 02739 c2[1]=0; 02740 g_code->codify(c2); 02741 index++; 02742 if (index>=t1.size()) break; 02743 cc=t1.at(index); 02744 } 02745 s2=s2.stripWhiteSpace(); 02746 generateMemLink(*g_code,g_CurrClass,s2); 02747 while (index++<t1.size()) 02748 { 02749 if (t1.at(index)==' ') 02750 { 02751 g_code->codify(" "); 02752 } 02753 } 02754 } 02755 else 02756 { 02757 codifyLines(vhdlcodeYYtext,g_CurrClass.data()); 02758 } 02759 BEGIN(Map); 02760 } 02761 YY_BREAK 02762 case 4: 02763 /* rule 4 can match eol */ 02764 YY_RULE_SETUP 02765 #line 890 "vhdlcode.l" 02766 { 02767 codifyLines(vhdlcodeYYtext); 02768 BEGIN(Map); 02769 } 02770 YY_BREAK 02771 case 5: 02772 YY_RULE_SETUP 02773 #line 895 "vhdlcode.l" 02774 { 02775 g_braceCount--; 02776 writeFont("vhdlchar",vhdlcodeYYtext); 02777 if (g_braceCount==0) 02778 { 02779 BEGIN(Bases); 02780 } 02781 } 02782 YY_BREAK 02783 case 6: 02784 YY_RULE_SETUP 02785 #line 904 "vhdlcode.l" 02786 { 02787 QCString tmp(vhdlcodeYYtext); 02788 tmp=tmp.stripWhiteSpace(); 02789 appStringLower(g_PrevString,vhdlcodeYYtext); 02790 g_vhdlKeyDict.insert(g_PrevString,new QCString(g_PrevString.data())); 02791 if (!writeColoredWord(tmp)) 02792 { 02793 generateMemLink(*g_code,g_CurrClass,tmp); 02794 } 02795 BEGIN(Bases); 02796 } 02797 YY_BREAK 02798 case 7: 02799 /* rule 7 can match eol */ 02800 YY_RULE_SETUP 02801 #line 916 "vhdlcode.l" 02802 { 02803 g_FuncProto.append(vhdlcodeYYtext); 02804 if (isProto) 02805 { 02806 codifyLines(vhdlcodeYYtext); 02807 } 02808 BEGIN(ParseType); 02809 } 02810 YY_BREAK 02811 case 8: 02812 YY_RULE_SETUP 02813 #line 926 "vhdlcode.l" 02814 { 02815 if (!isStripCode) 02816 { 02817 g_FuncProto.append(vhdlcodeYYtext); 02818 if (isProto) 02819 { 02820 writeFont("keyword",vhdlcodeYYtext); 02821 } 02822 BEGIN(ParseType); 02823 } 02824 } 02825 YY_BREAK 02826 case 9: 02827 /* rule 9 can match eol */ 02828 YY_RULE_SETUP 02829 #line 938 "vhdlcode.l" 02830 { 02831 QCString tt(vhdlcodeYYtext); 02832 codifyLines(vhdlcodeYYtext); 02833 tt=tt.lower(); 02834 VhdlDocGen::deleteAllChars(tt,';'); 02835 tt.stripWhiteSpace(); 02836 QStringList ql=QStringList::split(" ",tt,FALSE); 02837 int index=ql.findIndex(QCString("if"))+1; 02838 index+=ql.findIndex(QCString("case"))+1; 02839 index+=ql.findIndex(QCString("loop"))+1; 02840 index+=ql.findIndex(QCString("generate"))+1; 02841 if (index==0) 02842 { 02843 BEGIN(Bases); 02844 } 02845 else 02846 { 02847 BEGIN(ParseType); 02848 } 02849 } 02850 YY_BREAK 02851 case 10: 02852 /* rule 10 can match eol */ 02853 YY_RULE_SETUP 02854 #line 959 "vhdlcode.l" 02855 { 02856 codifyLines(vhdlcodeYYtext); 02857 g_vhdlKeyDict.clear(); 02858 } 02859 YY_BREAK 02860 case 11: 02861 YY_RULE_SETUP 02862 #line 964 "vhdlcode.l" 02863 { 02864 codifyLines(vhdlcodeYYtext); 02865 isFuncProto=FALSE; 02866 } 02867 YY_BREAK 02868 case 12: 02869 YY_RULE_SETUP 02870 #line 969 "vhdlcode.l" 02871 { 02872 g_FuncProto.append(vhdlcodeYYtext); 02873 if (isProto) 02874 { 02875 codifyLines(vhdlcodeYYtext); 02876 } 02877 } 02878 YY_BREAK 02879 case 13: 02880 YY_RULE_SETUP 02881 #line 977 "vhdlcode.l" 02882 { 02883 QCString val(vhdlcodeYYtext); 02884 g_FuncProto.append(vhdlcodeYYtext); 02885 appStringLower(g_PrevString,vhdlcodeYYtext); 02886 02887 if (isFuncProto && g_braceCount==0) 02888 { 02889 g_vhdlKeyDict.insert(g_PrevString,new QCString(g_PrevString.data())); 02890 } 02891 02892 if (isProto) 02893 { 02894 if (!writeColoredWord(val)) 02895 { 02896 if (!isFuncProto && !g_vhdlKeyDict.find(g_PrevString)) 02897 { 02898 val=val.stripWhiteSpace(); 02899 generateMemLink(*g_code,g_CurrClass,val); 02900 } 02901 else 02902 { 02903 codifyLines(vhdlcodeYYtext); 02904 } 02905 } 02906 } 02907 BEGIN(ParseType); 02908 } 02909 YY_BREAK 02910 case 14: 02911 YY_RULE_SETUP 02912 #line 1005 "vhdlcode.l" 02913 { 02914 g_braceCount++; 02915 g_FuncProto+='('; 02916 if (isProto) 02917 { 02918 writeFont("vhdlchar",vhdlcodeYYtext); 02919 } 02920 BEGIN(ParseType); 02921 } 02922 YY_BREAK 02923 case 15: 02924 YY_RULE_SETUP 02925 #line 1015 "vhdlcode.l" 02926 { 02927 g_braceCount--; 02928 g_FuncProto+=')'; 02929 if (isProto) 02930 { 02931 writeFont("vhdlchar",vhdlcodeYYtext); 02932 } 02933 if (g_braceCount==0 && !isProto)// && !isPackageBody) 02934 { 02935 isProto=TRUE; 02936 appStringLower(g_PrevString,vhdlcodeYYtext); 02937 writeFuncProto(); 02938 BEGIN(Bases); 02939 } 02940 if (isPackageBody) 02941 { 02942 BEGIN(ParseType); 02943 } 02944 } 02945 YY_BREAK 02946 case 16: 02947 YY_RULE_SETUP 02948 #line 1036 "vhdlcode.l" 02949 { 02950 QDict<QCString> mem; 02951 appStringLower(g_PrevString,vhdlcodeYYtext); 02952 g_CurrClass.resize(0); 02953 g_CurrClass.append(vhdlcodeYYtext); 02954 g_CurrClass=g_CurrClass.stripWhiteSpace(); 02955 02956 if (!writeColoredWord(g_CurrScope)) 02957 { 02958 generateClassOrGlobalLink(*g_code,vhdlcodeYYtext); 02959 } 02960 else 02961 { 02962 g_code->codify(vhdlcodeYYtext); 02963 } 02964 BEGIN(Bases); 02965 } 02966 YY_BREAK 02967 case 17: 02968 YY_RULE_SETUP 02969 #line 1055 "vhdlcode.l" 02970 { 02971 g_braceCount++; 02972 g_code->codify(vhdlcodeYYtext); 02973 } 02974 YY_BREAK 02975 case 18: 02976 YY_RULE_SETUP 02977 #line 1061 "vhdlcode.l" 02978 { 02979 g_braceCount--; 02980 g_code->codify(vhdlcodeYYtext); 02981 if (g_braceCount==0 && !isComponent) 02982 { 02983 g_tempComp.resize(0); 02984 BEGIN(Bases); 02985 } 02986 else 02987 { 02988 BEGIN(ParseComponent); 02989 } 02990 } 02991 YY_BREAK 02992 case 19: 02993 YY_RULE_SETUP 02994 #line 1075 "vhdlcode.l" 02995 { 02996 if (strlen(vhdlcodeYYtext)>=2) // found text ? 02997 { 02998 writeFont("keyword",vhdlcodeYYtext); 02999 } 03000 else 03001 { 03002 writeFont("vhdlchar",vhdlcodeYYtext); 03003 } 03004 } 03005 YY_BREAK 03006 case 20: 03007 YY_RULE_SETUP 03008 #line 1086 "vhdlcode.l" 03009 { 03010 codifyLines(vhdlcodeYYtext); 03011 } 03012 YY_BREAK 03013 case 21: 03014 /* rule 21 can match eol */ 03015 YY_RULE_SETUP 03016 #line 1090 "vhdlcode.l" 03017 { 03018 if (!isStripCode) 03019 { 03020 codifyLines(vhdlcodeYYtext); 03021 } 03022 else 03023 { 03024 g_yyLineNr++; 03025 } 03026 } 03027 YY_BREAK 03028 case 22: 03029 YY_RULE_SETUP 03030 #line 1101 "vhdlcode.l" 03031 { 03032 QCString text(vhdlcodeYYtext); 03033 if (!isStripCode) 03034 { 03035 writeFont("keyword",vhdlcodeYYtext); 03036 } 03037 } 03038 YY_BREAK 03039 case 23: 03040 YY_RULE_SETUP 03041 #line 1109 "vhdlcode.l" 03042 { 03043 startFontClass("vhdllogic"); 03044 codifyLines(vhdlcodeYYtext); 03045 endFontClass(); 03046 } 03047 YY_BREAK 03048 case 24: 03049 /* rule 24 can match eol */ 03050 YY_RULE_SETUP 03051 #line 1115 "vhdlcode.l" 03052 { 03053 codifyLines(vhdlcodeYYtext); 03054 g_braceCount=1; 03055 isComponent=FALSE; 03056 } 03057 YY_BREAK 03058 case 25: 03059 /* rule 25 can match eol */ 03060 YY_RULE_SETUP 03061 #line 1121 "vhdlcode.l" 03062 { 03063 codifyLines(vhdlcodeYYtext); 03064 g_braceCount=1; 03065 } 03066 YY_BREAK 03067 case 26: 03068 YY_RULE_SETUP 03069 #line 1126 "vhdlcode.l" 03070 { 03071 QCString temp(vhdlcodeYYtext); 03072 appStringLower(g_PrevString,vhdlcodeYYtext); 03073 if (!writeColoredWord(g_PrevString)) 03074 { 03075 generateMemLink(*g_code,g_tempComp,temp); 03076 } 03077 } 03078 YY_BREAK 03079 case 27: 03080 /* rule 27 can match eol */ 03081 YY_RULE_SETUP 03082 #line 1135 "vhdlcode.l" 03083 { 03084 g_FuncProto.append(vhdlcodeYYtext); 03085 } 03086 YY_BREAK 03087 case 28: 03088 YY_RULE_SETUP 03089 #line 1139 "vhdlcode.l" 03090 { 03091 g_FuncProto.append(vhdlcodeYYtext); 03092 g_braceCount++; 03093 } 03094 YY_BREAK 03095 case 29: 03096 YY_RULE_SETUP 03097 #line 1144 "vhdlcode.l" 03098 { 03099 g_FuncProto.append(vhdlcodeYYtext); 03100 g_braceCount--; 03101 if (g_braceCount==0) 03102 { 03103 writeProcessProto(); 03104 BEGIN(Bases); 03105 } 03106 } 03107 YY_BREAK 03108 case 30: 03109 /* rule 30 can match eol */ 03110 YY_RULE_SETUP 03111 #line 1154 "vhdlcode.l" 03112 { //found package 03113 QCString temp(vhdlcodeYYtext); 03114 QStringList strl=QStringList::split(".",temp,FALSE); 03115 03116 if (strl.count()>2) 03117 { 03118 QCString s1=(QCString)strl[0]; 03119 QCString s2=(QCString)strl[1]; 03120 QCString s3=(QCString)strl[2]; 03121 s1.append("."); 03122 s3.prepend("."); 03123 codifyLines(s1.data()); 03124 ClassDef *cd=VhdlDocGen::getPackageName(s2); 03125 if (cd) 03126 { 03127 generateClassOrGlobalLink(*g_code,s2.data()); 03128 } 03129 else 03130 { 03131 codifyLines(s2.data()); 03132 } 03133 codifyLines(s3.data()); 03134 } 03135 else 03136 { 03137 writeFont("keywordflow",vhdlcodeYYtext); 03138 } 03139 BEGIN(Bases); 03140 } 03141 YY_BREAK 03142 case 31: 03143 /* rule 31 can match eol */ 03144 YY_RULE_SETUP 03145 #line 1184 "vhdlcode.l" 03146 { // found port or generic map 03147 QCString tt(vhdlcodeYYtext); 03148 if (tt.contains(':',FALSE)) 03149 { 03150 isStartMap=TRUE; 03151 } 03152 else 03153 { 03154 isStartMap=FALSE; 03155 } 03156 int j=tt.find('.'); 03157 03158 if (j>0) 03159 { 03160 QCString left=tt.left(j+1); 03161 codifyLines(left.data()); 03162 tt=tt.right(tt.length()-j-1); 03163 left=VhdlDocGen::getIndexWord(tt.data(),0); 03164 if (!left.isEmpty()) 03165 { 03166 if (left.contains('(')) 03167 { 03168 j=left.find('(',FALSE); 03169 QCString name=left.left(j); 03170 generateClassOrGlobalLink(*g_code,name.data()); 03171 g_PortMapComp=name; 03172 name=tt.right(tt.length()-name.length()); 03173 codifyLines(name.data()); 03174 } 03175 else 03176 { 03177 generateClassOrGlobalLink(*g_code,left.data()); 03178 tt=tt.right(tt.length()-left.length()-1); 03179 tt.prepend(" "); 03180 g_PortMapComp=left; 03181 codifyLines(tt.data()); 03182 } 03183 } 03184 } 03185 else 03186 { 03187 codifyMapLines(tt.data()); 03188 } 03189 g_braceCount=1; 03190 BEGIN(Map); 03191 } 03192 YY_BREAK 03193 case 32: 03194 /* rule 32 can match eol */ 03195 YY_RULE_SETUP 03196 #line 1231 "vhdlcode.l" 03197 { // found component 03198 appStringLower(g_PrevString,vhdlcodeYYtext); 03199 // writeFont("keywordflow",VhdlDocGen::getIndexWord(vhdlcodeYYtext,0).data()); 03200 // writeFont("vhdlkeyword"," "); 03201 QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1); 03202 temp=temp.stripWhiteSpace(); 03203 VhdlDocGen::deleteAllChars(temp,'\n'); 03204 g_tempComp=temp; 03205 codifyLines(vhdlcodeYYtext,temp.data(),TRUE); 03206 g_braceCount=0; 03207 03208 //if (getClass(temp.data())) 03209 // generateClassOrGlobalLink(*g_code,temp.data()); 03210 //else 03211 // generateMemLink(*g_code,g_CurrClass,temp); 03212 03213 isComponent=TRUE; 03214 BEGIN(ParseComponent); 03215 } 03216 YY_BREAK 03217 case 33: 03218 /* rule 33 can match eol */ 03219 YY_RULE_SETUP 03220 #line 1253 "vhdlcode.l" 03221 { // found architecture 03222 g_PortMapComp.resize(0); 03223 // writeFont("vhdlkeyword",VhdlDocGen::getIndexWord(vhdlcodeYYtext,0).data()); 03224 // writeFont("vhdlkeyword"," "); 03225 // writeFont("vhdlchar",VhdlDocGen::getIndexWord(vhdlcodeYYtext,1).data()); 03226 // writeFont("vhdlkeyword"," "); 03227 // writeFont("vhdlkeyword",VhdlDocGen::getIndexWord(vhdlcodeYYtext,2).data()); 03228 // writeFont("vhdlkeyword"," "); 03229 //QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1); 03230 //temp=temp.stripWhiteSpace(); 03231 //temp+=("-"); 03232 //temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,3); 03233 QCString temp = VhdlDocGen::getIndexWord(vhdlcodeYYtext,3); 03234 temp+="::"; 03235 temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1); 03236 g_CurrClass=temp; 03237 VhdlDocGen::deleteAllChars(temp,'\n'); 03238 codifyLines(vhdlcodeYYtext,temp.data(),TRUE); 03239 //generateClassOrGlobalLink(*g_code,temp.data()); 03240 isPackageBody=FALSE; 03241 BEGIN(ClassName); 03242 } 03243 YY_BREAK 03244 case 34: 03245 /* rule 34 can match eol */ 03246 YY_RULE_SETUP 03247 #line 1277 "vhdlcode.l" 03248 { // found package body 03249 QCString ss(vhdlcodeYYtext); 03250 QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,2); 03251 QStringList ql=QStringList::split(temp,ss,FALSE); 03252 QCString ll=(QCString)ql[0]; 03253 codifyLines(ll.data()); 03254 temp=temp.stripWhiteSpace(); 03255 // temp.prepend("_"); 03256 generateClassOrGlobalLink(*g_code,temp.data()); 03257 g_CurrClass.resize(0); 03258 g_CurrClass=temp; 03259 isProto=FALSE; 03260 isPackageBody=TRUE; 03261 // BEGIN(ClassesName); 03262 } 03263 YY_BREAK 03264 case 35: 03265 /* rule 35 can match eol */ 03266 YY_RULE_SETUP 03267 #line 1293 "vhdlcode.l" 03268 { // found process 03269 isFuncProto=TRUE; 03270 g_FuncProto.resize(0); 03271 g_FuncProto.append(vhdlcodeYYtext); 03272 g_vhdlKeyDict.clear(); 03273 appStringLower(g_PrevString,vhdlcodeYYtext); 03274 if (g_PrevString.contains('(')) 03275 { 03276 g_braceCount=1; 03277 BEGIN(ParseProcessProto); 03278 } 03279 else 03280 { 03281 writeProcessProto(); 03282 } 03283 } 03284 YY_BREAK 03285 case 36: 03286 /* rule 36 can match eol */ 03287 YY_RULE_SETUP 03288 #line 1310 "vhdlcode.l" 03289 { // end of process 03290 isFuncProto=FALSE; 03291 codifyLines(vhdlcodeYYtext); 03292 BEGIN(Bases); 03293 } 03294 YY_BREAK 03295 case 37: 03296 YY_RULE_SETUP 03297 #line 1317 "vhdlcode.l" 03298 { 03299 isFuncProto=FALSE; 03300 writeFont("vhdlkeyword",vhdlcodeYYtext); 03301 } 03302 YY_BREAK 03303 case 38: 03304 /* rule 38 can match eol */ 03305 YY_RULE_SETUP 03306 #line 1322 "vhdlcode.l" 03307 { //found including package or library 03308 writeFont("vhdlkeyword",vhdlcodeYYtext); 03309 BEGIN(ParsePackage); 03310 } 03311 YY_BREAK 03312 case 39: 03313 /* rule 39 can match eol */ 03314 YY_RULE_SETUP 03315 #line 1329 "vhdlcode.l" 03316 { // founc function|procedure 03317 g_vhdlKeyDict.clear(); 03318 g_FuncProto.resize(0); 03319 isProto=FALSE; 03320 g_FuncProto.append(vhdlcodeYYtext); 03321 g_braceCount=1; 03322 BEGIN(ParseType); 03323 } 03324 YY_BREAK 03325 case 40: 03326 /* rule 40 can match eol */ 03327 YY_RULE_SETUP 03328 #line 1340 "vhdlcode.l" 03329 { 03330 appStringLower(g_PrevString,vhdlcodeYYtext); 03331 writeFont("keywordflow",vhdlcodeYYtext); 03332 isPackageBody=FALSE; 03333 BEGIN(ClassesName); 03334 } 03335 YY_BREAK 03336 case 41: 03337 YY_RULE_SETUP 03338 #line 1348 "vhdlcode.l" 03339 { // found keyword 03340 QCString qcs(vhdlcodeYYtext); 03341 if (!writeColoredWord(qcs)) 03342 { 03343 startFontClass("vhdlchar"); 03344 g_code->codify(vhdlcodeYYtext); 03345 endFontClass(); 03346 } 03347 } 03348 YY_BREAK 03349 case 42: 03350 YY_RULE_SETUP 03351 #line 1359 "vhdlcode.l" 03352 { 03353 appStringLower(g_PrevString,vhdlcodeYYtext); 03354 QCString temp(vhdlcodeYYtext); 03355 temp=temp.stripWhiteSpace(); 03356 03357 if (!writeColoredWord(temp)) 03358 { 03359 startFontClass("vhdlchar"); 03360 generateMemLink(*g_code,g_CurrClass,temp); 03361 endFontClass(); 03362 } 03363 } 03364 YY_BREAK 03365 case 43: 03366 YY_RULE_SETUP 03367 #line 1372 "vhdlcode.l" 03368 { 03369 startFontClass("vhdllogic"); 03370 codifyLines(vhdlcodeYYtext); 03371 endFontClass(); 03372 } 03373 YY_BREAK 03374 case 44: 03375 YY_RULE_SETUP 03376 #line 1380 "vhdlcode.l" 03377 { 03378 codifyLines(vhdlcodeYYtext); 03379 if (isFuncProto) 03380 { 03381 BEGIN(ParseFuncProto); 03382 } 03383 else 03384 { 03385 BEGIN(Bases); 03386 } 03387 } 03388 YY_BREAK 03389 case 45: 03390 YY_RULE_SETUP 03391 #line 1392 "vhdlcode.l" 03392 { 03393 startFontClass("vhdlchar"); 03394 g_code->codify(vhdlcodeYYtext); 03395 endFontClass(); 03396 } 03397 YY_BREAK 03398 case 46: 03399 YY_RULE_SETUP 03400 #line 1398 "vhdlcode.l" 03401 { 03402 startFontClass("vhdlchar"); 03403 g_code->codify(vhdlcodeYYtext); 03404 endFontClass(); 03405 } 03406 YY_BREAK 03407 case 47: 03408 /* rule 47 can match eol */ 03409 YY_RULE_SETUP 03410 #line 1407 "vhdlcode.l" 03411 { 03412 if (!isStripCode) 03413 { 03414 codifyLines(vhdlcodeYYtext); 03415 } 03416 else 03417 { 03418 g_yyLineNr++; 03419 } 03420 BEGIN(Bases); 03421 } 03422 YY_BREAK 03423 case 48: 03424 YY_RULE_SETUP 03425 #line 1419 "vhdlcode.l" 03426 { 03427 g_code->codify(vhdlcodeYYtext); 03428 } 03429 YY_BREAK 03430 case 49: 03431 YY_RULE_SETUP 03432 #line 1423 "vhdlcode.l" 03433 { // found text 03434 bool stripLine=FALSE; 03435 QCString text(vhdlcodeYYtext); 03436 if (Config_getBool("STRIP_CODE_COMMENTS")) 03437 { 03438 if (text.contains("--!")) 03439 { 03440 stripLine=TRUE; 03441 } 03442 } 03443 if (!isStripCode && !stripLine) 03444 { 03445 writeFont("keyword",vhdlcodeYYtext); 03446 BEGIN(Bases); 03447 } 03448 } 03449 YY_BREAK 03450 /* 03451 <*>{B}*"--#"[^\n]* { // found one line comment 03452 if (!Config_getBool("STRIP_CODE_COMMENTS")) 03453 { 03454 startFontClass("keyword"); 03455 codifyLines(vhdlcodeYYtext); 03456 endFontClass(); 03457 } 03458 } 03459 */ 03460 case 50: 03461 YY_RULE_SETUP 03462 #line 1452 "vhdlcode.l" 03463 ECHO; 03464 YY_BREAK 03465 #line 3466 "<stdout>" 03466 case YY_STATE_EOF(INITIAL): 03467 case YY_STATE_EOF(Bases): 03468 case YY_STATE_EOF(ParseType): 03469 case YY_STATE_EOF(ParseFuncProto): 03470 case YY_STATE_EOF(ParseComponent): 03471 case YY_STATE_EOF(ParsePackage): 03472 case YY_STATE_EOF(ParseProcessProto): 03473 case YY_STATE_EOF(ClassName): 03474 case YY_STATE_EOF(PackageName): 03475 case YY_STATE_EOF(ClassVar): 03476 case YY_STATE_EOF(ClassesName): 03477 case YY_STATE_EOF(Map): 03478 case YY_STATE_EOF(Body): 03479 yyterminate(); 03480 03481 case YY_END_OF_BUFFER: 03482 { 03483 /* Amount of text matched not including the EOB char. */ 03484 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 03485 03486 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 03487 *yy_cp = (yy_hold_char); 03488 YY_RESTORE_YY_MORE_OFFSET 03489 03490 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 03491 { 03492 /* We're scanning a new file or input source. It's 03493 * possible that this happened because the user 03494 * just pointed vhdlcodeYYin at a new source and called 03495 * vhdlcodeYYlex(). If so, then we have to assure 03496 * consistency between YY_CURRENT_BUFFER and our 03497 * globals. Here is the right place to do so, because 03498 * this is the first action (other than possibly a 03499 * back-up) that will match for the new input source. 03500 */ 03501 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 03502 YY_CURRENT_BUFFER_LVALUE->yy_input_file = vhdlcodeYYin; 03503 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 03504 } 03505 03506 /* Note that here we test for yy_c_buf_p "<=" to the position 03507 * of the first EOB in the buffer, since yy_c_buf_p will 03508 * already have been incremented past the NUL character 03509 * (since all states make transitions on EOB to the 03510 * end-of-buffer state). Contrast this with the test 03511 * in input(). 03512 */ 03513 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 03514 { /* This was really a NUL. */ 03515 yy_state_type yy_next_state; 03516 03517 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 03518 03519 yy_current_state = yy_get_previous_state( ); 03520 03521 /* Okay, we're now positioned to make the NUL 03522 * transition. We couldn't have 03523 * yy_get_previous_state() go ahead and do it 03524 * for us because it doesn't know how to deal 03525 * with the possibility of jamming (and we don't 03526 * want to build jamming into it because then it 03527 * will run more slowly). 03528 */ 03529 03530 yy_next_state = yy_try_NUL_trans( yy_current_state ); 03531 03532 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03533 03534 if ( yy_next_state ) 03535 { 03536 /* Consume the NUL. */ 03537 yy_cp = ++(yy_c_buf_p); 03538 yy_current_state = yy_next_state; 03539 goto yy_match; 03540 } 03541 03542 else 03543 { 03544 yy_cp = (yy_c_buf_p); 03545 goto yy_find_action; 03546 } 03547 } 03548 03549 else switch ( yy_get_next_buffer( ) ) 03550 { 03551 case EOB_ACT_END_OF_FILE: 03552 { 03553 (yy_did_buffer_switch_on_eof) = 0; 03554 03555 if ( vhdlcodeYYwrap( ) ) 03556 { 03557 /* Note: because we've taken care in 03558 * yy_get_next_buffer() to have set up 03559 * vhdlcodeYYtext, we can now set up 03560 * yy_c_buf_p so that if some total 03561 * hoser (like flex itself) wants to 03562 * call the scanner after we return the 03563 * YY_NULL, it'll still work - another 03564 * YY_NULL will get returned. 03565 */ 03566 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 03567 03568 yy_act = YY_STATE_EOF(YY_START); 03569 goto do_action; 03570 } 03571 03572 else 03573 { 03574 if ( ! (yy_did_buffer_switch_on_eof) ) 03575 YY_NEW_FILE; 03576 } 03577 break; 03578 } 03579 03580 case EOB_ACT_CONTINUE_SCAN: 03581 (yy_c_buf_p) = 03582 (yytext_ptr) + yy_amount_of_matched_text; 03583 03584 yy_current_state = yy_get_previous_state( ); 03585 03586 yy_cp = (yy_c_buf_p); 03587 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03588 goto yy_match; 03589 03590 case EOB_ACT_LAST_MATCH: 03591 (yy_c_buf_p) = 03592 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 03593 03594 yy_current_state = yy_get_previous_state( ); 03595 03596 yy_cp = (yy_c_buf_p); 03597 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 03598 goto yy_find_action; 03599 } 03600 break; 03601 } 03602 03603 default: 03604 YY_FATAL_ERROR( 03605 "fatal flex scanner internal error--no action found" ); 03606 } /* end of action switch */ 03607 } /* end of scanning one token */ 03608 } /* end of vhdlcodeYYlex */ 03609 03610 /* yy_get_next_buffer - try to read in a new buffer 03611 * 03612 * Returns a code representing an action: 03613 * EOB_ACT_LAST_MATCH - 03614 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 03615 * EOB_ACT_END_OF_FILE - end of file 03616 */ 03617 static int yy_get_next_buffer (void) 03618 { 03619 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 03620 register char *source = (yytext_ptr); 03621 register int number_to_move, i; 03622 int ret_val; 03623 03624 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 03625 YY_FATAL_ERROR( 03626 "fatal flex scanner internal error--end of buffer missed" ); 03627 03628 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 03629 { /* Don't try to fill the buffer, so this is an EOF. */ 03630 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 03631 { 03632 /* We matched a single character, the EOB, so 03633 * treat this as a final EOF. 03634 */ 03635 return EOB_ACT_END_OF_FILE; 03636 } 03637 03638 else 03639 { 03640 /* We matched some text prior to the EOB, first 03641 * process it. 03642 */ 03643 return EOB_ACT_LAST_MATCH; 03644 } 03645 } 03646 03647 /* Try to read more data. */ 03648 03649 /* First move last chars to start of buffer. */ 03650 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 03651 03652 for ( i = 0; i < number_to_move; ++i ) 03653 *(dest++) = *(source++); 03654 03655 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 03656 /* don't do the read, it's not guaranteed to return an EOF, 03657 * just force an EOF 03658 */ 03659 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 03660 03661 else 03662 { 03663 int num_to_read = 03664 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 03665 03666 while ( num_to_read <= 0 ) 03667 { /* Not enough room in the buffer - grow it. */ 03668 03669 /* just a shorter name for the current buffer */ 03670 YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 03671 03672 int yy_c_buf_p_offset = 03673 (int) ((yy_c_buf_p) - b->yy_ch_buf); 03674 03675 if ( b->yy_is_our_buffer ) 03676 { 03677 int new_size = b->yy_buf_size * 2; 03678 03679 if ( new_size <= 0 ) 03680 b->yy_buf_size += b->yy_buf_size / 8; 03681 else 03682 b->yy_buf_size *= 2; 03683 03684 b->yy_ch_buf = (char *) 03685 /* Include room in for 2 EOB chars. */ 03686 vhdlcodeYYrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); 03687 } 03688 else 03689 /* Can't grow it, we don't own it. */ 03690 b->yy_ch_buf = 0; 03691 03692 if ( ! b->yy_ch_buf ) 03693 YY_FATAL_ERROR( 03694 "fatal error - scanner input buffer overflow" ); 03695 03696 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 03697 03698 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 03699 number_to_move - 1; 03700 03701 } 03702 03703 if ( num_to_read > YY_READ_BUF_SIZE ) 03704 num_to_read = YY_READ_BUF_SIZE; 03705 03706 /* Read in more data. */ 03707 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 03708 (yy_n_chars), num_to_read ); 03709 03710 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03711 } 03712 03713 if ( (yy_n_chars) == 0 ) 03714 { 03715 if ( number_to_move == YY_MORE_ADJ ) 03716 { 03717 ret_val = EOB_ACT_END_OF_FILE; 03718 vhdlcodeYYrestart(vhdlcodeYYin ); 03719 } 03720 03721 else 03722 { 03723 ret_val = EOB_ACT_LAST_MATCH; 03724 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 03725 YY_BUFFER_EOF_PENDING; 03726 } 03727 } 03728 03729 else 03730 ret_val = EOB_ACT_CONTINUE_SCAN; 03731 03732 (yy_n_chars) += number_to_move; 03733 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 03734 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 03735 03736 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 03737 03738 return ret_val; 03739 } 03740 03741 /* yy_get_previous_state - get the state just before the EOB char was reached */ 03742 03743 static yy_state_type yy_get_previous_state (void) 03744 { 03745 register yy_state_type yy_current_state; 03746 register char *yy_cp; 03747 03748 yy_current_state = (yy_start); 03749 yy_current_state += YY_AT_BOL(); 03750 03751 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 03752 { 03753 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 03754 if ( yy_accept[yy_current_state] ) 03755 { 03756 (yy_last_accepting_state) = yy_current_state; 03757 (yy_last_accepting_cpos) = yy_cp; 03758 } 03759 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 03760 { 03761 yy_current_state = (int) yy_def[yy_current_state]; 03762 if ( yy_current_state >= 852 ) 03763 yy_c = yy_meta[(unsigned int) yy_c]; 03764 } 03765 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 03766 } 03767 03768 return yy_current_state; 03769 } 03770 03771 /* yy_try_NUL_trans - try to make a transition on the NUL character 03772 * 03773 * synopsis 03774 * next_state = yy_try_NUL_trans( current_state ); 03775 */ 03776 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 03777 { 03778 register int yy_is_jam; 03779 register char *yy_cp = (yy_c_buf_p); 03780 03781 register YY_CHAR yy_c = 1; 03782 if ( yy_accept[yy_current_state] ) 03783 { 03784 (yy_last_accepting_state) = yy_current_state; 03785 (yy_last_accepting_cpos) = yy_cp; 03786 } 03787 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 03788 { 03789 yy_current_state = (int) yy_def[yy_current_state]; 03790 if ( yy_current_state >= 852 ) 03791 yy_c = yy_meta[(unsigned int) yy_c]; 03792 } 03793 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 03794 yy_is_jam = (yy_current_state == 851); 03795 03796 return yy_is_jam ? 0 : yy_current_state; 03797 } 03798 03799 #ifndef YY_NO_INPUT 03800 #ifdef __cplusplus 03801 static int yyinput (void) 03802 #else 03803 static int input (void) 03804 #endif 03805 03806 { 03807 int c; 03808 03809 *(yy_c_buf_p) = (yy_hold_char); 03810 03811 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 03812 { 03813 /* yy_c_buf_p now points to the character we want to return. 03814 * If this occurs *before* the EOB characters, then it's a 03815 * valid NUL; if not, then we've hit the end of the buffer. 03816 */ 03817 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 03818 /* This was really a NUL. */ 03819 *(yy_c_buf_p) = '\0'; 03820 03821 else 03822 { /* need more input */ 03823 int offset = (yy_c_buf_p) - (yytext_ptr); 03824 ++(yy_c_buf_p); 03825 03826 switch ( yy_get_next_buffer( ) ) 03827 { 03828 case EOB_ACT_LAST_MATCH: 03829 /* This happens because yy_g_n_b() 03830 * sees that we've accumulated a 03831 * token and flags that we need to 03832 * try matching the token before 03833 * proceeding. But for input(), 03834 * there's no matching to consider. 03835 * So convert the EOB_ACT_LAST_MATCH 03836 * to EOB_ACT_END_OF_FILE. 03837 */ 03838 03839 /* Reset buffer status. */ 03840 vhdlcodeYYrestart(vhdlcodeYYin ); 03841 03842 /*FALLTHROUGH*/ 03843 03844 case EOB_ACT_END_OF_FILE: 03845 { 03846 if ( vhdlcodeYYwrap( ) ) 03847 return 0; 03848 03849 if ( ! (yy_did_buffer_switch_on_eof) ) 03850 YY_NEW_FILE; 03851 #ifdef __cplusplus 03852 return yyinput(); 03853 #else 03854 return input(); 03855 #endif 03856 } 03857 03858 case EOB_ACT_CONTINUE_SCAN: 03859 (yy_c_buf_p) = (yytext_ptr) + offset; 03860 break; 03861 } 03862 } 03863 } 03864 03865 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 03866 *(yy_c_buf_p) = '\0'; /* preserve vhdlcodeYYtext */ 03867 (yy_hold_char) = *++(yy_c_buf_p); 03868 03869 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); 03870 03871 return c; 03872 } 03873 #endif /* ifndef YY_NO_INPUT */ 03874 03880 void vhdlcodeYYrestart (FILE * input_file ) 03881 { 03882 03883 if ( ! YY_CURRENT_BUFFER ){ 03884 vhdlcodeYYensure_buffer_stack (); 03885 YY_CURRENT_BUFFER_LVALUE = 03886 vhdlcodeYY_create_buffer(vhdlcodeYYin,YY_BUF_SIZE ); 03887 } 03888 03889 vhdlcodeYY_init_buffer(YY_CURRENT_BUFFER,input_file ); 03890 vhdlcodeYY_load_buffer_state( ); 03891 } 03892 03897 void vhdlcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 03898 { 03899 03900 /* TODO. We should be able to replace this entire function body 03901 * with 03902 * vhdlcodeYYpop_buffer_state(); 03903 * vhdlcodeYYpush_buffer_state(new_buffer); 03904 */ 03905 vhdlcodeYYensure_buffer_stack (); 03906 if ( YY_CURRENT_BUFFER == new_buffer ) 03907 return; 03908 03909 if ( YY_CURRENT_BUFFER ) 03910 { 03911 /* Flush out information for old buffer. */ 03912 *(yy_c_buf_p) = (yy_hold_char); 03913 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 03914 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 03915 } 03916 03917 YY_CURRENT_BUFFER_LVALUE = new_buffer; 03918 vhdlcodeYY_load_buffer_state( ); 03919 03920 /* We don't actually know whether we did this switch during 03921 * EOF (vhdlcodeYYwrap()) processing, but the only time this flag 03922 * is looked at is after vhdlcodeYYwrap() is called, so it's safe 03923 * to go ahead and always set it. 03924 */ 03925 (yy_did_buffer_switch_on_eof) = 1; 03926 } 03927 03928 static void vhdlcodeYY_load_buffer_state (void) 03929 { 03930 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 03931 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 03932 vhdlcodeYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 03933 (yy_hold_char) = *(yy_c_buf_p); 03934 } 03935 03942 YY_BUFFER_STATE vhdlcodeYY_create_buffer (FILE * file, int size ) 03943 { 03944 YY_BUFFER_STATE b; 03945 03946 b = (YY_BUFFER_STATE) vhdlcodeYYalloc(sizeof( struct yy_buffer_state ) ); 03947 if ( ! b ) 03948 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_create_buffer()" ); 03949 03950 b->yy_buf_size = size; 03951 03952 /* yy_ch_buf has to be 2 characters longer than the size given because 03953 * we need to put in 2 end-of-buffer characters. 03954 */ 03955 b->yy_ch_buf = (char *) vhdlcodeYYalloc(b->yy_buf_size + 2 ); 03956 if ( ! b->yy_ch_buf ) 03957 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_create_buffer()" ); 03958 03959 b->yy_is_our_buffer = 1; 03960 03961 vhdlcodeYY_init_buffer(b,file ); 03962 03963 return b; 03964 } 03965 03970 void vhdlcodeYY_delete_buffer (YY_BUFFER_STATE b ) 03971 { 03972 03973 if ( ! b ) 03974 return; 03975 03976 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 03977 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 03978 03979 if ( b->yy_is_our_buffer ) 03980 vhdlcodeYYfree((void *) b->yy_ch_buf ); 03981 03982 vhdlcodeYYfree((void *) b ); 03983 } 03984 03985 #ifndef __cplusplus 03986 extern int isatty (int ); 03987 #endif /* __cplusplus */ 03988 03989 /* Initializes or reinitializes a buffer. 03990 * This function is sometimes called more than once on the same buffer, 03991 * such as during a vhdlcodeYYrestart() or at EOF. 03992 */ 03993 static void vhdlcodeYY_init_buffer (YY_BUFFER_STATE b, FILE * file ) 03994 03995 { 03996 int oerrno = errno; 03997 03998 vhdlcodeYY_flush_buffer(b ); 03999 04000 b->yy_input_file = file; 04001 b->yy_fill_buffer = 1; 04002 04003 /* If b is the current buffer, then vhdlcodeYY_init_buffer was _probably_ 04004 * called from vhdlcodeYYrestart() or through yy_get_next_buffer. 04005 * In that case, we don't want to reset the lineno or column. 04006 */ 04007 if (b != YY_CURRENT_BUFFER){ 04008 b->yy_bs_lineno = 1; 04009 b->yy_bs_column = 0; 04010 } 04011 04012 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 04013 04014 errno = oerrno; 04015 } 04016 04021 void vhdlcodeYY_flush_buffer (YY_BUFFER_STATE b ) 04022 { 04023 if ( ! b ) 04024 return; 04025 04026 b->yy_n_chars = 0; 04027 04028 /* We always need two end-of-buffer characters. The first causes 04029 * a transition to the end-of-buffer state. The second causes 04030 * a jam in that state. 04031 */ 04032 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 04033 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 04034 04035 b->yy_buf_pos = &b->yy_ch_buf[0]; 04036 04037 b->yy_at_bol = 1; 04038 b->yy_buffer_status = YY_BUFFER_NEW; 04039 04040 if ( b == YY_CURRENT_BUFFER ) 04041 vhdlcodeYY_load_buffer_state( ); 04042 } 04043 04050 void vhdlcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ) 04051 { 04052 if (new_buffer == NULL) 04053 return; 04054 04055 vhdlcodeYYensure_buffer_stack(); 04056 04057 /* This block is copied from vhdlcodeYY_switch_to_buffer. */ 04058 if ( YY_CURRENT_BUFFER ) 04059 { 04060 /* Flush out information for old buffer. */ 04061 *(yy_c_buf_p) = (yy_hold_char); 04062 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 04063 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 04064 } 04065 04066 /* Only push if top exists. Otherwise, replace top. */ 04067 if (YY_CURRENT_BUFFER) 04068 (yy_buffer_stack_top)++; 04069 YY_CURRENT_BUFFER_LVALUE = new_buffer; 04070 04071 /* copied from vhdlcodeYY_switch_to_buffer. */ 04072 vhdlcodeYY_load_buffer_state( ); 04073 (yy_did_buffer_switch_on_eof) = 1; 04074 } 04075 04080 void vhdlcodeYYpop_buffer_state (void) 04081 { 04082 if (!YY_CURRENT_BUFFER) 04083 return; 04084 04085 vhdlcodeYY_delete_buffer(YY_CURRENT_BUFFER ); 04086 YY_CURRENT_BUFFER_LVALUE = NULL; 04087 if ((yy_buffer_stack_top) > 0) 04088 --(yy_buffer_stack_top); 04089 04090 if (YY_CURRENT_BUFFER) { 04091 vhdlcodeYY_load_buffer_state( ); 04092 (yy_did_buffer_switch_on_eof) = 1; 04093 } 04094 } 04095 04096 /* Allocates the stack if it does not exist. 04097 * Guarantees space for at least one push. 04098 */ 04099 static void vhdlcodeYYensure_buffer_stack (void) 04100 { 04101 int num_to_alloc; 04102 04103 if (!(yy_buffer_stack)) { 04104 04105 /* First allocation is just for 2 elements, since we don't know if this 04106 * scanner will even need a stack. We use 2 instead of 1 to avoid an 04107 * immediate realloc on the next call. 04108 */ 04109 num_to_alloc = 1; 04110 (yy_buffer_stack) = (struct yy_buffer_state**)vhdlcodeYYalloc 04111 (num_to_alloc * sizeof(struct yy_buffer_state*) 04112 ); 04113 04114 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 04115 04116 (yy_buffer_stack_max) = num_to_alloc; 04117 (yy_buffer_stack_top) = 0; 04118 return; 04119 } 04120 04121 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 04122 04123 /* Increase the buffer to prepare for a possible push. */ 04124 int grow_size = 8 /* arbitrary grow size */; 04125 04126 num_to_alloc = (yy_buffer_stack_max) + grow_size; 04127 (yy_buffer_stack) = (struct yy_buffer_state**)vhdlcodeYYrealloc 04128 ((yy_buffer_stack), 04129 num_to_alloc * sizeof(struct yy_buffer_state*) 04130 ); 04131 04132 /* zero only the new slots.*/ 04133 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 04134 (yy_buffer_stack_max) = num_to_alloc; 04135 } 04136 } 04137 04144 YY_BUFFER_STATE vhdlcodeYY_scan_buffer (char * base, yy_size_t size ) 04145 { 04146 YY_BUFFER_STATE b; 04147 04148 if ( size < 2 || 04149 base[size-2] != YY_END_OF_BUFFER_CHAR || 04150 base[size-1] != YY_END_OF_BUFFER_CHAR ) 04151 /* They forgot to leave room for the EOB's. */ 04152 return 0; 04153 04154 b = (YY_BUFFER_STATE) vhdlcodeYYalloc(sizeof( struct yy_buffer_state ) ); 04155 if ( ! b ) 04156 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_scan_buffer()" ); 04157 04158 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 04159 b->yy_buf_pos = b->yy_ch_buf = base; 04160 b->yy_is_our_buffer = 0; 04161 b->yy_input_file = 0; 04162 b->yy_n_chars = b->yy_buf_size; 04163 b->yy_is_interactive = 0; 04164 b->yy_at_bol = 1; 04165 b->yy_fill_buffer = 0; 04166 b->yy_buffer_status = YY_BUFFER_NEW; 04167 04168 vhdlcodeYY_switch_to_buffer(b ); 04169 04170 return b; 04171 } 04172 04181 YY_BUFFER_STATE vhdlcodeYY_scan_string (yyconst char * yystr ) 04182 { 04183 04184 return vhdlcodeYY_scan_bytes(yystr,strlen(yystr) ); 04185 } 04186 04194 YY_BUFFER_STATE vhdlcodeYY_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 04195 { 04196 YY_BUFFER_STATE b; 04197 char *buf; 04198 yy_size_t n; 04199 int i; 04200 04201 /* Get memory for full buffer, including space for trailing EOB's. */ 04202 n = _yybytes_len + 2; 04203 buf = (char *) vhdlcodeYYalloc(n ); 04204 if ( ! buf ) 04205 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_scan_bytes()" ); 04206 04207 for ( i = 0; i < _yybytes_len; ++i ) 04208 buf[i] = yybytes[i]; 04209 04210 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 04211 04212 b = vhdlcodeYY_scan_buffer(buf,n ); 04213 if ( ! b ) 04214 YY_FATAL_ERROR( "bad buffer in vhdlcodeYY_scan_bytes()" ); 04215 04216 /* It's okay to grow etc. this buffer, and we should throw it 04217 * away when we're done. 04218 */ 04219 b->yy_is_our_buffer = 1; 04220 04221 return b; 04222 } 04223 04224 #ifndef YY_EXIT_FAILURE 04225 #define YY_EXIT_FAILURE 2 04226 #endif 04227 04228 static void yy_fatal_error (yyconst char* msg ) 04229 { 04230 (void) fprintf( stderr, "%s\n", msg ); 04231 exit( YY_EXIT_FAILURE ); 04232 } 04233 04234 /* Redefine yyless() so it works in section 3 code. */ 04235 04236 #undef yyless 04237 #define yyless(n) \ 04238 do \ 04239 { \ 04240 /* Undo effects of setting up vhdlcodeYYtext. */ \ 04241 int yyless_macro_arg = (n); \ 04242 YY_LESS_LINENO(yyless_macro_arg);\ 04243 vhdlcodeYYtext[vhdlcodeYYleng] = (yy_hold_char); \ 04244 (yy_c_buf_p) = vhdlcodeYYtext + yyless_macro_arg; \ 04245 (yy_hold_char) = *(yy_c_buf_p); \ 04246 *(yy_c_buf_p) = '\0'; \ 04247 vhdlcodeYYleng = yyless_macro_arg; \ 04248 } \ 04249 while ( 0 ) 04250 04251 /* Accessor methods (get/set functions) to struct members. */ 04252 04256 int vhdlcodeYYget_lineno (void) 04257 { 04258 04259 return vhdlcodeYYlineno; 04260 } 04261 04265 FILE *vhdlcodeYYget_in (void) 04266 { 04267 return vhdlcodeYYin; 04268 } 04269 04273 FILE *vhdlcodeYYget_out (void) 04274 { 04275 return vhdlcodeYYout; 04276 } 04277 04281 int vhdlcodeYYget_leng (void) 04282 { 04283 return vhdlcodeYYleng; 04284 } 04285 04290 char *vhdlcodeYYget_text (void) 04291 { 04292 return vhdlcodeYYtext; 04293 } 04294 04299 void vhdlcodeYYset_lineno (int line_number ) 04300 { 04301 04302 vhdlcodeYYlineno = line_number; 04303 } 04304 04311 void vhdlcodeYYset_in (FILE * in_str ) 04312 { 04313 vhdlcodeYYin = in_str ; 04314 } 04315 04316 void vhdlcodeYYset_out (FILE * out_str ) 04317 { 04318 vhdlcodeYYout = out_str ; 04319 } 04320 04321 int vhdlcodeYYget_debug (void) 04322 { 04323 return vhdlcodeYY_flex_debug; 04324 } 04325 04326 void vhdlcodeYYset_debug (int bdebug ) 04327 { 04328 vhdlcodeYY_flex_debug = bdebug ; 04329 } 04330 04331 static int yy_init_globals (void) 04332 { 04333 /* Initialization is the same as for the non-reentrant scanner. 04334 * This function is called from vhdlcodeYYlex_destroy(), so don't allocate here. 04335 */ 04336 04337 (yy_buffer_stack) = 0; 04338 (yy_buffer_stack_top) = 0; 04339 (yy_buffer_stack_max) = 0; 04340 (yy_c_buf_p) = (char *) 0; 04341 (yy_init) = 0; 04342 (yy_start) = 0; 04343 04344 /* Defined in main.c */ 04345 #ifdef YY_STDINIT 04346 vhdlcodeYYin = stdin; 04347 vhdlcodeYYout = stdout; 04348 #else 04349 vhdlcodeYYin = (FILE *) 0; 04350 vhdlcodeYYout = (FILE *) 0; 04351 #endif 04352 04353 /* For future reference: Set errno on error, since we are called by 04354 * vhdlcodeYYlex_init() 04355 */ 04356 return 0; 04357 } 04358 04359 /* vhdlcodeYYlex_destroy is for both reentrant and non-reentrant scanners. */ 04360 int vhdlcodeYYlex_destroy (void) 04361 { 04362 04363 /* Pop the buffer stack, destroying each element. */ 04364 while(YY_CURRENT_BUFFER){ 04365 vhdlcodeYY_delete_buffer(YY_CURRENT_BUFFER ); 04366 YY_CURRENT_BUFFER_LVALUE = NULL; 04367 vhdlcodeYYpop_buffer_state(); 04368 } 04369 04370 /* Destroy the stack itself. */ 04371 vhdlcodeYYfree((yy_buffer_stack) ); 04372 (yy_buffer_stack) = NULL; 04373 04374 /* Reset the globals. This is important in a non-reentrant scanner so the next time 04375 * vhdlcodeYYlex() is called, initialization will occur. */ 04376 yy_init_globals( ); 04377 04378 return 0; 04379 } 04380 04381 /* 04382 * Internal utility routines. 04383 */ 04384 04385 #ifndef yytext_ptr 04386 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 04387 { 04388 register int i; 04389 for ( i = 0; i < n; ++i ) 04390 s1[i] = s2[i]; 04391 } 04392 #endif 04393 04394 #ifdef YY_NEED_STRLEN 04395 static int yy_flex_strlen (yyconst char * s ) 04396 { 04397 register int n; 04398 for ( n = 0; s[n]; ++n ) 04399 ; 04400 04401 return n; 04402 } 04403 #endif 04404 04405 void *vhdlcodeYYalloc (yy_size_t size ) 04406 { 04407 return (void *) malloc( size ); 04408 } 04409 04410 void *vhdlcodeYYrealloc (void * ptr, yy_size_t size ) 04411 { 04412 /* The cast to (char *) in the following accommodates both 04413 * implementations that use char* generic pointers, and those 04414 * that use void* generic pointers. It works with the latter 04415 * because both ANSI C and C++ allow castless assignment from 04416 * any pointer type to void*, and deal with argument conversions 04417 * as though doing an assignment. 04418 */ 04419 return (void *) realloc( (char *) ptr, size ); 04420 } 04421 04422 void vhdlcodeYYfree (void * ptr ) 04423 { 04424 free( (char *) ptr ); /* see vhdlcodeYYrealloc() for (char *) cast */ 04425 } 04426 04427 #define YYTABLES_NAME "yytables" 04428 04429 #line 1452 "vhdlcode.l" 04430 04431 04432 04433 /*@ ---------------------------------------------------------------------------- 04434 */ 04435 04436 void resetVhdlCodeParserState() 04437 { 04438 g_vhdlKeyDict.setAutoDelete(TRUE); 04439 g_vhdlKeyDict.clear(); 04440 } 04441 04442 void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &s, 04443 bool exBlock, const char *exName,FileDef *fd, 04444 int startLine,int endLine,bool inlineFragment, 04445 MemberDef *memberDef) 04446 { 04447 //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd); 04448 if (s.isEmpty()) return; 04449 if (memberDef) 04450 { 04451 ClassDef *dd=memberDef->getClassDef(); 04452 if (dd) g_CurrClass=dd->className(); 04453 startLine--; 04454 } 04455 resetVhdlCodeParserState(); 04456 g_code = &od; 04457 g_inputString = s; 04458 g_inputPosition = 0; 04459 g_currentFontClass = 0; 04460 g_needsTermination = FALSE; 04461 04462 if (endLine!=-1) 04463 g_inputLines = endLine+1; 04464 else 04465 g_inputLines = countLines(); 04466 04467 if (startLine!=-1) 04468 g_yyLineNr = startLine; 04469 else 04470 g_yyLineNr = 1; 04471 04472 04473 // g_theCallContext.clear(); 04474 g_classScope = className; 04475 g_exampleName = exName; 04476 g_sourceFileDef = fd; 04477 if (exBlock && fd==0) 04478 { 04479 // create a dummy filedef for the example 04480 g_sourceFileDef = new FileDef("",exName); 04481 } 04482 if (g_sourceFileDef) 04483 { 04484 setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); 04485 } 04486 g_currentDefinition = 0; 04487 g_currentMemberDef = 0; 04488 g_vhdlMember=0; 04489 if (!g_exampleName.isEmpty()) 04490 { 04491 g_exampleFile = convertNameToFile(g_exampleName+"-example"); 04492 } 04493 g_includeCodeFragment = inlineFragment; 04494 if (!memberDef) 04495 { 04496 startCodeLine(); 04497 } 04498 // g_type.resize(0); 04499 // g_name.resize(0); 04500 // g_args.resize(0); 04501 g_parmName.resize(0); 04502 g_parmType.resize(0); 04503 if (memberDef) 04504 { 04505 setParameterList(memberDef); 04506 } 04507 vhdlcodeYYrestart( vhdlcodeYYin ); 04508 BEGIN( Bases ); 04509 vhdlcodeYYlex(); 04510 g_lexInit=TRUE; 04511 if (g_needsTermination) 04512 { 04513 endFontClass(); 04514 g_code->endCodeLine(); 04515 } 04516 if (exBlock && g_sourceFileDef) 04517 { 04518 // delete the temporary file definition used for this example 04519 delete g_sourceFileDef; 04520 g_sourceFileDef=0; 04521 } 04522 return; 04523 } 04524 04525 void codeFreeVhdlScanner() 04526 { 04527 #if defined(YY_FLEX_SUBMINOR_VERSION) 04528 if (g_lexInit) 04529 { 04530 vhdlcodeYYlex_destroy(); 04531 } 04532 #endif 04533 } 04534 04535 #if !defined(YY_FLEX_SUBMINOR_VERSION) 04536 extern "C" { // some bogus code to keep the compiler happy 04537 void vhdlcodeYYdummy() { yy_flex_realloc(0,0); } 04538 } 04539 #elif YY_FLEX_SUBMINOR_VERSION<33 04540 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!" 04541 #endif 04542 04543 04544 04545 04546