GDB (API)
|
00001 #line 2 "ada-lex.c" 00002 00003 #line 4 "ada-lex.c" 00004 00005 #define YY_INT_ALIGNED short int 00006 00007 /* A lexical scanner generated by flex */ 00008 00009 #define FLEX_SCANNER 00010 #define YY_FLEX_MAJOR_VERSION 2 00011 #define YY_FLEX_MINOR_VERSION 5 00012 #define YY_FLEX_SUBMINOR_VERSION 35 00013 #if YY_FLEX_SUBMINOR_VERSION > 0 00014 #define FLEX_BETA 00015 #endif 00016 00017 /* First, we deal with platform-specific or compiler-specific issues. */ 00018 00019 /* begin standard C headers. */ 00020 #include <stdio.h> 00021 #include <string.h> 00022 #include <errno.h> 00023 #include <stdlib.h> 00024 00025 /* end standard C headers. */ 00026 00027 /* flex integer type definitions */ 00028 00029 #ifndef FLEXINT_H 00030 #define FLEXINT_H 00031 00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 00033 00034 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 00035 00036 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 00037 * if you want the limit (max/min) macros for int types. 00038 */ 00039 #ifndef __STDC_LIMIT_MACROS 00040 #define __STDC_LIMIT_MACROS 1 00041 #endif 00042 00043 #include <inttypes.h> 00044 typedef int8_t flex_int8_t; 00045 typedef uint8_t flex_uint8_t; 00046 typedef int16_t flex_int16_t; 00047 typedef uint16_t flex_uint16_t; 00048 typedef int32_t flex_int32_t; 00049 typedef uint32_t flex_uint32_t; 00050 #else 00051 typedef signed char flex_int8_t; 00052 typedef short int flex_int16_t; 00053 typedef int flex_int32_t; 00054 typedef unsigned char flex_uint8_t; 00055 typedef unsigned short int flex_uint16_t; 00056 typedef unsigned int flex_uint32_t; 00057 00058 /* Limits of integral types. */ 00059 #ifndef INT8_MIN 00060 #define INT8_MIN (-128) 00061 #endif 00062 #ifndef INT16_MIN 00063 #define INT16_MIN (-32767-1) 00064 #endif 00065 #ifndef INT32_MIN 00066 #define INT32_MIN (-2147483647-1) 00067 #endif 00068 #ifndef INT8_MAX 00069 #define INT8_MAX (127) 00070 #endif 00071 #ifndef INT16_MAX 00072 #define INT16_MAX (32767) 00073 #endif 00074 #ifndef INT32_MAX 00075 #define INT32_MAX (2147483647) 00076 #endif 00077 #ifndef UINT8_MAX 00078 #define UINT8_MAX (255U) 00079 #endif 00080 #ifndef UINT16_MAX 00081 #define UINT16_MAX (65535U) 00082 #endif 00083 #ifndef UINT32_MAX 00084 #define UINT32_MAX (4294967295U) 00085 #endif 00086 00087 #endif /* ! C99 */ 00088 00089 #endif /* ! FLEXINT_H */ 00090 00091 #ifdef __cplusplus 00092 00093 /* The "const" storage-class-modifier is valid. */ 00094 #define YY_USE_CONST 00095 00096 #else /* ! __cplusplus */ 00097 00098 /* C99 requires __STDC__ to be defined as 1. */ 00099 #if defined (__STDC__) 00100 00101 #define YY_USE_CONST 00102 00103 #endif /* defined (__STDC__) */ 00104 #endif /* ! __cplusplus */ 00105 00106 #ifdef YY_USE_CONST 00107 #define yyconst const 00108 #else 00109 #define yyconst 00110 #endif 00111 00112 /* Returned upon end-of-file. */ 00113 #define YY_NULL 0 00114 00115 /* Promotes a possibly negative, possibly signed char to an unsigned 00116 * integer for use as an array index. If the signed char is negative, 00117 * we want to instead treat it as an 8-bit unsigned char, hence the 00118 * double cast. 00119 */ 00120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 00121 00122 /* Enter a start condition. This macro really ought to take a parameter, 00123 * but we do it the disgusting crufty way forced on us by the ()-less 00124 * definition of BEGIN. 00125 */ 00126 #define BEGIN (yy_start) = 1 + 2 * 00127 00128 /* Translate the current start state into a value that can be later handed 00129 * to BEGIN to return to the state. The YYSTATE alias is for lex 00130 * compatibility. 00131 */ 00132 #define YY_START (((yy_start) - 1) / 2) 00133 #define YYSTATE YY_START 00134 00135 /* Action number for EOF rule of a given start state. */ 00136 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 00137 00138 /* Special action meaning "start processing a new file". */ 00139 #define YY_NEW_FILE yyrestart(yyin ) 00140 00141 #define YY_END_OF_BUFFER_CHAR 0 00142 00143 /* Size of default input buffer. */ 00144 #ifndef YY_BUF_SIZE 00145 #ifdef __ia64__ 00146 /* On IA-64, the buffer size is 16k, not 8k. 00147 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 00148 * Ditto for the __ia64__ case accordingly. 00149 */ 00150 #define YY_BUF_SIZE 32768 00151 #else 00152 #define YY_BUF_SIZE 16384 00153 #endif /* __ia64__ */ 00154 #endif 00155 00156 /* The state buf must be large enough to hold one state per character in the main buffer. 00157 */ 00158 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 00159 00160 #ifndef YY_TYPEDEF_YY_BUFFER_STATE 00161 #define YY_TYPEDEF_YY_BUFFER_STATE 00162 typedef struct yy_buffer_state *YY_BUFFER_STATE; 00163 #endif 00164 00165 extern int yyleng; 00166 00167 extern FILE *yyin, *yyout; 00168 00169 #define EOB_ACT_CONTINUE_SCAN 0 00170 #define EOB_ACT_END_OF_FILE 1 00171 #define EOB_ACT_LAST_MATCH 2 00172 00173 #define YY_LESS_LINENO(n) 00174 00175 /* Return all but the first "n" matched characters back to the input stream. */ 00176 #define yyless(n) \ 00177 do \ 00178 { \ 00179 /* Undo effects of setting up yytext. */ \ 00180 int yyless_macro_arg = (n); \ 00181 YY_LESS_LINENO(yyless_macro_arg);\ 00182 *yy_cp = (yy_hold_char); \ 00183 YY_RESTORE_YY_MORE_OFFSET \ 00184 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 00185 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 00186 } \ 00187 while ( 0 ) 00188 00189 #define unput(c) yyunput( c, (yytext_ptr) ) 00190 00191 #ifndef YY_TYPEDEF_YY_SIZE_T 00192 #define YY_TYPEDEF_YY_SIZE_T 00193 typedef size_t yy_size_t; 00194 #endif 00195 00196 #ifndef YY_STRUCT_YY_BUFFER_STATE 00197 #define YY_STRUCT_YY_BUFFER_STATE 00198 struct yy_buffer_state 00199 { 00200 FILE *yy_input_file; 00201 00202 char *yy_ch_buf; /* input buffer */ 00203 char *yy_buf_pos; /* current position in input buffer */ 00204 00205 /* Size of input buffer in bytes, not including room for EOB 00206 * characters. 00207 */ 00208 yy_size_t yy_buf_size; 00209 00210 /* Number of characters read into yy_ch_buf, not including EOB 00211 * characters. 00212 */ 00213 int yy_n_chars; 00214 00215 /* Whether we "own" the buffer - i.e., we know we created it, 00216 * and can xrealloc() it to grow it, and should xfree() it to 00217 * delete it. 00218 */ 00219 int yy_is_our_buffer; 00220 00221 /* Whether this is an "interactive" input source; if so, and 00222 * if we're using stdio for input, then we want to use getc() 00223 * instead of fread(), to make sure we stop fetching input after 00224 * each newline. 00225 */ 00226 int yy_is_interactive; 00227 00228 /* Whether we're considered to be at the beginning of a line. 00229 * If so, '^' rules will be active on the next match, otherwise 00230 * not. 00231 */ 00232 int yy_at_bol; 00233 00234 int yy_bs_lineno; 00235 int yy_bs_column; 00237 /* Whether to try to fill the input buffer when we reach the 00238 * end of it. 00239 */ 00240 int yy_fill_buffer; 00241 00242 int yy_buffer_status; 00243 00244 #define YY_BUFFER_NEW 0 00245 #define YY_BUFFER_NORMAL 1 00246 /* When an EOF's been seen but there's still some text to process 00247 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 00248 * shouldn't try reading from the input source any more. We might 00249 * still have a bunch of tokens to match, though, because of 00250 * possible backing-up. 00251 * 00252 * When we actually see the EOF, we change the status to "new" 00253 * (via yyrestart()), so that the user can continue scanning by 00254 * just pointing yyin at a new input file. 00255 */ 00256 #define YY_BUFFER_EOF_PENDING 2 00257 00258 }; 00259 #endif /* !YY_STRUCT_YY_BUFFER_STATE */ 00260 00261 /* Stack of input buffers. */ 00262 static size_t yy_buffer_stack_top = 0; 00263 static size_t yy_buffer_stack_max = 0; 00264 static YY_BUFFER_STATE * yy_buffer_stack = 0; 00266 /* We provide macros for accessing buffer states in case in the 00267 * future we want to put the buffer states in a more general 00268 * "scanner state". 00269 * 00270 * Returns the top of the stack, or NULL. 00271 */ 00272 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 00273 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 00274 : NULL) 00275 00276 /* Same as previous macro, but useful when we know that the buffer stack is not 00277 * NULL or when we need an lvalue. For internal use only. 00278 */ 00279 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 00280 00281 /* yy_hold_char holds the character lost when yytext is formed. */ 00282 static char yy_hold_char; 00283 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00284 int yyleng; 00285 00286 /* Points to current character in buffer. */ 00287 static char *yy_c_buf_p = (char *) 0; 00288 static int yy_init = 0; /* whether we need to initialize */ 00289 static int yy_start = 0; /* start state number */ 00290 00291 /* Flag which is used to allow yywrap()'s to do buffer switches 00292 * instead of setting up a fresh yyin. A bit of a hack ... 00293 */ 00294 static int yy_did_buffer_switch_on_eof; 00295 00296 void yyrestart (FILE *input_file ); 00297 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00298 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); 00299 void yy_delete_buffer (YY_BUFFER_STATE b ); 00300 void yy_flush_buffer (YY_BUFFER_STATE b ); 00301 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); 00302 void yypop_buffer_state (void ); 00303 00304 static void yyensure_buffer_stack (void ); 00305 static void yy_load_buffer_state (void ); 00306 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00307 00308 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) 00309 00310 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); 00311 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); 00312 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); 00313 00314 void *yyalloc (yy_size_t ); 00315 void *yyxrealloc (void *,yy_size_t ); 00316 void yyfree (void * ); 00317 00318 #define yy_new_buffer yy_create_buffer 00319 00320 #define yy_set_interactive(is_interactive) \ 00321 { \ 00322 if ( ! YY_CURRENT_BUFFER ){ \ 00323 yyensure_buffer_stack (); \ 00324 YY_CURRENT_BUFFER_LVALUE = \ 00325 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 00326 } \ 00327 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 00328 } 00329 00330 #define yy_set_bol(at_bol) \ 00331 { \ 00332 if ( ! YY_CURRENT_BUFFER ){\ 00333 yyensure_buffer_stack (); \ 00334 YY_CURRENT_BUFFER_LVALUE = \ 00335 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 00336 } \ 00337 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 00338 } 00339 00340 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 00341 00342 /* Begin user sect3 */ 00343 00344 typedef unsigned char YY_CHAR; 00345 00346 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 00347 00348 typedef int yy_state_type; 00349 00350 extern int yylineno; 00351 00352 int yylineno = 1; 00353 00354 extern char *yytext; 00355 #define yytext_ptr yytext 00356 00357 static yy_state_type yy_get_previous_state (void ); 00358 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 00359 static int yy_get_next_buffer (void ); 00360 static void yy_fatal_error (yyconst char msg[] ); 00361 00362 /* Done after the current pattern has been matched and before the 00363 * corresponding action - sets up yytext. 00364 */ 00365 #define YY_DO_BEFORE_ACTION \ 00366 (yytext_ptr) = yy_bp; \ 00367 yyleng = (size_t) (yy_cp - yy_bp); \ 00368 (yy_hold_char) = *yy_cp; \ 00369 *yy_cp = '\0'; \ 00370 (yy_c_buf_p) = yy_cp; 00371 00372 #define YY_NUM_RULES 55 00373 #define YY_END_OF_BUFFER 56 00374 /* This struct is not used in this scanner, 00375 but its presence is necessary. */ 00376 struct yy_trans_info 00377 { 00378 flex_int32_t yy_verify; 00379 flex_int32_t yy_nxt; 00380 }; 00381 static yyconst flex_int16_t yy_accept[207] = 00382 { 0, 00383 0, 0, 0, 0, 56, 54, 1, 1, 15, 53, 00384 43, 54, 45, 46, 43, 44, 43, 43, 43, 4, 00385 4, 43, 43, 43, 43, 52, 49, 49, 49, 49, 00386 49, 49, 49, 49, 49, 49, 49, 42, 0, 14, 00387 0, 53, 0, 0, 0, 0, 0, 0, 0, 37, 00388 2, 0, 36, 0, 48, 48, 39, 0, 0, 4, 00389 0, 0, 51, 38, 40, 0, 35, 41, 0, 0, 00390 49, 0, 49, 49, 49, 49, 49, 16, 22, 49, 00391 49, 49, 49, 27, 49, 49, 49, 49, 49, 49, 00392 0, 14, 0, 12, 12, 34, 0, 2, 0, 48, 00393 00394 48, 0, 9, 0, 3, 7, 0, 49, 0, 0, 00395 0, 49, 19, 20, 49, 49, 23, 24, 25, 49, 00396 49, 29, 49, 49, 49, 49, 31, 0, 0, 0, 00397 0, 0, 0, 48, 47, 6, 0, 0, 9, 0, 00398 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00399 0, 0, 0, 49, 21, 49, 26, 49, 17, 30, 00400 49, 32, 0, 50, 0, 0, 0, 0, 49, 0, 00401 0, 0, 0, 0, 0, 0, 0, 33, 49, 49, 00402 0, 0, 5, 11, 0, 8, 0, 0, 0, 0, 00403 0, 0, 28, 49, 0, 5, 0, 8, 0, 0, 00404 00405 13, 0, 18, 10, 10, 0 00406 } ; 00407 00408 static yyconst flex_int32_t yy_ec[256] = 00409 { 0, 00410 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00411 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00412 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00413 1, 4, 5, 6, 7, 8, 5, 9, 10, 11, 00414 12, 13, 14, 15, 16, 17, 18, 19, 20, 20, 00415 20, 20, 20, 20, 20, 20, 20, 21, 22, 23, 00416 24, 25, 5, 26, 27, 28, 29, 30, 31, 32, 00417 33, 34, 35, 33, 36, 37, 38, 39, 40, 33, 00418 33, 41, 42, 43, 44, 33, 45, 46, 33, 33, 00419 47, 5, 48, 5, 49, 5, 50, 51, 29, 52, 00420 00421 53, 54, 33, 55, 56, 33, 57, 58, 59, 60, 00422 61, 33, 33, 62, 63, 64, 65, 33, 66, 67, 00423 33, 33, 26, 22, 26, 5, 1, 1, 1, 1, 00424 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00425 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00426 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00427 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00428 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00429 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00430 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00431 00432 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00434 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00435 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00436 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00437 1, 1, 1, 1, 1 00438 } ; 00439 00440 static yyconst flex_int32_t yy_meta[68] = 00441 { 0, 00442 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 00443 5, 5, 5, 5, 5, 5, 10, 5, 11, 11, 00444 5, 5, 12, 13, 14, 5, 15, 15, 15, 15, 00445 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 00446 16, 16, 16, 16, 16, 16, 5, 5, 17, 15, 00447 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 00448 16, 16, 16, 16, 16, 16, 16 00449 } ; 00450 00451 static yyconst flex_int16_t yy_base[229] = 00452 { 0, 00453 0, 0, 649, 638, 646, 1252, 1252, 1252, 62, 0, 00454 1252, 109, 1252, 1252, 623, 1252, 619, 175, 606, 174, 00455 180, 48, 604, 592, 590, 1252, 204, 71, 214, 186, 00456 235, 244, 304, 256, 39, 368, 40, 430, 179, 1252, 00457 195, 0, 602, 595, 592, 585, 574, 497, 72, 1252, 00458 0, 273, 1252, 0, 39, 0, 1252, 0, 66, 262, 00459 75, 0, 1252, 1252, 1252, 557, 1252, 1252, 284, 300, 00460 1252, 322, 329, 349, 358, 377, 339, 396, 412, 563, 00461 566, 575, 584, 587, 569, 596, 623, 616, 576, 617, 00462 571, 568, 334, 380, 1252, 562, 677, 0, 403, 0, 00463 00464 40, 89, 642, 71, 163, 0, 401, 672, 401, 723, 00465 0, 708, 741, 750, 637, 776, 785, 794, 797, 806, 00466 775, 827, 831, 843, 818, 819, 883, 415, 0, 712, 00467 399, 885, 352, 1252, 0, 191, 0, 202, 772, 170, 00468 243, 334, 222, 244, 247, 259, 766, 47, 209, 216, 00469 203, 251, 302, 892, 916, 890, 942, 715, 946, 958, 00470 930, 974, 274, 1252, 93, 344, 278, 310, 979, 256, 00471 264, 337, 270, 274, 352, 355, 215, 984, 995, 1000, 00472 299, 354, 589, 355, 223, 603, 209, 204, 198, 189, 00473 174, 101, 1004, 1016, 92, 634, 411, 644, 872, 1021, 00474 00475 717, 373, 1252, 793, 832, 1252, 1055, 1065, 1081, 1086, 00476 1102, 1119, 1136, 1139, 1146, 339, 560, 1153, 1169, 1181, 00477 1186, 1197, 1200, 1216, 634, 645, 1223, 1234 00478 } ; 00479 00480 static yyconst flex_int16_t yy_def[229] = 00481 { 0, 00482 206, 1, 1, 1, 206, 206, 206, 206, 207, 208, 00483 206, 206, 206, 206, 206, 206, 206, 209, 206, 206, 00484 206, 206, 210, 206, 206, 206, 211, 211, 211, 211, 00485 211, 211, 211, 211, 33, 211, 33, 206, 207, 206, 00486 207, 208, 212, 38, 38, 212, 206, 206, 212, 206, 00487 213, 209, 206, 214, 215, 215, 206, 216, 206, 206, 00488 206, 217, 206, 206, 206, 218, 206, 206, 206, 206, 00489 206, 219, 211, 211, 211, 211, 211, 211, 211, 211, 00490 211, 211, 211, 211, 36, 211, 211, 36, 33, 36, 00491 48, 220, 206, 206, 206, 48, 212, 213, 221, 215, 00492 00493 215, 222, 206, 206, 206, 217, 218, 206, 219, 206, 00494 223, 224, 211, 211, 33, 211, 211, 211, 211, 211, 00495 33, 211, 211, 211, 33, 33, 211, 206, 225, 206, 00496 206, 97, 221, 206, 215, 206, 226, 222, 206, 206, 00497 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00498 206, 206, 227, 224, 211, 33, 211, 36, 211, 211, 00499 36, 211, 206, 206, 212, 206, 228, 206, 206, 206, 00500 206, 206, 206, 206, 206, 206, 227, 211, 211, 211, 00501 212, 206, 206, 206, 228, 206, 206, 206, 206, 206, 00502 206, 206, 211, 211, 212, 206, 206, 206, 206, 206, 00503 00504 206, 206, 206, 206, 206, 0, 206, 206, 206, 206, 00505 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00506 206, 206, 206, 206, 206, 206, 206, 206 00507 } ; 00508 00509 static yyconst flex_int16_t yy_nxt[1320] = 00510 { 0, 00511 6, 7, 8, 7, 6, 9, 6, 10, 11, 12, 00512 13, 14, 15, 11, 16, 17, 18, 19, 20, 21, 00513 22, 11, 23, 24, 25, 26, 27, 28, 28, 28, 00514 29, 30, 28, 28, 31, 28, 28, 32, 33, 34, 00515 35, 28, 36, 28, 28, 37, 11, 11, 28, 27, 00516 28, 28, 29, 30, 28, 31, 28, 28, 32, 33, 00517 34, 35, 28, 36, 28, 28, 37, 40, 63, 86, 00518 73, 64, 69, 69, 70, 101, 135, 97, 73, 90, 00519 71, 94, 73, 73, 103, 103, 172, 72, 104, 105, 00520 105, 86, 73, 105, 105, 136, 101, 135, 181, 73, 00521 00522 90, 201, 93, 73, 73, 137, 169, 172, 41, 43, 00523 44, 44, 45, 46, 46, 46, 46, 46, 47, 46, 00524 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 00525 46, 46, 46, 46, 46, 48, 48, 48, 48, 48, 00526 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00527 48, 48, 48, 48, 48, 49, 46, 46, 48, 48, 00528 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00529 48, 48, 48, 48, 48, 48, 52, 52, 52, 169, 00530 58, 141, 141, 168, 40, 168, 58, 69, 69, 70, 00531 59, 53, 60, 60, 169, 71, 59, 54, 60, 60, 00532 00533 92, 55, 72, 169, 61, 69, 69, 70, 136, 169, 00534 61, 141, 77, 71, 169, 69, 69, 70, 137, 62, 00535 72, 166, 60, 71, 55, 41, 61, 169, 60, 184, 00536 72, 74, 61, 175, 142, 77, 69, 69, 70, 169, 00537 62, 41, 75, 166, 71, 69, 69, 70, 173, 169, 00538 76, 72, 169, 71, 74, 175, 174, 69, 69, 70, 00539 72, 141, 141, 75, 169, 71, 78, 142, 58, 173, 00540 142, 76, 72, 79, 52, 52, 52, 174, 59, 169, 00541 60, 60, 142, 80, 184, 69, 69, 69, 78, 206, 00542 176, 141, 61, 188, 79, 54, 84, 187, 85, 55, 00543 00544 72, 69, 69, 70, 80, 69, 69, 70, 93, 71, 00545 60, 176, 190, 71, 61, 188, 72, 84, 187, 85, 00546 72, 39, 55, 109, 109, 109, 169, 110, 186, 186, 00547 69, 69, 70, 190, 81, 130, 130, 130, 71, 169, 00548 69, 69, 70, 82, 111, 72, 195, 83, 71, 102, 00549 69, 69, 70, 102, 131, 72, 81, 182, 71, 69, 00550 69, 70, 183, 183, 82, 72, 189, 71, 83, 69, 00551 69, 70, 183, 183, 72, 116, 134, 71, 69, 69, 00552 70, 130, 130, 130, 72, 197, 71, 114, 189, 191, 00553 113, 204, 204, 72, 87, 192, 116, 69, 69, 70, 00554 00555 131, 88, 109, 109, 109, 71, 110, 197, 89, 114, 00556 191, 113, 72, 69, 69, 70, 192, 87, 115, 164, 00557 163, 71, 88, 111, 202, 108, 202, 134, 72, 89, 00558 43, 44, 44, 44, 43, 43, 43, 43, 43, 115, 00559 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 00560 43, 43, 43, 43, 43, 43, 91, 91, 91, 91, 00561 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 00562 91, 91, 91, 91, 91, 91, 43, 43, 43, 91, 00563 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 00564 91, 91, 91, 91, 91, 91, 91, 43, 43, 43, 00565 00566 43, 43, 43, 43, 43, 43, 94, 43, 43, 43, 00567 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 00568 43, 43, 43, 96, 96, 96, 96, 96, 96, 96, 00569 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 00570 96, 96, 96, 43, 43, 43, 96, 96, 96, 96, 00571 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 00572 96, 96, 96, 96, 69, 69, 70, 69, 69, 70, 00573 106, 93, 71, 128, 106, 71, 69, 69, 70, 72, 00574 93, 108, 72, 95, 71, 69, 69, 70, 69, 69, 00575 70, 72, 117, 71, 94, 73, 71, 69, 69, 70, 00576 00577 72, 94, 121, 72, 93, 71, 73, 196, 196, 73, 00578 118, 93, 72, 68, 117, 73, 67, 119, 73, 126, 00579 120, 198, 198, 121, 69, 69, 70, 65, 73, 57, 00580 73, 118, 71, 122, 51, 50, 73, 196, 119, 72, 00581 126, 120, 73, 73, 128, 206, 124, 38, 128, 73, 00582 73, 198, 196, 196, 122, 167, 125, 127, 38, 167, 00583 139, 139, 198, 198, 123, 73, 73, 155, 124, 206, 00584 73, 73, 140, 69, 69, 70, 73, 125, 127, 206, 00585 73, 71, 196, 206, 206, 123, 93, 206, 72, 155, 00586 139, 206, 198, 206, 140, 132, 132, 73, 206, 206, 00587 00588 206, 73, 206, 132, 132, 132, 132, 132, 132, 69, 00589 69, 70, 206, 130, 130, 130, 206, 71, 130, 130, 00590 130, 206, 206, 206, 72, 206, 132, 132, 132, 132, 00591 132, 142, 131, 206, 206, 143, 142, 131, 142, 206, 00592 144, 73, 69, 69, 70, 145, 142, 146, 73, 147, 00593 71, 69, 69, 70, 206, 179, 206, 72, 206, 71, 00594 148, 149, 150, 151, 73, 206, 72, 206, 152, 73, 00595 206, 206, 147, 206, 206, 206, 179, 69, 69, 70, 00596 206, 148, 149, 150, 151, 71, 69, 69, 70, 152, 00597 139, 139, 72, 170, 71, 69, 69, 70, 69, 69, 00598 00599 70, 72, 140, 71, 171, 158, 71, 69, 69, 70, 00600 72, 205, 205, 72, 73, 71, 170, 156, 73, 206, 00601 139, 206, 72, 206, 140, 171, 206, 158, 69, 69, 00602 70, 206, 69, 69, 70, 73, 71, 206, 156, 73, 00603 71, 205, 157, 72, 69, 69, 70, 72, 161, 162, 00604 205, 205, 71, 206, 206, 206, 206, 73, 73, 72, 00605 206, 73, 73, 157, 206, 206, 159, 206, 206, 206, 00606 161, 162, 206, 199, 199, 199, 206, 206, 73, 73, 00607 205, 160, 73, 73, 69, 69, 70, 159, 72, 206, 00608 203, 203, 71, 69, 69, 70, 206, 206, 206, 72, 00609 00610 206, 71, 160, 165, 165, 206, 206, 206, 72, 206, 00611 206, 165, 165, 165, 165, 165, 165, 69, 69, 70, 00612 178, 206, 206, 206, 206, 71, 206, 206, 206, 73, 00613 206, 206, 72, 73, 165, 165, 165, 165, 165, 206, 00614 206, 206, 178, 69, 69, 70, 206, 69, 69, 70, 00615 73, 71, 206, 206, 73, 71, 180, 206, 72, 69, 00616 69, 70, 72, 73, 206, 206, 206, 71, 206, 206, 00617 73, 206, 206, 206, 72, 69, 69, 70, 206, 180, 00618 69, 69, 70, 71, 73, 69, 69, 70, 71, 206, 00619 72, 73, 206, 71, 206, 72, 69, 69, 70, 206, 00620 00621 72, 69, 69, 70, 71, 69, 69, 70, 206, 71, 00622 206, 72, 206, 71, 206, 206, 72, 199, 199, 200, 00623 72, 206, 199, 199, 200, 71, 206, 206, 206, 194, 00624 71, 206, 72, 206, 206, 206, 193, 72, 206, 203, 00625 203, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00626 206, 194, 206, 206, 206, 206, 206, 193, 39, 39, 00627 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 00628 39, 39, 42, 206, 206, 42, 206, 206, 206, 42, 00629 42, 42, 56, 56, 56, 206, 206, 206, 206, 206, 00630 56, 206, 56, 206, 206, 56, 56, 56, 66, 206, 00631 00632 66, 66, 66, 73, 73, 73, 206, 206, 206, 206, 00633 73, 73, 73, 206, 206, 206, 73, 73, 73, 43, 00634 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 00635 43, 43, 43, 43, 43, 43, 98, 98, 206, 98, 00636 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 00637 98, 98, 98, 99, 99, 99, 100, 206, 206, 206, 00638 100, 100, 100, 107, 206, 206, 107, 107, 107, 107, 00639 112, 112, 112, 206, 112, 206, 206, 206, 206, 206, 00640 112, 206, 206, 112, 112, 112, 129, 206, 206, 206, 00641 206, 129, 206, 206, 206, 129, 133, 206, 206, 133, 00642 00643 133, 133, 133, 138, 206, 206, 138, 138, 206, 206, 00644 206, 138, 206, 138, 153, 153, 153, 154, 154, 154, 00645 206, 206, 206, 206, 154, 154, 154, 206, 206, 206, 00646 154, 154, 154, 177, 206, 206, 177, 177, 177, 177, 00647 185, 206, 206, 206, 185, 206, 206, 206, 185, 206, 00648 185, 5, 206, 206, 206, 206, 206, 206, 206, 206, 00649 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00650 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00651 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00652 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00653 00654 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00655 206, 206, 206, 206, 206, 206, 206, 206, 206 00656 } ; 00657 00658 static yyconst flex_int16_t yy_chk[1320] = 00659 { 0, 00660 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00661 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00662 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00663 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00664 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00665 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00666 1, 1, 1, 1, 1, 1, 1, 9, 22, 35, 00667 37, 22, 28, 28, 28, 55, 101, 49, 35, 37, 00668 28, 49, 35, 37, 59, 59, 148, 28, 61, 104, 00669 104, 35, 37, 61, 61, 102, 55, 101, 165, 35, 00670 00671 37, 195, 165, 35, 37, 102, 192, 148, 9, 12, 00672 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00673 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00674 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00675 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00676 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00677 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 00678 12, 12, 12, 12, 12, 12, 18, 18, 18, 191, 00679 20, 105, 105, 140, 39, 140, 21, 30, 30, 30, 00680 20, 18, 20, 20, 190, 30, 21, 18, 21, 21, 00681 00682 41, 18, 30, 189, 20, 27, 27, 27, 138, 188, 00683 21, 105, 30, 27, 187, 29, 29, 29, 138, 20, 00684 27, 136, 20, 29, 18, 39, 20, 143, 21, 185, 00685 29, 27, 21, 151, 143, 30, 31, 31, 31, 177, 00686 20, 41, 27, 136, 31, 32, 32, 32, 149, 144, 00687 29, 31, 145, 32, 27, 151, 150, 34, 34, 34, 00688 32, 141, 141, 27, 146, 34, 31, 144, 60, 149, 00689 145, 29, 34, 31, 52, 52, 52, 150, 60, 174, 00690 60, 60, 146, 32, 167, 69, 69, 69, 31, 52, 00691 152, 141, 60, 171, 31, 52, 34, 170, 34, 52, 00692 00693 69, 70, 70, 70, 32, 33, 33, 33, 181, 70, 00694 60, 152, 173, 33, 60, 171, 70, 34, 170, 34, 00695 33, 163, 52, 72, 72, 72, 153, 72, 168, 168, 00696 73, 73, 73, 173, 33, 93, 93, 93, 73, 142, 00697 77, 77, 77, 33, 72, 73, 181, 33, 77, 216, 00698 74, 74, 74, 216, 93, 77, 33, 166, 74, 75, 00699 75, 75, 166, 166, 33, 74, 172, 75, 33, 36, 00700 36, 36, 182, 182, 75, 77, 133, 36, 76, 76, 00701 76, 94, 94, 94, 36, 184, 76, 75, 172, 175, 00702 74, 202, 202, 76, 36, 176, 77, 78, 78, 78, 00703 00704 94, 36, 109, 109, 109, 78, 109, 184, 36, 75, 00705 175, 74, 78, 79, 79, 79, 176, 36, 76, 131, 00706 128, 79, 36, 109, 197, 107, 197, 99, 79, 36, 00707 38, 38, 38, 38, 38, 38, 38, 38, 38, 76, 00708 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 00709 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 00710 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 00711 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 00712 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 00713 38, 38, 38, 38, 38, 38, 38, 48, 48, 48, 00714 00715 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00716 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00717 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00718 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00719 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00720 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 00721 48, 48, 48, 48, 80, 80, 80, 81, 81, 81, 00722 217, 96, 80, 92, 217, 81, 82, 82, 82, 80, 00723 91, 66, 81, 47, 82, 83, 83, 83, 84, 84, 00724 84, 82, 80, 83, 46, 85, 84, 86, 86, 86, 00725 00726 83, 45, 85, 84, 44, 86, 89, 183, 183, 85, 00727 81, 43, 86, 25, 80, 89, 24, 82, 85, 89, 00728 83, 186, 186, 85, 87, 87, 87, 23, 89, 19, 00729 85, 81, 87, 86, 17, 15, 89, 183, 82, 87, 00730 89, 83, 88, 90, 225, 5, 88, 4, 225, 88, 00731 90, 186, 196, 196, 86, 226, 88, 90, 3, 226, 00732 103, 103, 198, 198, 87, 88, 90, 115, 88, 0, 00733 88, 90, 103, 108, 108, 108, 115, 88, 90, 0, 00734 115, 108, 196, 0, 0, 87, 97, 0, 108, 115, 00735 103, 0, 198, 0, 103, 97, 97, 115, 0, 0, 00736 00737 0, 115, 0, 97, 97, 97, 97, 97, 97, 112, 00738 112, 112, 0, 130, 130, 130, 0, 112, 201, 201, 00739 201, 0, 0, 0, 112, 0, 97, 97, 97, 97, 00740 97, 110, 130, 0, 0, 110, 110, 201, 110, 0, 00741 110, 158, 113, 113, 113, 110, 110, 110, 158, 110, 00742 113, 114, 114, 114, 0, 158, 0, 113, 0, 114, 00743 110, 110, 110, 110, 158, 0, 114, 0, 110, 158, 00744 0, 0, 110, 0, 0, 0, 158, 116, 116, 116, 00745 0, 110, 110, 110, 110, 116, 117, 117, 117, 110, 00746 139, 139, 116, 147, 117, 118, 118, 118, 119, 119, 00747 00748 119, 117, 139, 118, 147, 121, 119, 120, 120, 120, 00749 118, 204, 204, 119, 121, 120, 147, 116, 121, 0, 00750 139, 0, 120, 0, 139, 147, 0, 121, 122, 122, 00751 122, 0, 123, 123, 123, 121, 122, 0, 116, 121, 00752 123, 204, 120, 122, 124, 124, 124, 123, 125, 126, 00753 205, 205, 124, 0, 0, 0, 0, 125, 126, 124, 00754 0, 125, 126, 120, 0, 0, 123, 0, 0, 0, 00755 125, 126, 0, 199, 199, 199, 0, 0, 125, 126, 00756 205, 124, 125, 126, 127, 127, 127, 123, 199, 0, 00757 199, 199, 127, 154, 154, 154, 0, 0, 0, 127, 00758 00759 0, 154, 124, 132, 132, 0, 0, 0, 154, 0, 00760 0, 132, 132, 132, 132, 132, 132, 155, 155, 155, 00761 156, 0, 0, 0, 0, 155, 0, 0, 0, 156, 00762 0, 0, 155, 156, 132, 132, 132, 132, 132, 0, 00763 0, 0, 156, 157, 157, 157, 0, 159, 159, 159, 00764 156, 157, 0, 0, 156, 159, 161, 0, 157, 160, 00765 160, 160, 159, 161, 0, 0, 0, 160, 0, 0, 00766 161, 0, 0, 0, 160, 162, 162, 162, 0, 161, 00767 169, 169, 169, 162, 161, 178, 178, 178, 169, 0, 00768 162, 161, 0, 178, 0, 169, 179, 179, 179, 0, 00769 00770 178, 180, 180, 180, 179, 193, 193, 193, 0, 180, 00771 0, 179, 0, 193, 0, 0, 180, 194, 194, 194, 00772 193, 0, 200, 200, 200, 194, 0, 0, 0, 180, 00773 200, 0, 194, 0, 0, 0, 179, 200, 0, 200, 00774 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00775 0, 180, 0, 0, 0, 0, 0, 179, 207, 207, 00776 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 00777 207, 207, 208, 0, 0, 208, 0, 0, 0, 208, 00778 208, 208, 209, 209, 209, 0, 0, 0, 0, 0, 00779 209, 0, 209, 0, 0, 209, 209, 209, 210, 0, 00780 00781 210, 210, 210, 211, 211, 211, 0, 0, 0, 0, 00782 211, 211, 211, 0, 0, 0, 211, 211, 211, 212, 00783 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 00784 212, 212, 212, 212, 212, 212, 213, 213, 0, 213, 00785 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 00786 213, 213, 213, 214, 214, 214, 215, 0, 0, 0, 00787 215, 215, 215, 218, 0, 0, 218, 218, 218, 218, 00788 219, 219, 219, 0, 219, 0, 0, 0, 0, 0, 00789 219, 0, 0, 219, 219, 219, 220, 0, 0, 0, 00790 0, 220, 0, 0, 0, 220, 221, 0, 0, 221, 00791 00792 221, 221, 221, 222, 0, 0, 222, 222, 0, 0, 00793 0, 222, 0, 222, 223, 223, 223, 224, 224, 224, 00794 0, 0, 0, 0, 224, 224, 224, 0, 0, 0, 00795 224, 224, 224, 227, 0, 0, 227, 227, 227, 227, 00796 228, 0, 0, 0, 228, 0, 0, 0, 228, 0, 00797 228, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00798 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00799 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00800 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00801 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00802 00803 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 00804 206, 206, 206, 206, 206, 206, 206, 206, 206 00805 } ; 00806 00807 static yy_state_type yy_last_accepting_state; 00808 static char *yy_last_accepting_cpos; 00809 00810 extern int yy_flex_debug; 00811 int yy_flex_debug = 0; 00812 00813 /* The intent behind this definition is that it'll catch 00814 * any uses of REJECT which flex missed. 00815 */ 00816 #define REJECT reject_used_but_not_detected 00817 #define yymore() yymore_used_but_not_detected 00818 #define YY_MORE_ADJ 0 00819 #define YY_RESTORE_YY_MORE_OFFSET 00820 char *yytext; 00821 #line 1 "../../src/gdb/ada-lex.l" 00822 /* FLEX lexer for Ada expressions, for GDB. 00823 Copyright (C) 1994-2013 Free Software Foundation, Inc. 00824 00825 This file is part of GDB. 00826 00827 This program is free software; you can redistribute it and/or modify 00828 it under the terms of the GNU General Public License as published by 00829 the Free Software Foundation; either version 3 of the License, or 00830 (at your option) any later version. 00831 00832 This program is distributed in the hope that it will be useful, 00833 but WITHOUT ANY WARRANTY; without even the implied warranty of 00834 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00835 GNU General Public License for more details. 00836 00837 You should have received a copy of the GNU General Public License 00838 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00839 /*----------------------------------------------------------------------*/ 00840 /* The converted version of this file is to be included in ada-exp.y, */ 00841 /* the Ada parser for gdb. The function yylex obtains characters from */ 00842 /* the global pointer lexptr. It returns a syntactic category for */ 00843 /* each successive token and places a semantic value into yylval */ 00844 /* (ada-lval), defined by the parser. */ 00845 #line 43 "../../src/gdb/ada-lex.l" 00846 00847 #define NUMERAL_WIDTH 256 00848 #define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1)) 00849 00850 /* Temporary staging for numeric literals. */ 00851 static char numbuf[NUMERAL_WIDTH]; 00852 static void canonicalizeNumeral (char *s1, const char *); 00853 static struct stoken processString (const char*, int); 00854 static int processInt (const char *, const char *, const char *); 00855 static int processReal (const char *); 00856 static struct stoken processId (const char *, int); 00857 static int processAttribute (const char *); 00858 static int find_dot_all (const char *); 00859 static void rewind_to_char (int); 00860 00861 #undef YY_DECL 00862 #define YY_DECL static int yylex ( void ) 00863 00864 /* Flex generates a static function "input" which is not used. 00865 Defining YY_NO_INPUT comments it out. */ 00866 #define YY_NO_INPUT 00867 00868 #undef YY_INPUT 00869 #define YY_INPUT(BUF, RESULT, MAX_SIZE) \ 00870 if ( *lexptr == '\000' ) \ 00871 (RESULT) = YY_NULL; \ 00872 else \ 00873 { \ 00874 *(BUF) = *lexptr; \ 00875 (RESULT) = 1; \ 00876 lexptr += 1; \ 00877 } 00878 00879 static int find_dot_all (const char *); 00880 00881 00882 #line 883 "ada-lex.c" 00883 00884 #define INITIAL 0 00885 #define BEFORE_QUAL_QUOTE 1 00886 00887 #ifndef YY_NO_UNISTD_H 00888 /* Special case for "unistd.h", since it is non-ANSI. We include it way 00889 * down here because we want the user's section 1 to have been scanned first. 00890 * The user has a chance to override it with an option. 00891 */ 00892 #include <unistd.h> 00893 #endif 00894 00895 #ifndef YY_EXTRA_TYPE 00896 #define YY_EXTRA_TYPE void * 00897 #endif 00898 00899 static int yy_init_globals (void ); 00900 00901 /* Accessor methods to globals. 00902 These are made visible to non-reentrant scanners for convenience. */ 00903 00904 int yylex_destroy (void ); 00905 00906 int yyget_debug (void ); 00907 00908 void yyset_debug (int debug_flag ); 00909 00910 YY_EXTRA_TYPE yyget_extra (void ); 00911 00912 void yyset_extra (YY_EXTRA_TYPE user_defined ); 00913 00914 FILE *yyget_in (void ); 00915 00916 void yyset_in (FILE * in_str ); 00917 00918 FILE *yyget_out (void ); 00919 00920 void yyset_out (FILE * out_str ); 00921 00922 int yyget_leng (void ); 00923 00924 char *yyget_text (void ); 00925 00926 int yyget_lineno (void ); 00927 00928 void yyset_lineno (int line_number ); 00929 00930 /* Macros after this point can all be overridden by user definitions in 00931 * section 1. 00932 */ 00933 00934 #ifndef YY_SKIP_YYWRAP 00935 #ifdef __cplusplus 00936 extern "C" int yywrap (void ); 00937 #else 00938 extern int yywrap (void ); 00939 #endif 00940 #endif 00941 00942 static void yyunput (int c,char *buf_ptr ); 00943 00944 #ifndef yytext_ptr 00945 static void yy_flex_strncpy (char *,yyconst char *,int ); 00946 #endif 00947 00948 #ifdef YY_NEED_STRLEN 00949 static int yy_flex_strlen (yyconst char * ); 00950 #endif 00951 00952 #ifndef YY_NO_INPUT 00953 00954 #ifdef __cplusplus 00955 static int yyinput (void ); 00956 #else 00957 static int input (void ); 00958 #endif 00959 00960 #endif 00961 00962 /* Amount of stuff to slurp up with each read. */ 00963 #ifndef YY_READ_BUF_SIZE 00964 #ifdef __ia64__ 00965 /* On IA-64, the buffer size is 16k, not 8k */ 00966 #define YY_READ_BUF_SIZE 16384 00967 #else 00968 #define YY_READ_BUF_SIZE 8192 00969 #endif /* __ia64__ */ 00970 #endif 00971 00972 /* Copy whatever the last rule matched to the standard output. */ 00973 #ifndef ECHO 00974 /* This used to be an fputs(), but since the string might contain NUL's, 00975 * we now use fwrite(). 00976 */ 00977 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) 00978 #endif 00979 00980 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 00981 * is returned in "result". 00982 */ 00983 #ifndef YY_INPUT 00984 #define YY_INPUT(buf,result,max_size) \ 00985 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 00986 { \ 00987 int c = '*'; \ 00988 size_t n; \ 00989 for ( n = 0; n < max_size && \ 00990 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 00991 buf[n] = (char) c; \ 00992 if ( c == '\n' ) \ 00993 buf[n++] = (char) c; \ 00994 if ( c == EOF && ferror( yyin ) ) \ 00995 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 00996 result = n; \ 00997 } \ 00998 else \ 00999 { \ 01000 errno=0; \ 01001 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ 01002 { \ 01003 if( errno != EINTR) \ 01004 { \ 01005 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01006 break; \ 01007 } \ 01008 errno=0; \ 01009 clearerr(yyin); \ 01010 } \ 01011 }\ 01012 \ 01013 01014 #endif 01015 01016 /* No semi-colon after return; correct usage is to write "yyterminate();" - 01017 * we don't want an extra ';' after the "return" because that will cause 01018 * some compilers to complain about unreachable statements. 01019 */ 01020 #ifndef yyterminate 01021 #define yyterminate() return YY_NULL 01022 #endif 01023 01024 /* Number of entries by which start-condition stack grows. */ 01025 #ifndef YY_START_STACK_INCR 01026 #define YY_START_STACK_INCR 25 01027 #endif 01028 01029 /* Report a fatal error. */ 01030 #ifndef YY_FATAL_ERROR 01031 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 01032 #endif 01033 01034 /* end tables serialization structures and prototypes */ 01035 01036 /* Default declaration of generated scanner - a define so the user can 01037 * easily add parameters. 01038 */ 01039 #ifndef YY_DECL 01040 #define YY_DECL_IS_OURS 1 01041 01042 extern int yylex (void); 01043 01044 #define YY_DECL int yylex (void) 01045 #endif /* !YY_DECL */ 01046 01047 /* Code executed at the beginning of each rule, after yytext and yyleng 01048 * have been set up. 01049 */ 01050 #ifndef YY_USER_ACTION 01051 #define YY_USER_ACTION 01052 #endif 01053 01054 /* Code executed at the end of each rule. */ 01055 #ifndef YY_BREAK 01056 #define YY_BREAK break; 01057 #endif 01058 01059 #define YY_RULE_SETUP \ 01060 YY_USER_ACTION 01061 01064 YY_DECL 01065 { 01066 register yy_state_type yy_current_state; 01067 register char *yy_cp, *yy_bp; 01068 register int yy_act; 01069 01070 #line 84 "../../src/gdb/ada-lex.l" 01071 01072 01073 #line 1074 "ada-lex.c" 01074 01075 if ( !(yy_init) ) 01076 { 01077 (yy_init) = 1; 01078 01079 #ifdef YY_USER_INIT 01080 YY_USER_INIT; 01081 #endif 01082 01083 if ( ! (yy_start) ) 01084 (yy_start) = 1; /* first start state */ 01085 01086 if ( ! yyin ) 01087 yyin = stdin; 01088 01089 if ( ! yyout ) 01090 yyout = stdout; 01091 01092 if ( ! YY_CURRENT_BUFFER ) { 01093 yyensure_buffer_stack (); 01094 YY_CURRENT_BUFFER_LVALUE = 01095 yy_create_buffer(yyin,YY_BUF_SIZE ); 01096 } 01097 01098 yy_load_buffer_state( ); 01099 } 01100 01101 while ( 1 ) /* loops until end-of-file is reached */ 01102 { 01103 yy_cp = (yy_c_buf_p); 01104 01105 /* Support of yytext. */ 01106 *yy_cp = (yy_hold_char); 01107 01108 /* yy_bp points to the position in yy_ch_buf of the start of 01109 * the current run. 01110 */ 01111 yy_bp = yy_cp; 01112 01113 yy_current_state = (yy_start); 01114 yy_match: 01115 do 01116 { 01117 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 01118 if ( yy_accept[yy_current_state] ) 01119 { 01120 (yy_last_accepting_state) = yy_current_state; 01121 (yy_last_accepting_cpos) = yy_cp; 01122 } 01123 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 01124 { 01125 yy_current_state = (int) yy_def[yy_current_state]; 01126 if ( yy_current_state >= 207 ) 01127 yy_c = yy_meta[(unsigned int) yy_c]; 01128 } 01129 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 01130 ++yy_cp; 01131 } 01132 while ( yy_base[yy_current_state] != 1252 ); 01133 01134 yy_find_action: 01135 yy_act = yy_accept[yy_current_state]; 01136 if ( yy_act == 0 ) 01137 { /* have to back up */ 01138 yy_cp = (yy_last_accepting_cpos); 01139 yy_current_state = (yy_last_accepting_state); 01140 yy_act = yy_accept[yy_current_state]; 01141 } 01142 01143 YY_DO_BEFORE_ACTION; 01144 01145 do_action: /* This label is used only to access EOF actions. */ 01146 01147 switch ( yy_act ) 01148 { /* beginning of action switch */ 01149 case 0: /* must back up */ 01150 /* undo the effects of YY_DO_BEFORE_ACTION */ 01151 *yy_cp = (yy_hold_char); 01152 yy_cp = (yy_last_accepting_cpos); 01153 yy_current_state = (yy_last_accepting_state); 01154 goto yy_find_action; 01155 01156 case 1: 01157 /* rule 1 can match eol */ 01158 YY_RULE_SETUP 01159 #line 86 "../../src/gdb/ada-lex.l" 01160 { } 01161 YY_BREAK 01162 case 2: 01163 YY_RULE_SETUP 01164 #line 88 "../../src/gdb/ada-lex.l" 01165 { yyterminate(); } 01166 YY_BREAK 01167 case 3: 01168 YY_RULE_SETUP 01169 #line 90 "../../src/gdb/ada-lex.l" 01170 { 01171 canonicalizeNumeral (numbuf, yytext); 01172 return processInt (NULL, numbuf, strrchr(numbuf, 'e')+1); 01173 } 01174 YY_BREAK 01175 case 4: 01176 YY_RULE_SETUP 01177 #line 95 "../../src/gdb/ada-lex.l" 01178 { 01179 canonicalizeNumeral (numbuf, yytext); 01180 return processInt (NULL, numbuf, NULL); 01181 } 01182 YY_BREAK 01183 case 5: 01184 YY_RULE_SETUP 01185 #line 100 "../../src/gdb/ada-lex.l" 01186 { 01187 canonicalizeNumeral (numbuf, yytext); 01188 return processInt (numbuf, 01189 strchr (numbuf, '#') + 1, 01190 strrchr(numbuf, '#') + 1); 01191 } 01192 YY_BREAK 01193 case 6: 01194 YY_RULE_SETUP 01195 #line 107 "../../src/gdb/ada-lex.l" 01196 { 01197 canonicalizeNumeral (numbuf, yytext); 01198 return processInt (numbuf, strchr (numbuf, '#') + 1, NULL); 01199 } 01200 YY_BREAK 01201 case 7: 01202 YY_RULE_SETUP 01203 #line 112 "../../src/gdb/ada-lex.l" 01204 { 01205 canonicalizeNumeral (numbuf, yytext+2); 01206 return processInt ("16#", numbuf, NULL); 01207 } 01208 YY_BREAK 01209 case 8: 01210 YY_RULE_SETUP 01211 #line 118 "../../src/gdb/ada-lex.l" 01212 { 01213 canonicalizeNumeral (numbuf, yytext); 01214 return processReal (numbuf); 01215 } 01216 YY_BREAK 01217 case 9: 01218 YY_RULE_SETUP 01219 #line 123 "../../src/gdb/ada-lex.l" 01220 { 01221 canonicalizeNumeral (numbuf, yytext); 01222 return processReal (numbuf); 01223 } 01224 YY_BREAK 01225 case 10: 01226 YY_RULE_SETUP 01227 #line 128 "../../src/gdb/ada-lex.l" 01228 { 01229 error (_("Based real literals not implemented yet.")); 01230 } 01231 YY_BREAK 01232 case 11: 01233 YY_RULE_SETUP 01234 #line 132 "../../src/gdb/ada-lex.l" 01235 { 01236 error (_("Based real literals not implemented yet.")); 01237 } 01238 YY_BREAK 01239 case 12: 01240 YY_RULE_SETUP 01241 #line 136 "../../src/gdb/ada-lex.l" 01242 { 01243 yylval.typed_val.type = type_char (); 01244 yylval.typed_val.val = yytext[1]; 01245 return CHARLIT; 01246 } 01247 YY_BREAK 01248 case 13: 01249 YY_RULE_SETUP 01250 #line 142 "../../src/gdb/ada-lex.l" 01251 { 01252 int v; 01253 yylval.typed_val.type = type_char (); 01254 sscanf (yytext+3, "%2x", &v); 01255 yylval.typed_val.val = v; 01256 return CHARLIT; 01257 } 01258 YY_BREAK 01259 case 14: 01260 YY_RULE_SETUP 01261 #line 150 "../../src/gdb/ada-lex.l" 01262 { 01263 yylval.sval = processString (yytext+1, yyleng-2); 01264 return STRING; 01265 } 01266 YY_BREAK 01267 case 15: 01268 YY_RULE_SETUP 01269 #line 155 "../../src/gdb/ada-lex.l" 01270 { 01271 error (_("ill-formed or non-terminated string literal")); 01272 } 01273 YY_BREAK 01274 case 16: 01275 YY_RULE_SETUP 01276 #line 160 "../../src/gdb/ada-lex.l" 01277 { 01278 rewind_to_char ('i'); 01279 return 0; 01280 } 01281 YY_BREAK 01282 case 17: 01283 YY_RULE_SETUP 01284 #line 165 "../../src/gdb/ada-lex.l" 01285 { 01286 rewind_to_char ('t'); 01287 return 0; 01288 } 01289 YY_BREAK 01290 case 18: 01291 /* rule 18 can match eol */ 01292 YY_RULE_SETUP 01293 #line 170 "../../src/gdb/ada-lex.l" 01294 { 01295 /* This keyword signals the end of the expression and 01296 will be processed separately. */ 01297 rewind_to_char ('t'); 01298 return 0; 01299 } 01300 YY_BREAK 01301 /* ADA KEYWORDS */ 01302 case 19: 01303 YY_RULE_SETUP 01304 #line 179 "../../src/gdb/ada-lex.l" 01305 { return ABS; } 01306 YY_BREAK 01307 case 20: 01308 YY_RULE_SETUP 01309 #line 180 "../../src/gdb/ada-lex.l" 01310 { return _AND_; } 01311 YY_BREAK 01312 case 21: 01313 YY_RULE_SETUP 01314 #line 181 "../../src/gdb/ada-lex.l" 01315 { return ELSE; } 01316 YY_BREAK 01317 case 22: 01318 YY_RULE_SETUP 01319 #line 182 "../../src/gdb/ada-lex.l" 01320 { return IN; } 01321 YY_BREAK 01322 case 23: 01323 YY_RULE_SETUP 01324 #line 183 "../../src/gdb/ada-lex.l" 01325 { return MOD; } 01326 YY_BREAK 01327 case 24: 01328 YY_RULE_SETUP 01329 #line 184 "../../src/gdb/ada-lex.l" 01330 { return NEW; } 01331 YY_BREAK 01332 case 25: 01333 YY_RULE_SETUP 01334 #line 185 "../../src/gdb/ada-lex.l" 01335 { return NOT; } 01336 YY_BREAK 01337 case 26: 01338 YY_RULE_SETUP 01339 #line 186 "../../src/gdb/ada-lex.l" 01340 { return NULL_PTR; } 01341 YY_BREAK 01342 case 27: 01343 YY_RULE_SETUP 01344 #line 187 "../../src/gdb/ada-lex.l" 01345 { return OR; } 01346 YY_BREAK 01347 case 28: 01348 YY_RULE_SETUP 01349 #line 188 "../../src/gdb/ada-lex.l" 01350 { return OTHERS; } 01351 YY_BREAK 01352 case 29: 01353 YY_RULE_SETUP 01354 #line 189 "../../src/gdb/ada-lex.l" 01355 { return REM; } 01356 YY_BREAK 01357 case 30: 01358 YY_RULE_SETUP 01359 #line 190 "../../src/gdb/ada-lex.l" 01360 { return THEN; } 01361 YY_BREAK 01362 case 31: 01363 YY_RULE_SETUP 01364 #line 191 "../../src/gdb/ada-lex.l" 01365 { return XOR; } 01366 YY_BREAK 01367 /* BOOLEAN "KEYWORDS" */ 01368 /* True and False are not keywords in Ada, but rather enumeration constants. 01369 However, the boolean type is no longer represented as an enum, so True 01370 and False are no longer defined in symbol tables. We compromise by 01371 making them keywords (when bare). */ 01372 case 32: 01373 YY_RULE_SETUP 01374 #line 200 "../../src/gdb/ada-lex.l" 01375 { return TRUEKEYWORD; } 01376 YY_BREAK 01377 case 33: 01378 YY_RULE_SETUP 01379 #line 201 "../../src/gdb/ada-lex.l" 01380 { return FALSEKEYWORD; } 01381 YY_BREAK 01382 /* ATTRIBUTES */ 01383 case 34: 01384 /* rule 34 can match eol */ 01385 YY_RULE_SETUP 01386 #line 205 "../../src/gdb/ada-lex.l" 01387 { return processAttribute (yytext+1); } 01388 YY_BREAK 01389 /* PUNCTUATION */ 01390 case 35: 01391 YY_RULE_SETUP 01392 #line 209 "../../src/gdb/ada-lex.l" 01393 { return ARROW; } 01394 YY_BREAK 01395 case 36: 01396 YY_RULE_SETUP 01397 #line 210 "../../src/gdb/ada-lex.l" 01398 { return DOTDOT; } 01399 YY_BREAK 01400 case 37: 01401 YY_RULE_SETUP 01402 #line 211 "../../src/gdb/ada-lex.l" 01403 { return STARSTAR; } 01404 YY_BREAK 01405 case 38: 01406 YY_RULE_SETUP 01407 #line 212 "../../src/gdb/ada-lex.l" 01408 { return ASSIGN; } 01409 YY_BREAK 01410 case 39: 01411 YY_RULE_SETUP 01412 #line 213 "../../src/gdb/ada-lex.l" 01413 { return NOTEQUAL; } 01414 YY_BREAK 01415 case 40: 01416 YY_RULE_SETUP 01417 #line 214 "../../src/gdb/ada-lex.l" 01418 { return LEQ; } 01419 YY_BREAK 01420 case 41: 01421 YY_RULE_SETUP 01422 #line 215 "../../src/gdb/ada-lex.l" 01423 { return GEQ; } 01424 YY_BREAK 01425 case 42: 01426 YY_RULE_SETUP 01427 #line 217 "../../src/gdb/ada-lex.l" 01428 { BEGIN INITIAL; return '\''; } 01429 YY_BREAK 01430 case 43: 01431 YY_RULE_SETUP 01432 #line 219 "../../src/gdb/ada-lex.l" 01433 { return yytext[0]; } 01434 YY_BREAK 01435 case 44: 01436 YY_RULE_SETUP 01437 #line 221 "../../src/gdb/ada-lex.l" 01438 { if (paren_depth == 0 && comma_terminates) 01439 { 01440 rewind_to_char (','); 01441 return 0; 01442 } 01443 else 01444 return ','; 01445 } 01446 YY_BREAK 01447 case 45: 01448 YY_RULE_SETUP 01449 #line 230 "../../src/gdb/ada-lex.l" 01450 { paren_depth += 1; return '('; } 01451 YY_BREAK 01452 case 46: 01453 YY_RULE_SETUP 01454 #line 231 "../../src/gdb/ada-lex.l" 01455 { if (paren_depth == 0) 01456 { 01457 rewind_to_char (')'); 01458 return 0; 01459 } 01460 else 01461 { 01462 paren_depth -= 1; 01463 return ')'; 01464 } 01465 } 01466 YY_BREAK 01467 case 47: 01468 /* rule 47 can match eol */ 01469 YY_RULE_SETUP 01470 #line 243 "../../src/gdb/ada-lex.l" 01471 { return DOT_ALL; } 01472 YY_BREAK 01473 case 48: 01474 /* rule 48 can match eol */ 01475 YY_RULE_SETUP 01476 #line 245 "../../src/gdb/ada-lex.l" 01477 { 01478 yylval.sval = processId (yytext+1, yyleng-1); 01479 return DOT_ID; 01480 } 01481 YY_BREAK 01482 case 49: 01483 /* rule 49 can match eol */ 01484 YY_RULE_SETUP 01485 #line 250 "../../src/gdb/ada-lex.l" 01486 { 01487 int all_posn = find_dot_all (yytext); 01488 01489 if (all_posn == -1 && yytext[yyleng-1] == '\'') 01490 { 01491 BEGIN BEFORE_QUAL_QUOTE; 01492 yyless (yyleng-1); 01493 } 01494 else if (all_posn >= 0) 01495 yyless (all_posn); 01496 yylval.sval = processId (yytext, yyleng); 01497 return NAME; 01498 } 01499 YY_BREAK 01500 /* GDB EXPRESSION CONSTRUCTS */ 01501 case 50: 01502 /* rule 50 can match eol */ 01503 YY_RULE_SETUP 01504 #line 267 "../../src/gdb/ada-lex.l" 01505 { 01506 yyless (yyleng - 2); 01507 yylval.sval = processId (yytext, yyleng); 01508 return NAME; 01509 } 01510 YY_BREAK 01511 case 51: 01512 YY_RULE_SETUP 01513 #line 273 "../../src/gdb/ada-lex.l" 01514 { return COLONCOLON; } 01515 YY_BREAK 01516 case 52: 01517 YY_RULE_SETUP 01518 #line 275 "../../src/gdb/ada-lex.l" 01519 { return yytext[0]; } 01520 YY_BREAK 01521 /* REGISTERS AND GDB CONVENIENCE VARIABLES */ 01522 case 53: 01523 YY_RULE_SETUP 01524 #line 279 "../../src/gdb/ada-lex.l" 01525 { 01526 yylval.sval.ptr = yytext; 01527 yylval.sval.length = yyleng; 01528 return SPECIAL_VARIABLE; 01529 } 01530 YY_BREAK 01531 /* CATCH-ALL ERROR CASE */ 01532 case 54: 01533 YY_RULE_SETUP 01534 #line 287 "../../src/gdb/ada-lex.l" 01535 { error (_("Invalid character '%s' in expression."), yytext); } 01536 YY_BREAK 01537 case 55: 01538 YY_RULE_SETUP 01539 #line 288 "../../src/gdb/ada-lex.l" 01540 YY_FATAL_ERROR( "flex scanner jammed" ); 01541 YY_BREAK 01542 #line 1543 "ada-lex.c" 01543 case YY_STATE_EOF(INITIAL): 01544 case YY_STATE_EOF(BEFORE_QUAL_QUOTE): 01545 yyterminate(); 01546 01547 case YY_END_OF_BUFFER: 01548 { 01549 /* Amount of text matched not including the EOB char. */ 01550 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 01551 01552 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 01553 *yy_cp = (yy_hold_char); 01554 YY_RESTORE_YY_MORE_OFFSET 01555 01556 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 01557 { 01558 /* We're scanning a new file or input source. It's 01559 * possible that this happened because the user 01560 * just pointed yyin at a new source and called 01561 * yylex(). If so, then we have to assure 01562 * consistency between YY_CURRENT_BUFFER and our 01563 * globals. Here is the right place to do so, because 01564 * this is the first action (other than possibly a 01565 * back-up) that will match for the new input source. 01566 */ 01567 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 01568 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 01569 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 01570 } 01571 01572 /* Note that here we test for yy_c_buf_p "<=" to the position 01573 * of the first EOB in the buffer, since yy_c_buf_p will 01574 * already have been incremented past the NUL character 01575 * (since all states make transitions on EOB to the 01576 * end-of-buffer state). Contrast this with the test 01577 * in input(). 01578 */ 01579 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 01580 { /* This was really a NUL. */ 01581 yy_state_type yy_next_state; 01582 01583 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 01584 01585 yy_current_state = yy_get_previous_state( ); 01586 01587 /* Okay, we're now positioned to make the NUL 01588 * transition. We couldn't have 01589 * yy_get_previous_state() go ahead and do it 01590 * for us because it doesn't know how to deal 01591 * with the possibility of jamming (and we don't 01592 * want to build jamming into it because then it 01593 * will run more slowly). 01594 */ 01595 01596 yy_next_state = yy_try_NUL_trans( yy_current_state ); 01597 01598 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01599 01600 if ( yy_next_state ) 01601 { 01602 /* Consume the NUL. */ 01603 yy_cp = ++(yy_c_buf_p); 01604 yy_current_state = yy_next_state; 01605 goto yy_match; 01606 } 01607 01608 else 01609 { 01610 yy_cp = (yy_c_buf_p); 01611 goto yy_find_action; 01612 } 01613 } 01614 01615 else switch ( yy_get_next_buffer( ) ) 01616 { 01617 case EOB_ACT_END_OF_FILE: 01618 { 01619 (yy_did_buffer_switch_on_eof) = 0; 01620 01621 if ( yywrap( ) ) 01622 { 01623 /* Note: because we've taken care in 01624 * yy_get_next_buffer() to have set up 01625 * yytext, we can now set up 01626 * yy_c_buf_p so that if some total 01627 * hoser (like flex itself) wants to 01628 * call the scanner after we return the 01629 * YY_NULL, it'll still work - another 01630 * YY_NULL will get returned. 01631 */ 01632 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 01633 01634 yy_act = YY_STATE_EOF(YY_START); 01635 goto do_action; 01636 } 01637 01638 else 01639 { 01640 if ( ! (yy_did_buffer_switch_on_eof) ) 01641 YY_NEW_FILE; 01642 } 01643 break; 01644 } 01645 01646 case EOB_ACT_CONTINUE_SCAN: 01647 (yy_c_buf_p) = 01648 (yytext_ptr) + yy_amount_of_matched_text; 01649 01650 yy_current_state = yy_get_previous_state( ); 01651 01652 yy_cp = (yy_c_buf_p); 01653 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01654 goto yy_match; 01655 01656 case EOB_ACT_LAST_MATCH: 01657 (yy_c_buf_p) = 01658 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 01659 01660 yy_current_state = yy_get_previous_state( ); 01661 01662 yy_cp = (yy_c_buf_p); 01663 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01664 goto yy_find_action; 01665 } 01666 break; 01667 } 01668 01669 default: 01670 YY_FATAL_ERROR( 01671 "fatal flex scanner internal error--no action found" ); 01672 } /* end of action switch */ 01673 } /* end of scanning one token */ 01674 } /* end of yylex */ 01675 01676 /* yy_get_next_buffer - try to read in a new buffer 01677 * 01678 * Returns a code representing an action: 01679 * EOB_ACT_LAST_MATCH - 01680 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 01681 * EOB_ACT_END_OF_FILE - end of file 01682 */ 01683 static int yy_get_next_buffer (void) 01684 { 01685 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 01686 register char *source = (yytext_ptr); 01687 register int number_to_move, i; 01688 int ret_val; 01689 01690 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 01691 YY_FATAL_ERROR( 01692 "fatal flex scanner internal error--end of buffer missed" ); 01693 01694 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 01695 { /* Don't try to fill the buffer, so this is an EOF. */ 01696 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 01697 { 01698 /* We matched a single character, the EOB, so 01699 * treat this as a final EOF. 01700 */ 01701 return EOB_ACT_END_OF_FILE; 01702 } 01703 01704 else 01705 { 01706 /* We matched some text prior to the EOB, first 01707 * process it. 01708 */ 01709 return EOB_ACT_LAST_MATCH; 01710 } 01711 } 01712 01713 /* Try to read more data. */ 01714 01715 /* First move last chars to start of buffer. */ 01716 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 01717 01718 for ( i = 0; i < number_to_move; ++i ) 01719 *(dest++) = *(source++); 01720 01721 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 01722 /* don't do the read, it's not guaranteed to return an EOF, 01723 * just force an EOF 01724 */ 01725 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 01726 01727 else 01728 { 01729 int num_to_read = 01730 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 01731 01732 while ( num_to_read <= 0 ) 01733 { /* Not enough room in the buffer - grow it. */ 01734 01735 /* just a shorter name for the current buffer */ 01736 YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 01737 01738 int yy_c_buf_p_offset = 01739 (int) ((yy_c_buf_p) - b->yy_ch_buf); 01740 01741 if ( b->yy_is_our_buffer ) 01742 { 01743 int new_size = b->yy_buf_size * 2; 01744 01745 if ( new_size <= 0 ) 01746 b->yy_buf_size += b->yy_buf_size / 8; 01747 else 01748 b->yy_buf_size *= 2; 01749 01750 b->yy_ch_buf = (char *) 01751 /* Include room in for 2 EOB chars. */ 01752 yyxrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); 01753 } 01754 else 01755 /* Can't grow it, we don't own it. */ 01756 b->yy_ch_buf = 0; 01757 01758 if ( ! b->yy_ch_buf ) 01759 YY_FATAL_ERROR( 01760 "fatal error - scanner input buffer overflow" ); 01761 01762 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 01763 01764 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 01765 number_to_move - 1; 01766 01767 } 01768 01769 if ( num_to_read > YY_READ_BUF_SIZE ) 01770 num_to_read = YY_READ_BUF_SIZE; 01771 01772 /* Read in more data. */ 01773 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 01774 (yy_n_chars), (size_t) num_to_read ); 01775 01776 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 01777 } 01778 01779 if ( (yy_n_chars) == 0 ) 01780 { 01781 if ( number_to_move == YY_MORE_ADJ ) 01782 { 01783 ret_val = EOB_ACT_END_OF_FILE; 01784 yyrestart(yyin ); 01785 } 01786 01787 else 01788 { 01789 ret_val = EOB_ACT_LAST_MATCH; 01790 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 01791 YY_BUFFER_EOF_PENDING; 01792 } 01793 } 01794 01795 else 01796 ret_val = EOB_ACT_CONTINUE_SCAN; 01797 01798 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 01799 /* Extend the array by 50%, plus the number we really need. */ 01800 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); 01801 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyxrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); 01802 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 01803 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 01804 } 01805 01806 (yy_n_chars) += number_to_move; 01807 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 01808 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 01809 01810 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 01811 01812 return ret_val; 01813 } 01814 01815 /* yy_get_previous_state - get the state just before the EOB char was reached */ 01816 01817 static yy_state_type yy_get_previous_state (void) 01818 { 01819 register yy_state_type yy_current_state; 01820 register char *yy_cp; 01821 01822 yy_current_state = (yy_start); 01823 01824 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 01825 { 01826 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 01827 if ( yy_accept[yy_current_state] ) 01828 { 01829 (yy_last_accepting_state) = yy_current_state; 01830 (yy_last_accepting_cpos) = yy_cp; 01831 } 01832 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 01833 { 01834 yy_current_state = (int) yy_def[yy_current_state]; 01835 if ( yy_current_state >= 207 ) 01836 yy_c = yy_meta[(unsigned int) yy_c]; 01837 } 01838 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 01839 } 01840 01841 return yy_current_state; 01842 } 01843 01844 /* yy_try_NUL_trans - try to make a transition on the NUL character 01845 * 01846 * synopsis 01847 * next_state = yy_try_NUL_trans( current_state ); 01848 */ 01849 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 01850 { 01851 register int yy_is_jam; 01852 register char *yy_cp = (yy_c_buf_p); 01853 01854 register YY_CHAR yy_c = 1; 01855 if ( yy_accept[yy_current_state] ) 01856 { 01857 (yy_last_accepting_state) = yy_current_state; 01858 (yy_last_accepting_cpos) = yy_cp; 01859 } 01860 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 01861 { 01862 yy_current_state = (int) yy_def[yy_current_state]; 01863 if ( yy_current_state >= 207 ) 01864 yy_c = yy_meta[(unsigned int) yy_c]; 01865 } 01866 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 01867 yy_is_jam = (yy_current_state == 206); 01868 01869 return yy_is_jam ? 0 : yy_current_state; 01870 } 01871 01872 static void yyunput (int c, register char * yy_bp ) 01873 { 01874 register char *yy_cp; 01875 01876 yy_cp = (yy_c_buf_p); 01877 01878 /* undo effects of setting up yytext */ 01879 *yy_cp = (yy_hold_char); 01880 01881 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 01882 { /* need to shift things up to make room */ 01883 /* +2 for EOB chars. */ 01884 register int number_to_move = (yy_n_chars) + 2; 01885 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 01886 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 01887 register char *source = 01888 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 01889 01890 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 01891 *--dest = *--source; 01892 01893 yy_cp += (int) (dest - source); 01894 yy_bp += (int) (dest - source); 01895 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 01896 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 01897 01898 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 01899 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 01900 } 01901 01902 *--yy_cp = (char) c; 01903 01904 (yytext_ptr) = yy_bp; 01905 (yy_hold_char) = *yy_cp; 01906 (yy_c_buf_p) = yy_cp; 01907 } 01908 01909 #ifndef YY_NO_INPUT 01910 #ifdef __cplusplus 01911 static int yyinput (void) 01912 #else 01913 static int input (void) 01914 #endif 01915 01916 { 01917 int c; 01918 01919 *(yy_c_buf_p) = (yy_hold_char); 01920 01921 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 01922 { 01923 /* yy_c_buf_p now points to the character we want to return. 01924 * If this occurs *before* the EOB characters, then it's a 01925 * valid NUL; if not, then we've hit the end of the buffer. 01926 */ 01927 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 01928 /* This was really a NUL. */ 01929 *(yy_c_buf_p) = '\0'; 01930 01931 else 01932 { /* need more input */ 01933 int offset = (yy_c_buf_p) - (yytext_ptr); 01934 ++(yy_c_buf_p); 01935 01936 switch ( yy_get_next_buffer( ) ) 01937 { 01938 case EOB_ACT_LAST_MATCH: 01939 /* This happens because yy_g_n_b() 01940 * sees that we've accumulated a 01941 * token and flags that we need to 01942 * try matching the token before 01943 * proceeding. But for input(), 01944 * there's no matching to consider. 01945 * So convert the EOB_ACT_LAST_MATCH 01946 * to EOB_ACT_END_OF_FILE. 01947 */ 01948 01949 /* Reset buffer status. */ 01950 yyrestart(yyin ); 01951 01952 /*FALLTHROUGH*/ 01953 01954 case EOB_ACT_END_OF_FILE: 01955 { 01956 if ( yywrap( ) ) 01957 return EOF; 01958 01959 if ( ! (yy_did_buffer_switch_on_eof) ) 01960 YY_NEW_FILE; 01961 #ifdef __cplusplus 01962 return yyinput(); 01963 #else 01964 return input(); 01965 #endif 01966 } 01967 01968 case EOB_ACT_CONTINUE_SCAN: 01969 (yy_c_buf_p) = (yytext_ptr) + offset; 01970 break; 01971 } 01972 } 01973 } 01974 01975 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 01976 *(yy_c_buf_p) = '\0'; /* preserve yytext */ 01977 (yy_hold_char) = *++(yy_c_buf_p); 01978 01979 return c; 01980 } 01981 #endif /* ifndef YY_NO_INPUT */ 01982 01988 void yyrestart (FILE * input_file ) 01989 { 01990 01991 if ( ! YY_CURRENT_BUFFER ){ 01992 yyensure_buffer_stack (); 01993 YY_CURRENT_BUFFER_LVALUE = 01994 yy_create_buffer(yyin,YY_BUF_SIZE ); 01995 } 01996 01997 yy_init_buffer(YY_CURRENT_BUFFER,input_file ); 01998 yy_load_buffer_state( ); 01999 } 02000 02005 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 02006 { 02007 02008 /* TODO. We should be able to replace this entire function body 02009 * with 02010 * yypop_buffer_state(); 02011 * yypush_buffer_state(new_buffer); 02012 */ 02013 yyensure_buffer_stack (); 02014 if ( YY_CURRENT_BUFFER == new_buffer ) 02015 return; 02016 02017 if ( YY_CURRENT_BUFFER ) 02018 { 02019 /* Flush out information for old buffer. */ 02020 *(yy_c_buf_p) = (yy_hold_char); 02021 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02022 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02023 } 02024 02025 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02026 yy_load_buffer_state( ); 02027 02028 /* We don't actually know whether we did this switch during 02029 * EOF (yywrap()) processing, but the only time this flag 02030 * is looked at is after yywrap() is called, so it's safe 02031 * to go ahead and always set it. 02032 */ 02033 (yy_did_buffer_switch_on_eof) = 1; 02034 } 02035 02036 static void yy_load_buffer_state (void) 02037 { 02038 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 02039 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 02040 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 02041 (yy_hold_char) = *(yy_c_buf_p); 02042 } 02043 02050 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) 02051 { 02052 YY_BUFFER_STATE b; 02053 02054 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 02055 if ( ! b ) 02056 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 02057 02058 b->yy_buf_size = size; 02059 02060 /* yy_ch_buf has to be 2 characters longer than the size given because 02061 * we need to put in 2 end-of-buffer characters. 02062 */ 02063 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); 02064 if ( ! b->yy_ch_buf ) 02065 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 02066 02067 b->yy_is_our_buffer = 1; 02068 02069 yy_init_buffer(b,file ); 02070 02071 return b; 02072 } 02073 02078 void yy_delete_buffer (YY_BUFFER_STATE b ) 02079 { 02080 02081 if ( ! b ) 02082 return; 02083 02084 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 02085 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 02086 02087 if ( b->yy_is_our_buffer ) 02088 yyfree((void *) b->yy_ch_buf ); 02089 02090 yyfree((void *) b ); 02091 } 02092 02093 #ifndef __cplusplus 02094 extern int isatty (int ); 02095 #endif /* __cplusplus */ 02096 02097 /* Initializes or reinitializes a buffer. 02098 * This function is sometimes called more than once on the same buffer, 02099 * such as during a yyrestart() or at EOF. 02100 */ 02101 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) 02102 02103 { 02104 int oerrno = errno; 02105 02106 yy_flush_buffer(b ); 02107 02108 b->yy_input_file = file; 02109 b->yy_fill_buffer = 1; 02110 02111 /* If b is the current buffer, then yy_init_buffer was _probably_ 02112 * called from yyrestart() or through yy_get_next_buffer. 02113 * In that case, we don't want to reset the lineno or column. 02114 */ 02115 if (b != YY_CURRENT_BUFFER){ 02116 b->yy_bs_lineno = 1; 02117 b->yy_bs_column = 0; 02118 } 02119 02120 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 02121 02122 errno = oerrno; 02123 } 02124 02129 void yy_flush_buffer (YY_BUFFER_STATE b ) 02130 { 02131 if ( ! b ) 02132 return; 02133 02134 b->yy_n_chars = 0; 02135 02136 /* We always need two end-of-buffer characters. The first causes 02137 * a transition to the end-of-buffer state. The second causes 02138 * a jam in that state. 02139 */ 02140 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 02141 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 02142 02143 b->yy_buf_pos = &b->yy_ch_buf[0]; 02144 02145 b->yy_at_bol = 1; 02146 b->yy_buffer_status = YY_BUFFER_NEW; 02147 02148 if ( b == YY_CURRENT_BUFFER ) 02149 yy_load_buffer_state( ); 02150 } 02151 02158 void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) 02159 { 02160 if (new_buffer == NULL) 02161 return; 02162 02163 yyensure_buffer_stack(); 02164 02165 /* This block is copied from yy_switch_to_buffer. */ 02166 if ( YY_CURRENT_BUFFER ) 02167 { 02168 /* Flush out information for old buffer. */ 02169 *(yy_c_buf_p) = (yy_hold_char); 02170 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02171 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02172 } 02173 02174 /* Only push if top exists. Otherwise, replace top. */ 02175 if (YY_CURRENT_BUFFER) 02176 (yy_buffer_stack_top)++; 02177 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02178 02179 /* copied from yy_switch_to_buffer. */ 02180 yy_load_buffer_state( ); 02181 (yy_did_buffer_switch_on_eof) = 1; 02182 } 02183 02188 void yypop_buffer_state (void) 02189 { 02190 if (!YY_CURRENT_BUFFER) 02191 return; 02192 02193 yy_delete_buffer(YY_CURRENT_BUFFER ); 02194 YY_CURRENT_BUFFER_LVALUE = NULL; 02195 if ((yy_buffer_stack_top) > 0) 02196 --(yy_buffer_stack_top); 02197 02198 if (YY_CURRENT_BUFFER) { 02199 yy_load_buffer_state( ); 02200 (yy_did_buffer_switch_on_eof) = 1; 02201 } 02202 } 02203 02204 /* Allocates the stack if it does not exist. 02205 * Guarantees space for at least one push. 02206 */ 02207 static void yyensure_buffer_stack (void) 02208 { 02209 int num_to_alloc; 02210 02211 if (!(yy_buffer_stack)) { 02212 02213 /* First allocation is just for 2 elements, since we don't know if this 02214 * scanner will even need a stack. We use 2 instead of 1 to avoid an 02215 * immediate xrealloc on the next call. 02216 */ 02217 num_to_alloc = 1; 02218 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc 02219 (num_to_alloc * sizeof(struct yy_buffer_state*) 02220 ); 02221 if ( ! (yy_buffer_stack) ) 02222 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 02223 02224 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 02225 02226 (yy_buffer_stack_max) = num_to_alloc; 02227 (yy_buffer_stack_top) = 0; 02228 return; 02229 } 02230 02231 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 02232 02233 /* Increase the buffer to prepare for a possible push. */ 02234 int grow_size = 8 /* arbitrary grow size */; 02235 02236 num_to_alloc = (yy_buffer_stack_max) + grow_size; 02237 (yy_buffer_stack) = (struct yy_buffer_state**)yyxrealloc 02238 ((yy_buffer_stack), 02239 num_to_alloc * sizeof(struct yy_buffer_state*) 02240 ); 02241 if ( ! (yy_buffer_stack) ) 02242 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 02243 02244 /* zero only the new slots.*/ 02245 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 02246 (yy_buffer_stack_max) = num_to_alloc; 02247 } 02248 } 02249 02256 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 02257 { 02258 YY_BUFFER_STATE b; 02259 02260 if ( size < 2 || 02261 base[size-2] != YY_END_OF_BUFFER_CHAR || 02262 base[size-1] != YY_END_OF_BUFFER_CHAR ) 02263 /* They forgot to leave room for the EOB's. */ 02264 return 0; 02265 02266 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 02267 if ( ! b ) 02268 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 02269 02270 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 02271 b->yy_buf_pos = b->yy_ch_buf = base; 02272 b->yy_is_our_buffer = 0; 02273 b->yy_input_file = 0; 02274 b->yy_n_chars = b->yy_buf_size; 02275 b->yy_is_interactive = 0; 02276 b->yy_at_bol = 1; 02277 b->yy_fill_buffer = 0; 02278 b->yy_buffer_status = YY_BUFFER_NEW; 02279 02280 yy_switch_to_buffer(b ); 02281 02282 return b; 02283 } 02284 02293 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) 02294 { 02295 02296 return yy_scan_bytes(yystr,strlen(yystr) ); 02297 } 02298 02306 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 02307 { 02308 YY_BUFFER_STATE b; 02309 char *buf; 02310 yy_size_t n; 02311 int i; 02312 02313 /* Get memory for full buffer, including space for trailing EOB's. */ 02314 n = _yybytes_len + 2; 02315 buf = (char *) yyalloc(n ); 02316 if ( ! buf ) 02317 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 02318 02319 for ( i = 0; i < _yybytes_len; ++i ) 02320 buf[i] = yybytes[i]; 02321 02322 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 02323 02324 b = yy_scan_buffer(buf,n ); 02325 if ( ! b ) 02326 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 02327 02328 /* It's okay to grow etc. this buffer, and we should throw it 02329 * away when we're done. 02330 */ 02331 b->yy_is_our_buffer = 1; 02332 02333 return b; 02334 } 02335 02336 #ifndef YY_EXIT_FAILURE 02337 #define YY_EXIT_FAILURE 2 02338 #endif 02339 02340 static void yy_fatal_error (yyconst char* msg ) 02341 { 02342 (void) fprintf( stderr, "%s\n", msg ); 02343 exit( YY_EXIT_FAILURE ); 02344 } 02345 02346 /* Redefine yyless() so it works in section 3 code. */ 02347 02348 #undef yyless 02349 #define yyless(n) \ 02350 do \ 02351 { \ 02352 /* Undo effects of setting up yytext. */ \ 02353 int yyless_macro_arg = (n); \ 02354 YY_LESS_LINENO(yyless_macro_arg);\ 02355 yytext[yyleng] = (yy_hold_char); \ 02356 (yy_c_buf_p) = yytext + yyless_macro_arg; \ 02357 (yy_hold_char) = *(yy_c_buf_p); \ 02358 *(yy_c_buf_p) = '\0'; \ 02359 yyleng = yyless_macro_arg; \ 02360 } \ 02361 while ( 0 ) 02362 02363 /* Accessor methods (get/set functions) to struct members. */ 02364 02368 int yyget_lineno (void) 02369 { 02370 02371 return yylineno; 02372 } 02373 02377 FILE *yyget_in (void) 02378 { 02379 return yyin; 02380 } 02381 02385 FILE *yyget_out (void) 02386 { 02387 return yyout; 02388 } 02389 02393 int yyget_leng (void) 02394 { 02395 return yyleng; 02396 } 02397 02402 char *yyget_text (void) 02403 { 02404 return yytext; 02405 } 02406 02411 void yyset_lineno (int line_number ) 02412 { 02413 02414 yylineno = line_number; 02415 } 02416 02423 void yyset_in (FILE * in_str ) 02424 { 02425 yyin = in_str ; 02426 } 02427 02428 void yyset_out (FILE * out_str ) 02429 { 02430 yyout = out_str ; 02431 } 02432 02433 int yyget_debug (void) 02434 { 02435 return yy_flex_debug; 02436 } 02437 02438 void yyset_debug (int bdebug ) 02439 { 02440 yy_flex_debug = bdebug ; 02441 } 02442 02443 static int yy_init_globals (void) 02444 { 02445 /* Initialization is the same as for the non-reentrant scanner. 02446 * This function is called from yylex_destroy(), so don't allocate here. 02447 */ 02448 02449 (yy_buffer_stack) = 0; 02450 (yy_buffer_stack_top) = 0; 02451 (yy_buffer_stack_max) = 0; 02452 (yy_c_buf_p) = (char *) 0; 02453 (yy_init) = 0; 02454 (yy_start) = 0; 02455 02456 /* Defined in main.c */ 02457 #ifdef YY_STDINIT 02458 yyin = stdin; 02459 yyout = stdout; 02460 #else 02461 yyin = (FILE *) 0; 02462 yyout = (FILE *) 0; 02463 #endif 02464 02465 /* For future reference: Set errno on error, since we are called by 02466 * yylex_init() 02467 */ 02468 return 0; 02469 } 02470 02471 /* yylex_destroy is for both reentrant and non-reentrant scanners. */ 02472 int yylex_destroy (void) 02473 { 02474 02475 /* Pop the buffer stack, destroying each element. */ 02476 while(YY_CURRENT_BUFFER){ 02477 yy_delete_buffer(YY_CURRENT_BUFFER ); 02478 YY_CURRENT_BUFFER_LVALUE = NULL; 02479 yypop_buffer_state(); 02480 } 02481 02482 /* Destroy the stack itself. */ 02483 yyfree((yy_buffer_stack) ); 02484 (yy_buffer_stack) = NULL; 02485 02486 /* Reset the globals. This is important in a non-reentrant scanner so the next time 02487 * yylex() is called, initialization will occur. */ 02488 yy_init_globals( ); 02489 02490 return 0; 02491 } 02492 02493 /* 02494 * Internal utility routines. 02495 */ 02496 02497 #ifndef yytext_ptr 02498 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 02499 { 02500 register int i; 02501 for ( i = 0; i < n; ++i ) 02502 s1[i] = s2[i]; 02503 } 02504 #endif 02505 02506 #ifdef YY_NEED_STRLEN 02507 static int yy_flex_strlen (yyconst char * s ) 02508 { 02509 register int n; 02510 for ( n = 0; s[n]; ++n ) 02511 ; 02512 02513 return n; 02514 } 02515 #endif 02516 02517 void *yyalloc (yy_size_t size ) 02518 { 02519 return (void *) xmalloc( size ); 02520 } 02521 02522 void *yyxrealloc (void * ptr, yy_size_t size ) 02523 { 02524 /* The cast to (char *) in the following accommodates both 02525 * implementations that use char* generic pointers, and those 02526 * that use void* generic pointers. It works with the latter 02527 * because both ANSI C and C++ allow castless assignment from 02528 * any pointer type to void*, and deal with argument conversions 02529 * as though doing an assignment. 02530 */ 02531 return (void *) xrealloc( (char *) ptr, size ); 02532 } 02533 02534 void yyfree (void * ptr ) 02535 { 02536 xfree( (char *) ptr ); /* see yyxrealloc() for (char *) cast */ 02537 } 02538 02539 #define YYTABLES_NAME "yytables" 02540 02541 #line 288 "../../src/gdb/ada-lex.l" 02542 02543 02544 02545 #include <ctype.h> 02546 #include "gdb_string.h" 02547 02548 /* Initialize the lexer for processing new expression. */ 02549 02550 static void 02551 lexer_init (FILE *inp) 02552 { 02553 BEGIN INITIAL; 02554 yyrestart (inp); 02555 } 02556 02557 02558 /* Copy S2 to S1, removing all underscores, and downcasing all letters. */ 02559 02560 static void 02561 canonicalizeNumeral (char *s1, const char *s2) 02562 { 02563 for (; *s2 != '\000'; s2 += 1) 02564 { 02565 if (*s2 != '_') 02566 { 02567 *s1 = tolower(*s2); 02568 s1 += 1; 02569 } 02570 } 02571 s1[0] = '\000'; 02572 } 02573 02574 /* Interprets the prefix of NUM that consists of digits of the given BASE 02575 as an integer of that BASE, with the string EXP as an exponent. 02576 Puts value in yylval, and returns INT, if the string is valid. Causes 02577 an error if the number is improperly formated. BASE, if NULL, defaults 02578 to "10", and EXP to "1". The EXP does not contain a leading 'e' or 'E'. 02579 */ 02580 02581 static int 02582 processInt (const char *base0, const char *num0, const char *exp0) 02583 { 02584 ULONGEST result; 02585 long exp; 02586 int base; 02587 const char *trailer; 02588 02589 if (base0 == NULL) 02590 base = 10; 02591 else 02592 { 02593 base = strtol (base0, (char **) NULL, 10); 02594 if (base < 2 || base > 16) 02595 error (_("Invalid base: %d."), base); 02596 } 02597 02598 if (exp0 == NULL) 02599 exp = 0; 02600 else 02601 exp = strtol(exp0, (char **) NULL, 10); 02602 02603 errno = 0; 02604 result = strtoulst (num0, &trailer, base); 02605 if (errno == ERANGE) 02606 error (_("Integer literal out of range")); 02607 if (isxdigit(*trailer)) 02608 error (_("Invalid digit `%c' in based literal"), *trailer); 02609 02610 while (exp > 0) 02611 { 02612 if (result > (ULONG_MAX / base)) 02613 error (_("Integer literal out of range")); 02614 result *= base; 02615 exp -= 1; 02616 } 02617 02618 if ((result >> (gdbarch_int_bit (parse_gdbarch)-1)) == 0) 02619 yylval.typed_val.type = type_int (); 02620 else if ((result >> (gdbarch_long_bit (parse_gdbarch)-1)) == 0) 02621 yylval.typed_val.type = type_long (); 02622 else if (((result >> (gdbarch_long_bit (parse_gdbarch)-1)) >> 1) == 0) 02623 { 02624 /* We have a number representable as an unsigned integer quantity. 02625 For consistency with the C treatment, we will treat it as an 02626 anonymous modular (unsigned) quantity. Alas, the types are such 02627 that we need to store .val as a signed quantity. Sorry 02628 for the mess, but C doesn't officially guarantee that a simple 02629 assignment does the trick (no, it doesn't; read the reference manual). 02630 */ 02631 yylval.typed_val.type 02632 = builtin_type (parse_gdbarch)->builtin_unsigned_long; 02633 if (result & LONGEST_SIGN) 02634 yylval.typed_val.val = 02635 (LONGEST) (result & ~LONGEST_SIGN) 02636 - (LONGEST_SIGN>>1) - (LONGEST_SIGN>>1); 02637 else 02638 yylval.typed_val.val = (LONGEST) result; 02639 return INT; 02640 } 02641 else 02642 yylval.typed_val.type = type_long_long (); 02643 02644 yylval.typed_val.val = (LONGEST) result; 02645 return INT; 02646 } 02647 02648 static int 02649 processReal (const char *num0) 02650 { 02651 sscanf (num0, "%" DOUBLEST_SCAN_FORMAT, &yylval.typed_val_float.dval); 02652 02653 yylval.typed_val_float.type = type_float (); 02654 if (sizeof(DOUBLEST) >= gdbarch_double_bit (parse_gdbarch) 02655 / TARGET_CHAR_BIT) 02656 yylval.typed_val_float.type = type_double (); 02657 if (sizeof(DOUBLEST) >= gdbarch_long_double_bit (parse_gdbarch) 02658 / TARGET_CHAR_BIT) 02659 yylval.typed_val_float.type = type_long_double (); 02660 02661 return FLOAT; 02662 } 02663 02664 02665 /* Store a canonicalized version of NAME0[0..LEN-1] in yylval.ssym. The 02666 resulting string is valid until the next call to ada_parse. If 02667 NAME0 contains the substring "___", it is assumed to be already 02668 encoded and the resulting name is equal to it. Otherwise, it differs 02669 from NAME0 in that: 02670 + Characters between '...' or <...> are transfered verbatim to 02671 yylval.ssym. 02672 + <, >, and trailing "'" characters in quoted sequences are removed 02673 (a leading quote is preserved to indicate that the name is not to be 02674 GNAT-encoded). 02675 + Unquoted whitespace is removed. 02676 + Unquoted alphabetic characters are mapped to lower case. 02677 Result is returned as a struct stoken, but for convenience, the string 02678 is also null-terminated. Result string valid until the next call of 02679 ada_parse. 02680 */ 02681 static struct stoken 02682 processId (const char *name0, int len) 02683 { 02684 char *name = obstack_alloc (&temp_parse_space, len + 11); 02685 int i0, i; 02686 struct stoken result; 02687 02688 result.ptr = name; 02689 while (len > 0 && isspace (name0[len-1])) 02690 len -= 1; 02691 02692 if (strstr (name0, "___") != NULL) 02693 { 02694 strncpy (name, name0, len); 02695 name[len] = '\000'; 02696 result.length = len; 02697 return result; 02698 } 02699 02700 i = i0 = 0; 02701 while (i0 < len) 02702 { 02703 if (isalnum (name0[i0])) 02704 { 02705 name[i] = tolower (name0[i0]); 02706 i += 1; i0 += 1; 02707 } 02708 else switch (name0[i0]) 02709 { 02710 default: 02711 name[i] = name0[i0]; 02712 i += 1; i0 += 1; 02713 break; 02714 case ' ': case '\t': 02715 i0 += 1; 02716 break; 02717 case '\'': 02718 do 02719 { 02720 name[i] = name0[i0]; 02721 i += 1; i0 += 1; 02722 } 02723 while (i0 < len && name0[i0] != '\''); 02724 i0 += 1; 02725 break; 02726 case '<': 02727 i0 += 1; 02728 while (i0 < len && name0[i0] != '>') 02729 { 02730 name[i] = name0[i0]; 02731 i += 1; i0 += 1; 02732 } 02733 i0 += 1; 02734 break; 02735 } 02736 } 02737 name[i] = '\000'; 02738 02739 result.length = i; 02740 return result; 02741 } 02742 02743 /* Return TEXT[0..LEN-1], a string literal without surrounding quotes, 02744 with special hex character notations replaced with characters. 02745 Result valid until the next call to ada_parse. */ 02746 02747 static struct stoken 02748 processString (const char *text, int len) 02749 { 02750 const char *p; 02751 char *q; 02752 const char *lim = text + len; 02753 struct stoken result; 02754 02755 q = obstack_alloc (&temp_parse_space, len); 02756 result.ptr = q; 02757 p = text; 02758 while (p < lim) 02759 { 02760 if (p[0] == '[' && p[1] == '"' && p+2 < lim) 02761 { 02762 if (p[2] == '"') /* "...["""]... */ 02763 { 02764 *q = '"'; 02765 p += 4; 02766 } 02767 else 02768 { 02769 int chr; 02770 sscanf (p+2, "%2x", &chr); 02771 *q = (char) chr; 02772 p += 5; 02773 } 02774 } 02775 else 02776 *q = *p; 02777 q += 1; 02778 p += 1; 02779 } 02780 result.length = q - result.ptr; 02781 return result; 02782 } 02783 02784 /* Returns the position within STR of the '.' in a 02785 '.{WHITE}*all' component of a dotted name, or -1 if there is none. 02786 Note: we actually don't need this routine, since 'all' can never be an 02787 Ada identifier. Thus, looking up foo.all or foo.all.x as a name 02788 must fail, and will eventually be interpreted as (foo).all or 02789 (foo).all.x. However, this does avoid an extraneous lookup. */ 02790 02791 static int 02792 find_dot_all (const char *str) 02793 { 02794 int i; 02795 for (i = 0; str[i] != '\000'; i += 1) 02796 { 02797 if (str[i] == '.') 02798 { 02799 int i0 = i; 02800 do 02801 i += 1; 02802 while (isspace (str[i])); 02803 if (strncmp (str+i, "all", 3) == 0 02804 && ! isalnum (str[i+3]) && str[i+3] != '_') 02805 return i0; 02806 } 02807 } 02808 return -1; 02809 } 02810 02811 /* Returns non-zero iff string SUBSEQ matches a subsequence of STR, ignoring 02812 case. */ 02813 02814 static int 02815 subseqMatch (const char *subseq, const char *str) 02816 { 02817 if (subseq[0] == '\0') 02818 return 1; 02819 else if (str[0] == '\0') 02820 return 0; 02821 else if (tolower (subseq[0]) == tolower (str[0])) 02822 return subseqMatch (subseq+1, str+1) || subseqMatch (subseq, str+1); 02823 else 02824 return subseqMatch (subseq, str+1); 02825 } 02826 02827 02828 static struct { const char *name; int code; } 02829 attributes[] = { 02830 { "address", TICK_ADDRESS }, 02831 { "unchecked_access", TICK_ACCESS }, 02832 { "unrestricted_access", TICK_ACCESS }, 02833 { "access", TICK_ACCESS }, 02834 { "first", TICK_FIRST }, 02835 { "last", TICK_LAST }, 02836 { "length", TICK_LENGTH }, 02837 { "max", TICK_MAX }, 02838 { "min", TICK_MIN }, 02839 { "modulus", TICK_MODULUS }, 02840 { "pos", TICK_POS }, 02841 { "range", TICK_RANGE }, 02842 { "size", TICK_SIZE }, 02843 { "tag", TICK_TAG }, 02844 { "val", TICK_VAL }, 02845 { NULL, -1 } 02846 }; 02847 02848 /* Return the syntactic code corresponding to the attribute name or 02849 abbreviation STR. */ 02850 02851 static int 02852 processAttribute (const char *str) 02853 { 02854 int i, k; 02855 02856 for (i = 0; attributes[i].code != -1; i += 1) 02857 if (strcasecmp (str, attributes[i].name) == 0) 02858 return attributes[i].code; 02859 02860 for (i = 0, k = -1; attributes[i].code != -1; i += 1) 02861 if (subseqMatch (str, attributes[i].name)) 02862 { 02863 if (k == -1) 02864 k = i; 02865 else 02866 error (_("ambiguous attribute name: `%s'"), str); 02867 } 02868 if (k == -1) 02869 error (_("unrecognized attribute: `%s'"), str); 02870 02871 return attributes[k].code; 02872 } 02873 02874 /* Back up lexptr by yyleng and then to the rightmost occurrence of 02875 character CH, case-folded (there must be one). WARNING: since 02876 lexptr points to the next input character that Flex has not yet 02877 transferred to its internal buffer, the use of this function 02878 depends on the assumption that Flex calls YY_INPUT only when it is 02879 logically necessary to do so (thus, there is no reading ahead 02880 farther than needed to identify the next token.) */ 02881 02882 static void 02883 rewind_to_char (int ch) 02884 { 02885 lexptr -= yyleng; 02886 while (toupper (*lexptr) != toupper (ch)) 02887 lexptr -= 1; 02888 yyrestart (NULL); 02889 } 02890 02891 int 02892 yywrap(void) 02893 { 02894 return 1; 02895 } 02896 02897 /* Dummy definition to suppress warnings about unused static definitions. */ 02898 typedef void (*dummy_function) (); 02899 dummy_function ada_flex_use[] = 02900 { 02901 (dummy_function) yyunput 02902 }; 02903