LLVM API Documentation
00001 #line 2 "Lexer.cpp" 00002 00003 #line 4 "Lexer.cpp" 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 33 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 __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 #endif /* ! C99 */ 00058 00059 /* Limits of integral types. */ 00060 #ifndef INT8_MIN 00061 #define INT8_MIN (-128) 00062 #endif 00063 #ifndef INT16_MIN 00064 #define INT16_MIN (-32767-1) 00065 #endif 00066 #ifndef INT32_MIN 00067 #define INT32_MIN (-2147483647-1) 00068 #endif 00069 #ifndef INT8_MAX 00070 #define INT8_MAX (127) 00071 #endif 00072 #ifndef INT16_MAX 00073 #define INT16_MAX (32767) 00074 #endif 00075 #ifndef INT32_MAX 00076 #define INT32_MAX (2147483647) 00077 #endif 00078 #ifndef UINT8_MAX 00079 #define UINT8_MAX (255U) 00080 #endif 00081 #ifndef UINT16_MAX 00082 #define UINT16_MAX (65535U) 00083 #endif 00084 #ifndef UINT32_MAX 00085 #define UINT32_MAX (4294967295U) 00086 #endif 00087 00088 #endif /* ! FLEXINT_H */ 00089 00090 #ifdef __cplusplus 00091 00092 /* The "const" storage-class-modifier is valid. */ 00093 #define YY_USE_CONST 00094 00095 #else /* ! __cplusplus */ 00096 00097 #if __STDC__ 00098 00099 #define YY_USE_CONST 00100 00101 #endif /* __STDC__ */ 00102 #endif /* ! __cplusplus */ 00103 00104 #ifdef YY_USE_CONST 00105 #define yyconst const 00106 #else 00107 #define yyconst 00108 #endif 00109 00110 /* Returned upon end-of-file. */ 00111 #define YY_NULL 0 00112 00113 /* Promotes a possibly negative, possibly signed char to an unsigned 00114 * integer for use as an array index. If the signed char is negative, 00115 * we want to instead treat it as an 8-bit unsigned char, hence the 00116 * double cast. 00117 */ 00118 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 00119 00120 /* Enter a start condition. This macro really ought to take a parameter, 00121 * but we do it the disgusting crufty way forced on us by the ()-less 00122 * definition of BEGIN. 00123 */ 00124 #define BEGIN (yy_start) = 1 + 2 * 00125 00126 /* Translate the current start state into a value that can be later handed 00127 * to BEGIN to return to the state. The YYSTATE alias is for lex 00128 * compatibility. 00129 */ 00130 #define YY_START (((yy_start) - 1) / 2) 00131 #define YYSTATE YY_START 00132 00133 /* Action number for EOF rule of a given start state. */ 00134 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 00135 00136 /* Special action meaning "start processing a new file". */ 00137 #define YY_NEW_FILE llvmAsmrestart(llvmAsmin ) 00138 00139 #define YY_END_OF_BUFFER_CHAR 0 00140 00141 /* Size of default input buffer. */ 00142 #ifndef YY_BUF_SIZE 00143 #define YY_BUF_SIZE (16384*64) 00144 #endif 00145 00146 /* The state buf must be large enough to hold one state per character in the main buffer. 00147 */ 00148 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 00149 00150 #ifndef YY_TYPEDEF_YY_BUFFER_STATE 00151 #define YY_TYPEDEF_YY_BUFFER_STATE 00152 typedef struct yy_buffer_state *YY_BUFFER_STATE; 00153 #endif 00154 00155 extern int llvmAsmleng; 00156 00157 extern FILE *llvmAsmin, *llvmAsmout; 00158 00159 #define EOB_ACT_CONTINUE_SCAN 0 00160 #define EOB_ACT_END_OF_FILE 1 00161 #define EOB_ACT_LAST_MATCH 2 00162 00163 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires 00164 * access to the local variable yy_act. Since yyless() is a macro, it would break 00165 * existing scanners that call yyless() from OUTSIDE llvmAsmlex. 00166 * One obvious solution it to make yy_act a global. I tried that, and saw 00167 * a 5% performance hit in a non-llvmAsmlineno scanner, because yy_act is 00168 * normally declared as a register variable-- so it is not worth it. 00169 */ 00170 #define YY_LESS_LINENO(n) \ 00171 do { \ 00172 int yyl;\ 00173 for ( yyl = n; yyl < llvmAsmleng; ++yyl )\ 00174 if ( llvmAsmtext[yyl] == '\n' )\ 00175 --llvmAsmlineno;\ 00176 }while(0) 00177 00178 /* Return all but the first "n" matched characters back to the input stream. */ 00179 #define yyless(n) \ 00180 do \ 00181 { \ 00182 /* Undo effects of setting up llvmAsmtext. */ \ 00183 int yyless_macro_arg = (n); \ 00184 YY_LESS_LINENO(yyless_macro_arg);\ 00185 *yy_cp = (yy_hold_char); \ 00186 YY_RESTORE_YY_MORE_OFFSET \ 00187 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 00188 YY_DO_BEFORE_ACTION; /* set up llvmAsmtext again */ \ 00189 } \ 00190 while ( 0 ) 00191 00192 #define unput(c) yyunput( c, (yytext_ptr) ) 00193 00194 /* The following is because we cannot portably get our hands on size_t 00195 * (without autoconf's help, which isn't available because we want 00196 * flex-generated scanners to compile on their own). 00197 */ 00198 00199 #ifndef YY_TYPEDEF_YY_SIZE_T 00200 #define YY_TYPEDEF_YY_SIZE_T 00201 typedef unsigned int yy_size_t; 00202 #endif 00203 00204 #ifndef YY_STRUCT_YY_BUFFER_STATE 00205 #define YY_STRUCT_YY_BUFFER_STATE 00206 struct yy_buffer_state 00207 { 00208 FILE *yy_input_file; 00209 00210 char *yy_ch_buf; /* input buffer */ 00211 char *yy_buf_pos; /* current position in input buffer */ 00212 00213 /* Size of input buffer in bytes, not including room for EOB 00214 * characters. 00215 */ 00216 yy_size_t yy_buf_size; 00217 00218 /* Number of characters read into yy_ch_buf, not including EOB 00219 * characters. 00220 */ 00221 int yy_n_chars; 00222 00223 /* Whether we "own" the buffer - i.e., we know we created it, 00224 * and can realloc() it to grow it, and should free() it to 00225 * delete it. 00226 */ 00227 int yy_is_our_buffer; 00228 00229 /* Whether this is an "interactive" input source; if so, and 00230 * if we're using stdio for input, then we want to use getc() 00231 * instead of fread(), to make sure we stop fetching input after 00232 * each newline. 00233 */ 00234 int yy_is_interactive; 00235 00236 /* Whether we're considered to be at the beginning of a line. 00237 * If so, '^' rules will be active on the next match, otherwise 00238 * not. 00239 */ 00240 int yy_at_bol; 00241 00242 int yy_bs_lineno; /**< The line count. */ 00243 int yy_bs_column; /**< The column count. */ 00244 00245 /* Whether to try to fill the input buffer when we reach the 00246 * end of it. 00247 */ 00248 int yy_fill_buffer; 00249 00250 int yy_buffer_status; 00251 00252 #define YY_BUFFER_NEW 0 00253 #define YY_BUFFER_NORMAL 1 00254 /* When an EOF's been seen but there's still some text to process 00255 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 00256 * shouldn't try reading from the input source any more. We might 00257 * still have a bunch of tokens to match, though, because of 00258 * possible backing-up. 00259 * 00260 * When we actually see the EOF, we change the status to "new" 00261 * (via llvmAsmrestart()), so that the user can continue scanning by 00262 * just pointing llvmAsmin at a new input file. 00263 */ 00264 #define YY_BUFFER_EOF_PENDING 2 00265 00266 }; 00267 #endif /* !YY_STRUCT_YY_BUFFER_STATE */ 00268 00269 /* Stack of input buffers. */ 00270 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ 00271 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ 00272 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ 00273 00274 /* We provide macros for accessing buffer states in case in the 00275 * future we want to put the buffer states in a more general 00276 * "scanner state". 00277 * 00278 * Returns the top of the stack, or NULL. 00279 */ 00280 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 00281 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 00282 : NULL) 00283 00284 /* Same as previous macro, but useful when we know that the buffer stack is not 00285 * NULL or when we need an lvalue. For internal use only. 00286 */ 00287 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 00288 00289 /* yy_hold_char holds the character lost when llvmAsmtext is formed. */ 00290 static char yy_hold_char; 00291 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 00292 int llvmAsmleng; 00293 00294 /* Points to current character in buffer. */ 00295 static char *yy_c_buf_p = (char *) 0; 00296 static int yy_init = 0; /* whether we need to initialize */ 00297 static int yy_start = 0; /* start state number */ 00298 00299 /* Flag which is used to allow llvmAsmwrap()'s to do buffer switches 00300 * instead of setting up a fresh llvmAsmin. A bit of a hack ... 00301 */ 00302 static int yy_did_buffer_switch_on_eof; 00303 00304 void llvmAsmrestart (FILE *input_file ); 00305 void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 00306 YY_BUFFER_STATE llvmAsm_create_buffer (FILE *file,int size ); 00307 void llvmAsm_delete_buffer (YY_BUFFER_STATE b ); 00308 void llvmAsm_flush_buffer (YY_BUFFER_STATE b ); 00309 void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer ); 00310 void llvmAsmpop_buffer_state (void ); 00311 00312 static void llvmAsmensure_buffer_stack (void ); 00313 static void llvmAsm_load_buffer_state (void ); 00314 static void llvmAsm_init_buffer (YY_BUFFER_STATE b,FILE *file ); 00315 00316 #define YY_FLUSH_BUFFER llvmAsm_flush_buffer(YY_CURRENT_BUFFER ) 00317 00318 YY_BUFFER_STATE llvmAsm_scan_buffer (char *base,yy_size_t size ); 00319 YY_BUFFER_STATE llvmAsm_scan_string (yyconst char *yy_str ); 00320 YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char *bytes,int len ); 00321 00322 void *llvmAsmalloc (yy_size_t ); 00323 void *llvmAsmrealloc (void *,yy_size_t ); 00324 void llvmAsmfree (void * ); 00325 00326 #define yy_new_buffer llvmAsm_create_buffer 00327 00328 #define yy_set_interactive(is_interactive) \ 00329 { \ 00330 if ( ! YY_CURRENT_BUFFER ){ \ 00331 llvmAsmensure_buffer_stack (); \ 00332 YY_CURRENT_BUFFER_LVALUE = \ 00333 llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \ 00334 } \ 00335 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 00336 } 00337 00338 #define yy_set_bol(at_bol) \ 00339 { \ 00340 if ( ! YY_CURRENT_BUFFER ){\ 00341 llvmAsmensure_buffer_stack (); \ 00342 YY_CURRENT_BUFFER_LVALUE = \ 00343 llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); \ 00344 } \ 00345 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 00346 } 00347 00348 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 00349 00350 /* Begin user sect3 */ 00351 00352 #define llvmAsmwrap() 1 00353 #define YY_SKIP_YYWRAP 00354 00355 typedef unsigned char YY_CHAR; 00356 00357 FILE *llvmAsmin = (FILE *) 0, *llvmAsmout = (FILE *) 0; 00358 00359 typedef int yy_state_type; 00360 00361 extern int llvmAsmlineno; 00362 00363 int llvmAsmlineno = 1; 00364 00365 extern char *llvmAsmtext; 00366 #define yytext_ptr llvmAsmtext 00367 00368 static yy_state_type yy_get_previous_state (void ); 00369 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 00370 static int yy_get_next_buffer (void ); 00371 static void yy_fatal_error (yyconst char msg[] ); 00372 00373 /* Done after the current pattern has been matched and before the 00374 * corresponding action - sets up llvmAsmtext. 00375 */ 00376 #define YY_DO_BEFORE_ACTION \ 00377 (yytext_ptr) = yy_bp; \ 00378 llvmAsmleng = (size_t) (yy_cp - yy_bp); \ 00379 (yy_hold_char) = *yy_cp; \ 00380 *yy_cp = '\0'; \ 00381 (yy_c_buf_p) = yy_cp; 00382 00383 #define YY_NUM_RULES 107 00384 #define YY_END_OF_BUFFER 108 00385 /* This struct is not used in this scanner, 00386 but its presence is necessary. */ 00387 struct yy_trans_info 00388 { 00389 flex_int32_t yy_verify; 00390 flex_int32_t yy_nxt; 00391 }; 00392 static yyconst flex_int16_t yy_accept[454] = 00393 { 0, 00394 0, 0, 108, 106, 105, 105, 106, 106, 106, 106, 00395 106, 106, 98, 98, 1, 106, 106, 106, 106, 106, 00396 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 00397 106, 106, 106, 106, 106, 106, 0, 97, 0, 95, 00398 94, 94, 101, 0, 99, 0, 103, 98, 0, 1, 00399 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 00400 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00402 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 00403 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 00404 00405 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 00406 94, 94, 103, 17, 103, 0, 104, 56, 0, 0, 00407 61, 0, 35, 0, 30, 0, 0, 0, 38, 0, 00408 0, 0, 0, 59, 0, 3, 0, 0, 0, 0, 00409 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 00410 0, 0, 0, 0, 0, 58, 22, 0, 0, 70, 00411 0, 60, 79, 0, 0, 0, 0, 0, 74, 0, 00412 75, 0, 0, 0, 57, 0, 0, 0, 0, 0, 00413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00414 0, 0, 0, 0, 0, 63, 0, 96, 103, 0, 00415 00416 0, 0, 103, 0, 0, 0, 0, 42, 71, 72, 00417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00418 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 00419 0, 0, 88, 49, 0, 0, 19, 0, 0, 100, 00420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00421 0, 0, 23, 0, 0, 4, 54, 0, 48, 0, 00422 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 00423 11, 0, 103, 32, 0, 0, 2, 0, 0, 0, 00424 0, 0, 0, 0, 0, 0, 5, 0, 51, 0, 00425 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 00426 00427 0, 0, 43, 0, 0, 65, 69, 67, 68, 66, 00428 64, 45, 0, 0, 89, 0, 0, 0, 44, 50, 00429 18, 0, 0, 0, 0, 0, 77, 0, 0, 0, 00430 86, 0, 40, 0, 0, 0, 52, 27, 21, 0, 00431 0, 39, 0, 7, 0, 0, 0, 82, 0, 29, 00432 85, 34, 55, 0, 0, 73, 0, 0, 81, 24, 00433 25, 0, 0, 83, 46, 78, 76, 0, 0, 0, 00434 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 00435 0, 33, 0, 0, 0, 0, 0, 0, 0, 8, 00436 14, 0, 0, 0, 0, 9, 10, 0, 0, 0, 00437 00438 0, 0, 31, 0, 12, 0, 0, 0, 0, 0, 00439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00440 0, 36, 0, 0, 0, 0, 0, 0, 0, 28, 00441 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 00442 0, 0, 90, 0, 92, 93, 13, 0, 91, 15, 00443 0, 16, 0 00444 } ; 00445 00446 static yyconst flex_int32_t yy_ec[256] = 00447 { 0, 00448 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 00449 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 00450 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00451 1, 2, 1, 4, 1, 5, 6, 1, 1, 1, 00452 1, 1, 7, 1, 8, 9, 1, 10, 11, 11, 00453 11, 11, 11, 11, 11, 11, 11, 12, 13, 1, 00454 1, 1, 1, 1, 14, 14, 14, 14, 15, 14, 00455 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 00456 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 00457 1, 1, 1, 1, 16, 1, 17, 18, 19, 20, 00458 00459 21, 22, 23, 24, 25, 5, 26, 27, 28, 29, 00460 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 00461 40, 41, 1, 1, 1, 1, 1, 1, 1, 1, 00462 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00463 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00464 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00465 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00469 00470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00475 1, 1, 1, 1, 1 00476 } ; 00477 00478 static yyconst flex_int32_t yy_meta[42] = 00479 { 0, 00480 1, 1, 2, 1, 3, 1, 1, 3, 3, 3, 00481 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 00482 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00483 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 00484 3 00485 } ; 00486 00487 static yyconst flex_int16_t yy_base[459] = 00488 { 0, 00489 0, 0, 948, 949, 949, 949, 943, 934, 34, 36, 00490 38, 42, 46, 50, 0, 52, 57, 54, 68, 62, 00491 80, 82, 76, 94, 98, 40, 83, 88, 56, 125, 00492 108, 154, 109, 87, 110, 111, 941, 949, 932, 949, 00493 0, 119, 134, 142, 145, 124, 159, 166, 179, 0, 00494 55, 180, 147, 153, 119, 150, 183, 156, 931, 175, 00495 191, 192, 196, 90, 146, 200, 199, 201, 202, 204, 00496 205, 211, 212, 210, 218, 217, 221, 227, 236, 230, 00497 214, 239, 241, 930, 243, 247, 248, 225, 249, 250, 00498 251, 253, 258, 262, 267, 270, 929, 274, 259, 279, 00499 00500 282, 263, 284, 41, 285, 288, 295, 84, 293, 928, 00501 0, 310, 313, 927, 320, 332, 0, 926, 304, 306, 00502 925, 317, 924, 321, 923, 325, 333, 313, 922, 286, 00503 335, 337, 338, 921, 339, 341, 342, 346, 343, 347, 00504 344, 350, 360, 356, 358, 363, 366, 361, 368, 364, 00505 371, 374, 376, 380, 381, 920, 919, 383, 31, 918, 00506 384, 917, 916, 408, 385, 386, 388, 412, 915, 399, 00507 914, 390, 393, 403, 913, 396, 389, 422, 425, 426, 00508 428, 430, 431, 432, 434, 438, 436, 439, 440, 441, 00509 442, 447, 451, 457, 450, 912, 448, 949, 462, 474, 00510 00511 393, 476, 479, 467, 480, 468, 481, 911, 910, 909, 00512 482, 483, 486, 488, 490, 492, 493, 494, 495, 499, 00513 496, 502, 908, 504, 509, 507, 510, 511, 513, 518, 00514 517, 521, 907, 906, 520, 522, 905, 523, 526, 0, 00515 530, 528, 543, 524, 542, 545, 546, 529, 548, 553, 00516 557, 556, 904, 560, 559, 903, 902, 561, 901, 564, 00517 567, 571, 573, 572, 576, 579, 580, 581, 900, 582, 00518 899, 583, 587, 898, 587, 590, 897, 588, 594, 593, 00519 534, 601, 602, 603, 604, 606, 896, 609, 895, 611, 00520 607, 612, 615, 617, 618, 894, 623, 624, 625, 630, 00521 00522 635, 636, 893, 629, 631, 892, 891, 890, 889, 888, 00523 887, 886, 637, 641, 885, 643, 642, 648, 884, 883, 00524 882, 646, 649, 650, 653, 659, 881, 660, 661, 662, 00525 880, 664, 879, 663, 666, 667, 878, 877, 876, 668, 00526 671, 875, 672, 874, 678, 681, 686, 873, 685, 872, 00527 871, 870, 869, 682, 684, 868, 693, 695, 867, 866, 00528 865, 696, 698, 864, 863, 862, 861, 697, 700, 699, 00529 704, 860, 857, 706, 708, 711, 707, 714, 715, 719, 00530 718, 848, 722, 723, 726, 733, 725, 735, 737, 847, 00531 845, 736, 739, 741, 743, 843, 842, 742, 744, 750, 00532 00533 745, 759, 841, 749, 840, 754, 746, 761, 767, 768, 00534 770, 771, 772, 773, 774, 775, 776, 778, 780, 781, 00535 782, 838, 784, 787, 792, 793, 786, 798, 799, 835, 00536 800, 803, 834, 804, 806, 808, 810, 814, 815, 819, 00537 820, 821, 832, 822, 831, 830, 826, 824, 296, 255, 00538 825, 219, 949, 861, 863, 182, 867, 139 00539 } ; 00540 00541 static yyconst flex_int16_t yy_def[459] = 00542 { 0, 00543 453, 1, 453, 453, 453, 453, 454, 455, 456, 453, 00544 455, 455, 455, 455, 457, 455, 455, 455, 455, 455, 00545 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00546 455, 455, 455, 455, 455, 455, 454, 453, 455, 453, 00547 458, 458, 453, 453, 455, 455, 455, 455, 455, 457, 00548 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00549 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00550 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00551 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00552 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00553 00554 455, 455, 455, 455, 455, 455, 455, 455, 455, 453, 00555 458, 458, 453, 455, 455, 455, 49, 455, 455, 455, 00556 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00557 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00558 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00559 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00560 455, 455, 455, 49, 455, 455, 455, 455, 455, 455, 00561 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00562 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00563 455, 455, 455, 455, 455, 455, 455, 453, 453, 453, 00564 00565 453, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00566 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00567 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00568 455, 455, 455, 455, 455, 455, 455, 455, 455, 164, 00569 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00570 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00571 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00572 455, 455, 453, 455, 455, 455, 455, 455, 455, 455, 00573 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00574 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00575 00576 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00577 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00578 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00579 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00580 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00581 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00582 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00583 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00584 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00585 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00586 00587 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00588 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00589 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00590 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00591 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 00592 455, 455, 0, 453, 453, 453, 453, 453 00593 } ; 00594 00595 static yyconst flex_int16_t yy_nxt[991] = 00596 { 0, 00597 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 00598 14, 4, 15, 8, 8, 8, 16, 17, 18, 19, 00599 20, 21, 22, 8, 23, 8, 24, 25, 26, 27, 00600 28, 8, 29, 30, 31, 32, 33, 34, 35, 8, 00601 36, 42, 40, 43, 43, 44, 44, 45, 45, 40, 00602 46, 40, 40, 40, 47, 48, 48, 40, 47, 48, 00603 48, 40, 238, 40, 189, 40, 40, 40, 40, 81, 00604 60, 51, 61, 40, 118, 82, 87, 56, 52, 40, 00605 53, 57, 54, 62, 49, 55, 58, 40, 63, 59, 00606 66, 40, 64, 40, 40, 40, 68, 65, 40, 40, 00607 00608 67, 40, 71, 73, 74, 40, 69, 107, 72, 40, 00609 75, 85, 70, 83, 78, 84, 196, 86, 76, 40, 00610 40, 40, 40, 77, 96, 105, 134, 79, 112, 112, 00611 40, 109, 114, 80, 88, 40, 40, 97, 106, 108, 00612 98, 111, 89, 43, 43, 90, 123, 99, 91, 92, 00613 113, 44, 44, 47, 45, 45, 40, 40, 40, 93, 00614 94, 40, 95, 88, 40, 40, 121, 40, 115, 115, 00615 40, 100, 124, 116, 47, 48, 48, 40, 101, 116, 00616 102, 135, 103, 122, 41, 126, 40, 104, 117, 117, 00617 40, 40, 117, 117, 40, 117, 117, 117, 117, 117, 00618 00619 117, 127, 40, 40, 119, 125, 120, 40, 128, 129, 00620 40, 40, 40, 40, 132, 40, 40, 137, 130, 136, 00621 131, 40, 40, 40, 142, 40, 133, 139, 40, 40, 00622 40, 141, 40, 138, 140, 149, 40, 152, 40, 143, 00623 144, 40, 145, 146, 147, 150, 148, 40, 157, 153, 00624 40, 151, 40, 154, 40, 155, 156, 159, 40, 40, 00625 40, 40, 40, 164, 40, 158, 40, 160, 166, 40, 00626 40, 161, 173, 40, 40, 162, 167, 169, 40, 175, 00627 170, 40, 163, 171, 168, 40, 172, 174, 165, 181, 00628 40, 176, 184, 40, 177, 40, 40, 40, 179, 40, 00629 00630 190, 191, 178, 185, 40, 211, 40, 40, 186, 180, 00631 183, 195, 193, 192, 194, 40, 187, 40, 182, 112, 00632 112, 188, 199, 199, 40, 197, 204, 200, 40, 115, 00633 115, 40, 40, 200, 116, 205, 40, 206, 201, 202, 00634 116, 203, 203, 40, 40, 207, 40, 210, 40, 40, 00635 40, 208, 40, 40, 40, 40, 215, 40, 40, 209, 00636 222, 40, 217, 213, 214, 216, 218, 40, 212, 40, 00637 223, 40, 40, 225, 40, 40, 220, 40, 219, 40, 00638 224, 221, 40, 227, 226, 40, 228, 40, 230, 231, 00639 229, 40, 40, 233, 40, 40, 40, 40, 234, 40, 00640 00641 40, 40, 273, 273, 40, 232, 235, 40, 243, 237, 00642 40, 249, 239, 250, 40, 253, 236, 240, 240, 241, 00643 242, 240, 240, 40, 240, 240, 240, 240, 240, 240, 00644 252, 248, 244, 40, 245, 251, 40, 40, 246, 40, 00645 247, 40, 40, 40, 254, 40, 256, 40, 257, 40, 00646 40, 40, 40, 40, 261, 255, 263, 266, 40, 40, 00647 260, 40, 40, 264, 258, 259, 262, 268, 40, 265, 00648 269, 199, 199, 270, 267, 271, 200, 272, 40, 40, 00649 201, 201, 200, 273, 273, 203, 203, 40, 203, 203, 00650 40, 40, 40, 40, 40, 274, 276, 40, 275, 40, 00651 00652 278, 40, 280, 40, 40, 40, 40, 40, 283, 277, 00653 40, 286, 281, 40, 288, 40, 282, 279, 40, 287, 00654 40, 40, 40, 284, 40, 291, 285, 292, 40, 40, 00655 290, 40, 40, 40, 40, 40, 289, 40, 295, 40, 00656 40, 40, 293, 294, 296, 40, 297, 298, 300, 299, 00657 303, 336, 304, 40, 40, 306, 40, 40, 301, 40, 00658 302, 305, 307, 312, 40, 309, 311, 40, 40, 313, 00659 40, 40, 40, 314, 316, 40, 308, 315, 40, 310, 00660 317, 319, 40, 40, 40, 318, 320, 40, 321, 323, 00661 40, 40, 40, 40, 40, 322, 273, 273, 40, 40, 00662 00663 324, 40, 327, 331, 40, 40, 333, 330, 325, 332, 00664 334, 326, 40, 40, 40, 40, 329, 40, 40, 328, 00665 40, 337, 40, 40, 341, 335, 40, 342, 40, 40, 00666 338, 343, 340, 344, 40, 40, 40, 339, 348, 345, 00667 40, 40, 40, 351, 350, 347, 40, 40, 40, 346, 00668 352, 349, 40, 40, 40, 353, 354, 40, 355, 40, 00669 40, 40, 358, 357, 40, 356, 359, 363, 361, 364, 00670 40, 40, 40, 40, 40, 40, 360, 40, 40, 40, 00671 362, 366, 40, 40, 374, 368, 372, 365, 370, 40, 00672 369, 371, 40, 40, 367, 40, 40, 40, 377, 376, 00673 00674 373, 378, 379, 380, 40, 375, 40, 40, 40, 40, 00675 40, 40, 382, 383, 381, 40, 384, 40, 40, 40, 00676 385, 386, 40, 387, 388, 40, 40, 389, 392, 40, 00677 40, 393, 391, 40, 40, 394, 40, 40, 390, 397, 00678 395, 396, 401, 400, 40, 403, 40, 40, 40, 402, 00679 40, 398, 40, 40, 40, 40, 40, 40, 399, 405, 00680 40, 40, 406, 409, 411, 40, 410, 407, 412, 404, 00681 40, 413, 40, 415, 416, 408, 414, 418, 40, 40, 00682 417, 40, 40, 40, 40, 40, 40, 40, 421, 40, 00683 425, 40, 40, 40, 419, 40, 423, 40, 40, 424, 00684 00685 429, 430, 426, 40, 40, 422, 427, 433, 420, 40, 00686 40, 40, 428, 435, 40, 40, 431, 40, 434, 40, 00687 436, 40, 437, 440, 432, 40, 40, 438, 441, 439, 00688 40, 40, 40, 40, 442, 40, 40, 40, 447, 444, 00689 443, 40, 40, 40, 451, 40, 40, 446, 445, 40, 00690 450, 40, 40, 40, 40, 449, 40, 452, 40, 40, 00691 448, 37, 37, 37, 37, 39, 39, 50, 40, 50, 00692 50, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00693 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00694 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00695 00696 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00697 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00698 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 00699 40, 40, 40, 40, 40, 40, 40, 40, 40, 198, 00700 40, 40, 40, 40, 110, 40, 38, 453, 3, 453, 00701 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00702 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00703 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00704 453, 453, 453, 453, 453, 453, 453, 453, 453, 453 00705 } ; 00706 00707 static yyconst flex_int16_t yy_chk[991] = 00708 { 0, 00709 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00710 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00711 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00712 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00713 1, 9, 159, 9, 9, 10, 10, 11, 11, 11, 00714 12, 26, 104, 12, 13, 13, 13, 13, 14, 14, 00715 14, 14, 159, 16, 104, 18, 51, 29, 17, 26, 00716 18, 16, 18, 20, 51, 26, 29, 17, 16, 19, 00717 16, 17, 16, 18, 13, 16, 17, 23, 19, 17, 00718 20, 21, 19, 22, 27, 108, 21, 19, 34, 28, 00719 00720 20, 64, 22, 23, 23, 24, 21, 34, 22, 25, 00721 24, 28, 21, 27, 25, 27, 108, 28, 24, 31, 00722 33, 35, 36, 24, 31, 33, 64, 25, 42, 42, 00723 55, 36, 46, 25, 30, 46, 30, 31, 33, 35, 00724 31, 458, 30, 43, 43, 30, 55, 31, 30, 30, 00725 44, 44, 44, 45, 45, 45, 45, 65, 53, 30, 00726 30, 56, 30, 32, 54, 32, 53, 58, 47, 47, 00727 47, 32, 56, 47, 48, 48, 48, 48, 32, 47, 00728 32, 65, 32, 54, 456, 58, 60, 32, 49, 49, 00729 49, 52, 49, 49, 57, 49, 49, 49, 49, 49, 00730 00731 49, 60, 61, 62, 52, 57, 52, 63, 60, 61, 00732 67, 66, 68, 69, 63, 70, 71, 67, 62, 66, 00733 62, 74, 72, 73, 70, 81, 63, 68, 76, 75, 00734 452, 69, 77, 67, 68, 75, 88, 77, 78, 71, 00735 72, 80, 73, 74, 74, 76, 74, 79, 81, 77, 00736 82, 76, 83, 78, 85, 79, 80, 83, 86, 87, 00737 89, 90, 91, 88, 92, 82, 450, 85, 90, 93, 00738 99, 86, 92, 94, 102, 87, 90, 91, 95, 94, 00739 91, 96, 87, 91, 90, 98, 91, 93, 89, 99, 00740 100, 95, 102, 101, 96, 103, 105, 130, 98, 106, 00741 00742 105, 105, 96, 103, 109, 130, 107, 449, 103, 98, 00743 101, 107, 106, 105, 106, 119, 103, 120, 100, 112, 00744 112, 103, 113, 113, 128, 109, 119, 113, 122, 115, 00745 115, 115, 124, 113, 115, 120, 126, 122, 116, 116, 00746 115, 116, 116, 116, 127, 124, 131, 128, 132, 133, 00747 135, 126, 136, 137, 139, 141, 135, 138, 140, 127, 00748 141, 142, 137, 132, 133, 136, 138, 144, 131, 145, 00749 142, 143, 148, 144, 146, 150, 139, 147, 138, 149, 00750 143, 140, 151, 146, 145, 152, 147, 153, 149, 150, 00751 148, 154, 155, 152, 158, 161, 165, 166, 153, 167, 00752 00753 177, 172, 201, 201, 173, 151, 154, 176, 167, 158, 00754 170, 172, 161, 173, 174, 177, 155, 164, 164, 165, 00755 166, 164, 164, 168, 164, 164, 164, 164, 164, 164, 00756 176, 170, 168, 178, 168, 174, 179, 180, 168, 181, 00757 168, 182, 183, 184, 178, 185, 180, 187, 181, 186, 00758 188, 189, 190, 191, 185, 179, 187, 190, 192, 197, 00759 184, 195, 193, 188, 182, 183, 186, 192, 194, 189, 00760 193, 199, 199, 194, 191, 195, 199, 197, 204, 206, 00761 200, 200, 199, 200, 200, 202, 202, 202, 203, 203, 00762 203, 205, 207, 211, 212, 204, 206, 213, 205, 214, 00763 00764 211, 215, 213, 216, 217, 218, 219, 221, 216, 207, 00765 220, 219, 214, 222, 221, 224, 215, 212, 226, 220, 00766 225, 227, 228, 217, 229, 225, 218, 226, 231, 230, 00767 224, 235, 232, 236, 238, 244, 222, 239, 229, 242, 00768 248, 241, 227, 228, 230, 281, 231, 232, 236, 235, 00769 241, 281, 242, 245, 243, 244, 246, 247, 238, 249, 00770 239, 243, 245, 248, 250, 246, 247, 252, 251, 249, 00771 255, 254, 258, 250, 252, 260, 245, 251, 261, 246, 00772 254, 258, 262, 264, 263, 255, 260, 265, 261, 263, 00773 266, 267, 268, 270, 272, 262, 273, 273, 275, 278, 00774 00775 264, 276, 267, 275, 280, 279, 278, 272, 265, 276, 00776 279, 266, 282, 283, 284, 285, 270, 286, 291, 268, 00777 288, 282, 290, 292, 286, 280, 293, 288, 294, 295, 00778 283, 290, 285, 291, 297, 298, 299, 284, 295, 292, 00779 304, 300, 305, 299, 298, 294, 301, 302, 313, 293, 00780 300, 297, 314, 317, 316, 301, 302, 322, 304, 318, 00781 323, 324, 314, 313, 325, 305, 316, 323, 318, 324, 00782 326, 328, 329, 330, 334, 332, 317, 335, 336, 340, 00783 322, 326, 341, 343, 340, 329, 335, 325, 332, 345, 00784 330, 334, 346, 354, 328, 355, 349, 347, 345, 343, 00785 00786 336, 346, 347, 349, 357, 341, 358, 362, 368, 363, 00787 370, 369, 355, 357, 354, 371, 358, 374, 377, 375, 00788 362, 363, 376, 368, 369, 378, 379, 370, 375, 381, 00789 380, 376, 374, 383, 384, 377, 387, 385, 371, 380, 00790 378, 379, 385, 384, 386, 387, 388, 392, 389, 386, 00791 393, 381, 394, 398, 395, 399, 401, 407, 383, 389, 00792 404, 400, 392, 395, 399, 406, 398, 393, 400, 388, 00793 402, 401, 408, 404, 406, 394, 402, 408, 409, 410, 00794 407, 411, 412, 413, 414, 415, 416, 417, 411, 418, 00795 415, 419, 420, 421, 409, 423, 413, 427, 424, 414, 00796 00797 419, 420, 416, 425, 426, 412, 417, 424, 410, 428, 00798 429, 431, 418, 426, 432, 434, 421, 435, 425, 436, 00799 427, 437, 428, 432, 423, 438, 439, 429, 434, 431, 00800 440, 441, 442, 444, 435, 448, 451, 447, 440, 437, 00801 436, 446, 445, 443, 448, 433, 430, 439, 438, 422, 00802 444, 405, 403, 397, 396, 442, 391, 451, 390, 382, 00803 441, 454, 454, 454, 454, 455, 455, 457, 373, 457, 00804 457, 372, 367, 366, 365, 364, 361, 360, 359, 356, 00805 353, 352, 351, 350, 348, 344, 342, 339, 338, 337, 00806 333, 331, 327, 321, 320, 319, 315, 312, 311, 310, 00807 00808 309, 308, 307, 306, 303, 296, 289, 287, 277, 274, 00809 271, 269, 259, 257, 256, 253, 237, 234, 233, 223, 00810 210, 209, 208, 196, 175, 171, 169, 163, 162, 160, 00811 157, 156, 134, 129, 125, 123, 121, 118, 114, 110, 00812 97, 84, 59, 39, 37, 8, 7, 3, 453, 453, 00813 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00814 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00815 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 00816 453, 453, 453, 453, 453, 453, 453, 453, 453, 453 00817 } ; 00818 00819 /* Table of booleans, true if rule could match eol. */ 00820 static yyconst flex_int32_t yy_rule_can_match_eol[108] = 00821 { 0, 00822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 00827 0, 0, 0, 0, 0, 1, 0, 0, }; 00828 00829 static yy_state_type yy_last_accepting_state; 00830 static char *yy_last_accepting_cpos; 00831 00832 extern int llvmAsm_flex_debug; 00833 int llvmAsm_flex_debug = 0; 00834 00835 /* The intent behind this definition is that it'll catch 00836 * any uses of REJECT which flex missed. 00837 */ 00838 #define REJECT reject_used_but_not_detected 00839 #define yymore() yymore_used_but_not_detected 00840 #define YY_MORE_ADJ 0 00841 #define YY_RESTORE_YY_MORE_OFFSET 00842 char *llvmAsmtext; 00843 #line 1 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 00844 /*===-- Lexer.l - Scanner for llvm assembly files --------------*- C++ -*--===// 00845 // 00846 // The LLVM Compiler Infrastructure 00847 // 00848 // This file was developed by the LLVM research group and is distributed under 00849 // the University of Illinois Open Source License. See LICENSE.TXT for details. 00850 // 00851 //===----------------------------------------------------------------------===// 00852 // 00853 // This file implements the flex scanner for LLVM assembly languages files. 00854 // 00855 //===----------------------------------------------------------------------===*/ 00856 #line 28 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 00857 #include "ParserInternals.h" 00858 #include "llvm/Module.h" 00859 #include <list> 00860 #include "llvmAsmParser.h" 00861 #include <cctype> 00862 #include <cstdlib> 00863 00864 void set_scan_file(FILE * F){ 00865 llvmAsm_switch_to_buffer(llvmAsm_create_buffer(F,YY_BUF_SIZE ) ); 00866 } 00867 void set_scan_string (const char * str) { 00868 llvmAsm_scan_string (str); 00869 } 00870 00871 #define RET_TOK(type, Enum, sym) \ 00872 llvmAsmlval.type = Instruction::Enum; return sym 00873 00874 namespace llvm { 00875 00876 // TODO: All of the static identifiers are figured out by the lexer, 00877 // these should be hashed to reduce the lexer size 00878 00879 00880 // atoull - Convert an ascii string of decimal digits into the unsigned long 00881 // long representation... this does not have to do input error checking, 00882 // because we know that the input will be matched by a suitable regex... 00883 // 00884 static uint64_t atoull(const char *Buffer) { 00885 uint64_t Result = 0; 00886 for (; *Buffer; Buffer++) { 00887 uint64_t OldRes = Result; 00888 Result *= 10; 00889 Result += *Buffer-'0'; 00890 if (Result < OldRes) // Uh, oh, overflow detected!!! 00891 ThrowException("constant bigger than 64 bits detected!"); 00892 } 00893 return Result; 00894 } 00895 00896 static uint64_t HexIntToVal(const char *Buffer) { 00897 uint64_t Result = 0; 00898 for (; *Buffer; ++Buffer) { 00899 uint64_t OldRes = Result; 00900 Result *= 16; 00901 char C = *Buffer; 00902 if (C >= '0' && C <= '9') 00903 Result += C-'0'; 00904 else if (C >= 'A' && C <= 'F') 00905 Result += C-'A'+10; 00906 else if (C >= 'a' && C <= 'f') 00907 Result += C-'a'+10; 00908 00909 if (Result < OldRes) // Uh, oh, overflow detected!!! 00910 ThrowException("constant bigger than 64 bits detected!"); 00911 } 00912 return Result; 00913 } 00914 00915 00916 // HexToFP - Convert the ascii string in hexidecimal format to the floating 00917 // point representation of it. 00918 // 00919 static double HexToFP(const char *Buffer) { 00920 // Behave nicely in the face of C TBAA rules... see: 00921 // http://www.nullstone.com/htmls/category/aliastyp.htm 00922 union { 00923 uint64_t UI; 00924 double FP; 00925 } UIntToFP; 00926 UIntToFP.UI = HexIntToVal(Buffer); 00927 00928 assert(sizeof(double) == sizeof(uint64_t) && 00929 "Data sizes incompatible on this target!"); 00930 return UIntToFP.FP; // Cast Hex constant to double 00931 } 00932 00933 00934 // UnEscapeLexed - Run through the specified buffer and change \xx codes to the 00935 // appropriate character. If AllowNull is set to false, a \00 value will cause 00936 // an exception to be thrown. 00937 // 00938 // If AllowNull is set to true, the return value of the function points to the 00939 // last character of the string in memory. 00940 // 00941 char *UnEscapeLexed(char *Buffer, bool AllowNull) { 00942 char *BOut = Buffer; 00943 for (char *BIn = Buffer; *BIn; ) { 00944 if (BIn[0] == '\\' && isxdigit(BIn[1]) && isxdigit(BIn[2])) { 00945 char Tmp = BIn[3]; BIn[3] = 0; // Terminate string 00946 *BOut = (char)strtol(BIn+1, 0, 16); // Convert to number 00947 if (!AllowNull && !*BOut) 00948 ThrowException("String literal cannot accept \\00 escape!"); 00949 00950 BIn[3] = Tmp; // Restore character 00951 BIn += 3; // Skip over handled chars 00952 ++BOut; 00953 } else { 00954 *BOut++ = *BIn++; 00955 } 00956 } 00957 00958 return BOut; 00959 } 00960 00961 } // End llvm namespace 00962 00963 using namespace llvm; 00964 00965 #define YY_NEVER_INTERACTIVE 1 00966 /* Comments start with a ; and go till end of line */ 00967 /* Variable(Value) identifiers start with a % sign */ 00968 /* Label identifiers end with a colon */ 00969 /* Quoted names can contain any character except " and \ */ 00970 /* [PN]Integer: match positive and negative literal integer values that 00971 * are preceeded by a '%' character. These represent unnamed variable slots. 00972 */ 00973 /* E[PN]Integer: match positive and negative literal integer values */ 00974 /* FPConstant - A Floating point constant. 00975 */ 00976 /* HexFPConstant - Floating point constant represented in IEEE format as a 00977 * hexadecimal number for when exponential notation is not precise enough. 00978 */ 00979 /* HexIntConstant - Hexadecimal constant generated by the CFE to avoid forcing 00980 * it to deal with 64 bit numbers. 00981 */ 00982 #line 983 "Lexer.cpp" 00983 00984 #define INITIAL 0 00985 00986 #ifndef YY_NO_UNISTD_H 00987 /* Special case for "unistd.h", since it is non-ANSI. We include it way 00988 * down here because we want the user's section 1 to have been scanned first. 00989 * The user has a chance to override it with an option. 00990 */ 00991 #include <unistd.h> 00992 #endif 00993 00994 #ifndef YY_EXTRA_TYPE 00995 #define YY_EXTRA_TYPE void * 00996 #endif 00997 00998 static int yy_init_globals (void ); 00999 01000 /* Macros after this point can all be overridden by user definitions in 01001 * section 1. 01002 */ 01003 01004 #ifndef YY_SKIP_YYWRAP 01005 #ifdef __cplusplus 01006 extern "C" int llvmAsmwrap (void ); 01007 #else 01008 extern int llvmAsmwrap (void ); 01009 #endif 01010 #endif 01011 01012 static inline void yyunput (int c,char *buf_ptr ); 01013 01014 #ifndef yytext_ptr 01015 static void yy_flex_strncpy (char *,yyconst char *,int ); 01016 #endif 01017 01018 #ifdef YY_NEED_STRLEN 01019 static int yy_flex_strlen (yyconst char * ); 01020 #endif 01021 01022 #ifndef YY_NO_INPUT 01023 01024 #ifdef __cplusplus 01025 static int yyinput (void ); 01026 #else 01027 static int input (void ); 01028 #endif 01029 01030 #endif 01031 01032 /* Amount of stuff to slurp up with each read. */ 01033 #ifndef YY_READ_BUF_SIZE 01034 #define YY_READ_BUF_SIZE 8192 01035 #endif 01036 01037 /* Copy whatever the last rule matched to the standard output. */ 01038 #ifndef ECHO 01039 /* This used to be an fputs(), but since the string might contain NUL's, 01040 * we now use fwrite(). 01041 */ 01042 #define ECHO (void) fwrite( llvmAsmtext, llvmAsmleng, 1, llvmAsmout ) 01043 #endif 01044 01045 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 01046 * is returned in "result". 01047 */ 01048 #ifndef YY_INPUT 01049 #define YY_INPUT(buf,result,max_size) \ 01050 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 01051 { \ 01052 int c = '*'; \ 01053 size_t n; \ 01054 for ( n = 0; n < max_size && \ 01055 (c = getc( llvmAsmin )) != EOF && c != '\n'; ++n ) \ 01056 buf[n] = (char) c; \ 01057 if ( c == '\n' ) \ 01058 buf[n++] = (char) c; \ 01059 if ( c == EOF && ferror( llvmAsmin ) ) \ 01060 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01061 result = n; \ 01062 } \ 01063 else \ 01064 { \ 01065 errno=0; \ 01066 while ( (result = fread(buf, 1, max_size, llvmAsmin))==0 && ferror(llvmAsmin)) \ 01067 { \ 01068 if( errno != EINTR) \ 01069 { \ 01070 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 01071 break; \ 01072 } \ 01073 errno=0; \ 01074 clearerr(llvmAsmin); \ 01075 } \ 01076 }\ 01077 \ 01078 01079 #endif 01080 01081 /* No semi-colon after return; correct usage is to write "yyterminate();" - 01082 * we don't want an extra ';' after the "return" because that will cause 01083 * some compilers to complain about unreachable statements. 01084 */ 01085 #ifndef yyterminate 01086 #define yyterminate() return YY_NULL 01087 #endif 01088 01089 /* Number of entries by which start-condition stack grows. */ 01090 #ifndef YY_START_STACK_INCR 01091 #define YY_START_STACK_INCR 25 01092 #endif 01093 01094 /* Report a fatal error. */ 01095 #ifndef YY_FATAL_ERROR 01096 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 01097 #endif 01098 01099 /* end tables serialization structures and prototypes */ 01100 01101 /* Default declaration of generated scanner - a define so the user can 01102 * easily add parameters. 01103 */ 01104 #ifndef YY_DECL 01105 #define YY_DECL_IS_OURS 1 01106 01107 extern int llvmAsmlex (void); 01108 01109 #define YY_DECL int llvmAsmlex (void) 01110 #endif /* !YY_DECL */ 01111 01112 /* Code executed at the beginning of each rule, after llvmAsmtext and llvmAsmleng 01113 * have been set up. 01114 */ 01115 #ifndef YY_USER_ACTION 01116 #define YY_USER_ACTION 01117 #endif 01118 01119 /* Code executed at the end of each rule. */ 01120 #ifndef YY_BREAK 01121 #define YY_BREAK break; 01122 #endif 01123 01124 #define YY_RULE_SETUP \ 01125 YY_USER_ACTION 01126 01127 /** The main scanner function which does all the work. 01128 */ 01129 YY_DECL 01130 { 01131 register yy_state_type yy_current_state; 01132 register char *yy_cp, *yy_bp; 01133 register int yy_act; 01134 01135 #line 179 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01136 01137 01138 #line 1139 "Lexer.cpp" 01139 01140 if ( !(yy_init) ) 01141 { 01142 (yy_init) = 1; 01143 01144 #ifdef YY_USER_INIT 01145 YY_USER_INIT; 01146 #endif 01147 01148 if ( ! (yy_start) ) 01149 (yy_start) = 1; /* first start state */ 01150 01151 if ( ! llvmAsmin ) 01152 llvmAsmin = stdin; 01153 01154 if ( ! llvmAsmout ) 01155 llvmAsmout = stdout; 01156 01157 if ( ! YY_CURRENT_BUFFER ) { 01158 llvmAsmensure_buffer_stack (); 01159 YY_CURRENT_BUFFER_LVALUE = 01160 llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); 01161 } 01162 01163 llvmAsm_load_buffer_state( ); 01164 } 01165 01166 while ( 1 ) /* loops until end-of-file is reached */ 01167 { 01168 yy_cp = (yy_c_buf_p); 01169 01170 /* Support of llvmAsmtext. */ 01171 *yy_cp = (yy_hold_char); 01172 01173 /* yy_bp points to the position in yy_ch_buf of the start of 01174 * the current run. 01175 */ 01176 yy_bp = yy_cp; 01177 01178 yy_current_state = (yy_start); 01179 yy_match: 01180 do 01181 { 01182 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 01183 if ( yy_accept[yy_current_state] ) 01184 { 01185 (yy_last_accepting_state) = yy_current_state; 01186 (yy_last_accepting_cpos) = yy_cp; 01187 } 01188 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 01189 { 01190 yy_current_state = (int) yy_def[yy_current_state]; 01191 if ( yy_current_state >= 454 ) 01192 yy_c = yy_meta[(unsigned int) yy_c]; 01193 } 01194 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 01195 ++yy_cp; 01196 } 01197 while ( yy_current_state != 453 ); 01198 yy_cp = (yy_last_accepting_cpos); 01199 yy_current_state = (yy_last_accepting_state); 01200 01201 yy_find_action: 01202 yy_act = yy_accept[yy_current_state]; 01203 01204 YY_DO_BEFORE_ACTION; 01205 01206 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) 01207 { 01208 int yyl; 01209 for ( yyl = 0; yyl < llvmAsmleng; ++yyl ) 01210 if ( llvmAsmtext[yyl] == '\n' ) 01211 01212 llvmAsmlineno++; 01213 ; 01214 } 01215 01216 do_action: /* This label is used only to access EOF actions. */ 01217 01218 switch ( yy_act ) 01219 { /* beginning of action switch */ 01220 case 0: /* must back up */ 01221 /* undo the effects of YY_DO_BEFORE_ACTION */ 01222 *yy_cp = (yy_hold_char); 01223 yy_cp = (yy_last_accepting_cpos); 01224 yy_current_state = (yy_last_accepting_state); 01225 goto yy_find_action; 01226 01227 case 1: 01228 YY_RULE_SETUP 01229 #line 181 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01230 { /* Ignore comments for now */ } 01231 YY_BREAK 01232 case 2: 01233 YY_RULE_SETUP 01234 #line 183 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01235 { return BEGINTOK; } 01236 YY_BREAK 01237 case 3: 01238 YY_RULE_SETUP 01239 #line 184 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01240 { return ENDTOK; } 01241 YY_BREAK 01242 case 4: 01243 YY_RULE_SETUP 01244 #line 185 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01245 { return TRUETOK; } 01246 YY_BREAK 01247 case 5: 01248 YY_RULE_SETUP 01249 #line 186 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01250 { return FALSETOK; } 01251 YY_BREAK 01252 case 6: 01253 YY_RULE_SETUP 01254 #line 187 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01255 { return DECLARE; } 01256 YY_BREAK 01257 case 7: 01258 YY_RULE_SETUP 01259 #line 188 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01260 { return GLOBAL; } 01261 YY_BREAK 01262 case 8: 01263 YY_RULE_SETUP 01264 #line 189 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01265 { return CONSTANT; } 01266 YY_BREAK 01267 case 9: 01268 YY_RULE_SETUP 01269 #line 190 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01270 { return INTERNAL; } 01271 YY_BREAK 01272 case 10: 01273 YY_RULE_SETUP 01274 #line 191 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01275 { return LINKONCE; } 01276 YY_BREAK 01277 case 11: 01278 YY_RULE_SETUP 01279 #line 192 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01280 { return WEAK; } 01281 YY_BREAK 01282 case 12: 01283 YY_RULE_SETUP 01284 #line 193 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01285 { return APPENDING; } 01286 YY_BREAK 01287 case 13: 01288 YY_RULE_SETUP 01289 #line 194 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01290 { return EXTERNAL; } /* Deprecated, turn into external */ 01291 YY_BREAK 01292 case 14: 01293 YY_RULE_SETUP 01294 #line 195 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01295 { return EXTERNAL; } 01296 YY_BREAK 01297 case 15: 01298 YY_RULE_SETUP 01299 #line 196 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01300 { return IMPLEMENTATION; } 01301 YY_BREAK 01302 case 16: 01303 YY_RULE_SETUP 01304 #line 197 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01305 { return ZEROINITIALIZER; } 01306 YY_BREAK 01307 case 17: 01308 YY_RULE_SETUP 01309 #line 198 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01310 { return DOTDOTDOT; } 01311 YY_BREAK 01312 case 18: 01313 YY_RULE_SETUP 01314 #line 199 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01315 { return UNDEF; } 01316 YY_BREAK 01317 case 19: 01318 YY_RULE_SETUP 01319 #line 200 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01320 { return NULL_TOK; } 01321 YY_BREAK 01322 case 20: 01323 YY_RULE_SETUP 01324 #line 201 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01325 { return TO; } 01326 YY_BREAK 01327 case 21: 01328 YY_RULE_SETUP 01329 #line 202 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01330 { RET_TOK(TermOpVal, Unwind, UNWIND); } 01331 YY_BREAK 01332 case 22: 01333 YY_RULE_SETUP 01334 #line 203 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01335 { return NOT; } /* Deprecated, turned into XOR */ 01336 YY_BREAK 01337 case 23: 01338 YY_RULE_SETUP 01339 #line 204 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01340 { return TAIL; } 01341 YY_BREAK 01342 case 24: 01343 YY_RULE_SETUP 01344 #line 205 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01345 { return TARGET; } 01346 YY_BREAK 01347 case 25: 01348 YY_RULE_SETUP 01349 #line 206 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01350 { return TRIPLE; } 01351 YY_BREAK 01352 case 26: 01353 YY_RULE_SETUP 01354 #line 207 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01355 { return DEPLIBS; } 01356 YY_BREAK 01357 case 27: 01358 YY_RULE_SETUP 01359 #line 208 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01360 { return ENDIAN; } 01361 YY_BREAK 01362 case 28: 01363 YY_RULE_SETUP 01364 #line 209 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01365 { return POINTERSIZE; } 01366 YY_BREAK 01367 case 29: 01368 YY_RULE_SETUP 01369 #line 210 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01370 { return LITTLE; } 01371 YY_BREAK 01372 case 30: 01373 YY_RULE_SETUP 01374 #line 211 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01375 { return BIG; } 01376 YY_BREAK 01377 case 31: 01378 YY_RULE_SETUP 01379 #line 212 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01380 { return VOLATILE; } 01381 YY_BREAK 01382 case 32: 01383 YY_RULE_SETUP 01384 #line 213 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01385 { return ALIGN; } 01386 YY_BREAK 01387 case 33: 01388 YY_RULE_SETUP 01389 #line 214 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01390 { return SECTION; } 01391 YY_BREAK 01392 case 34: 01393 YY_RULE_SETUP 01394 #line 215 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01395 { return MODULE; } 01396 YY_BREAK 01397 case 35: 01398 YY_RULE_SETUP 01399 #line 216 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01400 { return ASM_TOK; } 01401 YY_BREAK 01402 case 36: 01403 YY_RULE_SETUP 01404 #line 217 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01405 { return SIDEEFFECT; } 01406 YY_BREAK 01407 case 37: 01408 YY_RULE_SETUP 01409 #line 219 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01410 { return CC_TOK; } 01411 YY_BREAK 01412 case 38: 01413 YY_RULE_SETUP 01414 #line 220 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01415 { return CCC_TOK; } 01416 YY_BREAK 01417 case 39: 01418 YY_RULE_SETUP 01419 #line 221 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01420 { return FASTCC_TOK; } 01421 YY_BREAK 01422 case 40: 01423 YY_RULE_SETUP 01424 #line 222 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01425 { return COLDCC_TOK; } 01426 YY_BREAK 01427 case 41: 01428 YY_RULE_SETUP 01429 #line 224 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01430 { llvmAsmlval.PrimType = Type::VoidTy ; return VOID; } 01431 YY_BREAK 01432 case 42: 01433 YY_RULE_SETUP 01434 #line 225 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01435 { llvmAsmlval.PrimType = Type::BoolTy ; return BOOL; } 01436 YY_BREAK 01437 case 43: 01438 YY_RULE_SETUP 01439 #line 226 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01440 { llvmAsmlval.PrimType = Type::SByteTy ; return SBYTE; } 01441 YY_BREAK 01442 case 44: 01443 YY_RULE_SETUP 01444 #line 227 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01445 { llvmAsmlval.PrimType = Type::UByteTy ; return UBYTE; } 01446 YY_BREAK 01447 case 45: 01448 YY_RULE_SETUP 01449 #line 228 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01450 { llvmAsmlval.PrimType = Type::ShortTy ; return SHORT; } 01451 YY_BREAK 01452 case 46: 01453 YY_RULE_SETUP 01454 #line 229 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01455 { llvmAsmlval.PrimType = Type::UShortTy; return USHORT; } 01456 YY_BREAK 01457 case 47: 01458 YY_RULE_SETUP 01459 #line 230 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01460 { llvmAsmlval.PrimType = Type::IntTy ; return INT; } 01461 YY_BREAK 01462 case 48: 01463 YY_RULE_SETUP 01464 #line 231 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01465 { llvmAsmlval.PrimType = Type::UIntTy ; return UINT; } 01466 YY_BREAK 01467 case 49: 01468 YY_RULE_SETUP 01469 #line 232 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01470 { llvmAsmlval.PrimType = Type::LongTy ; return LONG; } 01471 YY_BREAK 01472 case 50: 01473 YY_RULE_SETUP 01474 #line 233 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01475 { llvmAsmlval.PrimType = Type::ULongTy ; return ULONG; } 01476 YY_BREAK 01477 case 51: 01478 YY_RULE_SETUP 01479 #line 234 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01480 { llvmAsmlval.PrimType = Type::FloatTy ; return FLOAT; } 01481 YY_BREAK 01482 case 52: 01483 YY_RULE_SETUP 01484 #line 235 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01485 { llvmAsmlval.PrimType = Type::DoubleTy; return DOUBLE; } 01486 YY_BREAK 01487 case 53: 01488 YY_RULE_SETUP 01489 #line 236 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01490 { llvmAsmlval.PrimType = Type::LabelTy ; return LABEL; } 01491 YY_BREAK 01492 case 54: 01493 YY_RULE_SETUP 01494 #line 237 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01495 { return TYPE; } 01496 YY_BREAK 01497 case 55: 01498 YY_RULE_SETUP 01499 #line 238 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01500 { return OPAQUE; } 01501 YY_BREAK 01502 case 56: 01503 YY_RULE_SETUP 01504 #line 240 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01505 { RET_TOK(BinaryOpVal, Add, ADD); } 01506 YY_BREAK 01507 case 57: 01508 YY_RULE_SETUP 01509 #line 241 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01510 { RET_TOK(BinaryOpVal, Sub, SUB); } 01511 YY_BREAK 01512 case 58: 01513 YY_RULE_SETUP 01514 #line 242 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01515 { RET_TOK(BinaryOpVal, Mul, MUL); } 01516 YY_BREAK 01517 case 59: 01518 YY_RULE_SETUP 01519 #line 243 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01520 { RET_TOK(BinaryOpVal, Div, DIV); } 01521 YY_BREAK 01522 case 60: 01523 YY_RULE_SETUP 01524 #line 244 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01525 { RET_TOK(BinaryOpVal, Rem, REM); } 01526 YY_BREAK 01527 case 61: 01528 YY_RULE_SETUP 01529 #line 245 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01530 { RET_TOK(BinaryOpVal, And, AND); } 01531 YY_BREAK 01532 case 62: 01533 YY_RULE_SETUP 01534 #line 246 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01535 { RET_TOK(BinaryOpVal, Or , OR ); } 01536 YY_BREAK 01537 case 63: 01538 YY_RULE_SETUP 01539 #line 247 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01540 { RET_TOK(BinaryOpVal, Xor, XOR); } 01541 YY_BREAK 01542 case 64: 01543 YY_RULE_SETUP 01544 #line 248 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01545 { RET_TOK(BinaryOpVal, SetNE, SETNE); } 01546 YY_BREAK 01547 case 65: 01548 YY_RULE_SETUP 01549 #line 249 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01550 { RET_TOK(BinaryOpVal, SetEQ, SETEQ); } 01551 YY_BREAK 01552 case 66: 01553 YY_RULE_SETUP 01554 #line 250 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01555 { RET_TOK(BinaryOpVal, SetLT, SETLT); } 01556 YY_BREAK 01557 case 67: 01558 YY_RULE_SETUP 01559 #line 251 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01560 { RET_TOK(BinaryOpVal, SetGT, SETGT); } 01561 YY_BREAK 01562 case 68: 01563 YY_RULE_SETUP 01564 #line 252 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01565 { RET_TOK(BinaryOpVal, SetLE, SETLE); } 01566 YY_BREAK 01567 case 69: 01568 YY_RULE_SETUP 01569 #line 253 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01570 { RET_TOK(BinaryOpVal, SetGE, SETGE); } 01571 YY_BREAK 01572 case 70: 01573 YY_RULE_SETUP 01574 #line 255 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01575 { RET_TOK(OtherOpVal, PHI, PHI_TOK); } 01576 YY_BREAK 01577 case 71: 01578 YY_RULE_SETUP 01579 #line 256 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01580 { RET_TOK(OtherOpVal, Call, CALL); } 01581 YY_BREAK 01582 case 72: 01583 YY_RULE_SETUP 01584 #line 257 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01585 { RET_TOK(OtherOpVal, Cast, CAST); } 01586 YY_BREAK 01587 case 73: 01588 YY_RULE_SETUP 01589 #line 258 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01590 { RET_TOK(OtherOpVal, Select, SELECT); } 01591 YY_BREAK 01592 case 74: 01593 YY_RULE_SETUP 01594 #line 259 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01595 { RET_TOK(OtherOpVal, Shl, SHL); } 01596 YY_BREAK 01597 case 75: 01598 YY_RULE_SETUP 01599 #line 260 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01600 { RET_TOK(OtherOpVal, Shr, SHR); } 01601 YY_BREAK 01602 case 76: 01603 YY_RULE_SETUP 01604 #line 261 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01605 { return VANEXT_old; } 01606 YY_BREAK 01607 case 77: 01608 YY_RULE_SETUP 01609 #line 262 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01610 { return VAARG_old; } 01611 YY_BREAK 01612 case 78: 01613 YY_RULE_SETUP 01614 #line 263 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01615 { RET_TOK(OtherOpVal, VAArg , VAARG); } 01616 YY_BREAK 01617 case 79: 01618 YY_RULE_SETUP 01619 #line 264 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01620 { RET_TOK(TermOpVal, Ret, RET); } 01621 YY_BREAK 01622 case 80: 01623 YY_RULE_SETUP 01624 #line 265 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01625 { RET_TOK(TermOpVal, Br, BR); } 01626 YY_BREAK 01627 case 81: 01628 YY_RULE_SETUP 01629 #line 266 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01630 { RET_TOK(TermOpVal, Switch, SWITCH); } 01631 YY_BREAK 01632 case 82: 01633 YY_RULE_SETUP 01634 #line 267 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01635 { RET_TOK(TermOpVal, Invoke, INVOKE); } 01636 YY_BREAK 01637 case 83: 01638 YY_RULE_SETUP 01639 #line 268 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01640 { RET_TOK(TermOpVal, Unwind, UNWIND); } 01641 YY_BREAK 01642 case 84: 01643 YY_RULE_SETUP 01644 #line 269 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01645 { RET_TOK(TermOpVal, Unreachable, UNREACHABLE); } 01646 YY_BREAK 01647 case 85: 01648 YY_RULE_SETUP 01649 #line 271 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01650 { RET_TOK(MemOpVal, Malloc, MALLOC); } 01651 YY_BREAK 01652 case 86: 01653 YY_RULE_SETUP 01654 #line 272 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01655 { RET_TOK(MemOpVal, Alloca, ALLOCA); } 01656 YY_BREAK 01657 case 87: 01658 YY_RULE_SETUP 01659 #line 273 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01660 { RET_TOK(MemOpVal, Free, FREE); } 01661 YY_BREAK 01662 case 88: 01663 YY_RULE_SETUP 01664 #line 274 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01665 { RET_TOK(MemOpVal, Load, LOAD); } 01666 YY_BREAK 01667 case 89: 01668 YY_RULE_SETUP 01669 #line 275 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01670 { RET_TOK(MemOpVal, Store, STORE); } 01671 YY_BREAK 01672 case 90: 01673 YY_RULE_SETUP 01674 #line 276 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01675 { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } 01676 YY_BREAK 01677 case 91: 01678 YY_RULE_SETUP 01679 #line 278 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01680 { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); } 01681 YY_BREAK 01682 case 92: 01683 YY_RULE_SETUP 01684 #line 279 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01685 { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); } 01686 YY_BREAK 01687 case 93: 01688 YY_RULE_SETUP 01689 #line 280 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01690 { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); } 01691 YY_BREAK 01692 case 94: 01693 YY_RULE_SETUP 01694 #line 283 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01695 { 01696 UnEscapeLexed(llvmAsmtext+1); 01697 llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Skip % 01698 return VAR_ID; 01699 } 01700 YY_BREAK 01701 case 95: 01702 YY_RULE_SETUP 01703 #line 288 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01704 { 01705 llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke colon 01706 UnEscapeLexed(llvmAsmtext); 01707 llvmAsmlval.StrVal = strdup(llvmAsmtext); 01708 return LABELSTR; 01709 } 01710 YY_BREAK 01711 case 96: 01712 /* rule 96 can match eol */ 01713 YY_RULE_SETUP 01714 #line 294 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01715 { 01716 llvmAsmtext[strlen(llvmAsmtext)-2] = 0; // nuke colon, end quote 01717 UnEscapeLexed(llvmAsmtext+1); 01718 llvmAsmlval.StrVal = strdup(llvmAsmtext+1); 01719 return LABELSTR; 01720 } 01721 YY_BREAK 01722 case 97: 01723 /* rule 97 can match eol */ 01724 YY_RULE_SETUP 01725 #line 301 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01726 { // Note that we cannot unescape a string constant here! The 01727 // string constant might contain a \00 which would not be 01728 // understood by the string stuff. It is valid to make a 01729 // [sbyte] c"Hello World\00" constant, for example. 01730 // 01731 llvmAsmtext[strlen(llvmAsmtext)-1] = 0; // nuke end quote 01732 llvmAsmlval.StrVal = strdup(llvmAsmtext+1); // Nuke start quote 01733 return STRINGCONSTANT; 01734 } 01735 YY_BREAK 01736 case 98: 01737 YY_RULE_SETUP 01738 #line 312 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01739 { llvmAsmlval.UInt64Val = atoull(llvmAsmtext); return EUINT64VAL; } 01740 YY_BREAK 01741 case 99: 01742 YY_RULE_SETUP 01743 #line 313 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01744 { 01745 uint64_t Val = atoull(llvmAsmtext+1); 01746 // +1: we have bigger negative range 01747 if (Val > (uint64_t)INT64_MAX+1) 01748 ThrowException("Constant too large for signed 64 bits!"); 01749 llvmAsmlval.SInt64Val = -Val; 01750 return ESINT64VAL; 01751 } 01752 YY_BREAK 01753 case 100: 01754 YY_RULE_SETUP 01755 #line 321 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01756 { 01757 llvmAsmlval.UInt64Val = HexIntToVal(llvmAsmtext+3); 01758 return llvmAsmtext[0] == 's' ? ESINT64VAL : EUINT64VAL; 01759 } 01760 YY_BREAK 01761 case 101: 01762 YY_RULE_SETUP 01763 #line 326 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01764 { 01765 uint64_t Val = atoull(llvmAsmtext+1); 01766 if ((unsigned)Val != Val) 01767 ThrowException("Invalid value number (too large)!"); 01768 llvmAsmlval.UIntVal = unsigned(Val); 01769 return UINTVAL; 01770 } 01771 YY_BREAK 01772 case 102: 01773 YY_RULE_SETUP 01774 #line 333 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01775 { 01776 uint64_t Val = atoull(llvmAsmtext+2); 01777 // +1: we have bigger negative range 01778 if (Val > (uint64_t)INT32_MAX+1) 01779 ThrowException("Constant too large for signed 32 bits!"); 01780 llvmAsmlval.SIntVal = (int)-Val; 01781 return SINTVAL; 01782 } 01783 YY_BREAK 01784 case 103: 01785 YY_RULE_SETUP 01786 #line 342 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01787 { llvmAsmlval.FPVal = atof(llvmAsmtext); return FPVAL; } 01788 YY_BREAK 01789 case 104: 01790 YY_RULE_SETUP 01791 #line 343 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01792 { llvmAsmlval.FPVal = HexToFP(llvmAsmtext); return FPVAL; } 01793 YY_BREAK 01794 case YY_STATE_EOF(INITIAL): 01795 #line 345 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01796 { 01797 /* Make sure to free the internal buffers for flex when we are 01798 * done reading our input! 01799 */ 01800 llvmAsm_delete_buffer(YY_CURRENT_BUFFER); 01801 return EOF; 01802 } 01803 YY_BREAK 01804 case 105: 01805 /* rule 105 can match eol */ 01806 YY_RULE_SETUP 01807 #line 353 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01808 { /* Ignore whitespace */ } 01809 YY_BREAK 01810 case 106: 01811 YY_RULE_SETUP 01812 #line 354 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01813 { return llvmAsmtext[0]; } 01814 YY_BREAK 01815 case 107: 01816 YY_RULE_SETUP 01817 #line 356 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 01818 YY_FATAL_ERROR( "flex scanner jammed" ); 01819 YY_BREAK 01820 #line 1821 "Lexer.cpp" 01821 01822 case YY_END_OF_BUFFER: 01823 { 01824 /* Amount of text matched not including the EOB char. */ 01825 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 01826 01827 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 01828 *yy_cp = (yy_hold_char); 01829 YY_RESTORE_YY_MORE_OFFSET 01830 01831 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 01832 { 01833 /* We're scanning a new file or input source. It's 01834 * possible that this happened because the user 01835 * just pointed llvmAsmin at a new source and called 01836 * llvmAsmlex(). If so, then we have to assure 01837 * consistency between YY_CURRENT_BUFFER and our 01838 * globals. Here is the right place to do so, because 01839 * this is the first action (other than possibly a 01840 * back-up) that will match for the new input source. 01841 */ 01842 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 01843 YY_CURRENT_BUFFER_LVALUE->yy_input_file = llvmAsmin; 01844 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 01845 } 01846 01847 /* Note that here we test for yy_c_buf_p "<=" to the position 01848 * of the first EOB in the buffer, since yy_c_buf_p will 01849 * already have been incremented past the NUL character 01850 * (since all states make transitions on EOB to the 01851 * end-of-buffer state). Contrast this with the test 01852 * in input(). 01853 */ 01854 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 01855 { /* This was really a NUL. */ 01856 yy_state_type yy_next_state; 01857 01858 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 01859 01860 yy_current_state = yy_get_previous_state( ); 01861 01862 /* Okay, we're now positioned to make the NUL 01863 * transition. We couldn't have 01864 * yy_get_previous_state() go ahead and do it 01865 * for us because it doesn't know how to deal 01866 * with the possibility of jamming (and we don't 01867 * want to build jamming into it because then it 01868 * will run more slowly). 01869 */ 01870 01871 yy_next_state = yy_try_NUL_trans( yy_current_state ); 01872 01873 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01874 01875 if ( yy_next_state ) 01876 { 01877 /* Consume the NUL. */ 01878 yy_cp = ++(yy_c_buf_p); 01879 yy_current_state = yy_next_state; 01880 goto yy_match; 01881 } 01882 01883 else 01884 { 01885 yy_cp = (yy_last_accepting_cpos); 01886 yy_current_state = (yy_last_accepting_state); 01887 goto yy_find_action; 01888 } 01889 } 01890 01891 else switch ( yy_get_next_buffer( ) ) 01892 { 01893 case EOB_ACT_END_OF_FILE: 01894 { 01895 (yy_did_buffer_switch_on_eof) = 0; 01896 01897 if ( llvmAsmwrap( ) ) 01898 { 01899 /* Note: because we've taken care in 01900 * yy_get_next_buffer() to have set up 01901 * llvmAsmtext, we can now set up 01902 * yy_c_buf_p so that if some total 01903 * hoser (like flex itself) wants to 01904 * call the scanner after we return the 01905 * YY_NULL, it'll still work - another 01906 * YY_NULL will get returned. 01907 */ 01908 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 01909 01910 yy_act = YY_STATE_EOF(YY_START); 01911 goto do_action; 01912 } 01913 01914 else 01915 { 01916 if ( ! (yy_did_buffer_switch_on_eof) ) 01917 YY_NEW_FILE; 01918 } 01919 break; 01920 } 01921 01922 case EOB_ACT_CONTINUE_SCAN: 01923 (yy_c_buf_p) = 01924 (yytext_ptr) + yy_amount_of_matched_text; 01925 01926 yy_current_state = yy_get_previous_state( ); 01927 01928 yy_cp = (yy_c_buf_p); 01929 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01930 goto yy_match; 01931 01932 case EOB_ACT_LAST_MATCH: 01933 (yy_c_buf_p) = 01934 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 01935 01936 yy_current_state = yy_get_previous_state( ); 01937 01938 yy_cp = (yy_c_buf_p); 01939 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 01940 goto yy_find_action; 01941 } 01942 break; 01943 } 01944 01945 default: 01946 YY_FATAL_ERROR( 01947 "fatal flex scanner internal error--no action found" ); 01948 } /* end of action switch */ 01949 } /* end of scanning one token */ 01950 } /* end of llvmAsmlex */ 01951 01952 /* yy_get_next_buffer - try to read in a new buffer 01953 * 01954 * Returns a code representing an action: 01955 * EOB_ACT_LAST_MATCH - 01956 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 01957 * EOB_ACT_END_OF_FILE - end of file 01958 */ 01959 static int yy_get_next_buffer (void) 01960 { 01961 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 01962 register char *source = (yytext_ptr); 01963 register int number_to_move, i; 01964 int ret_val; 01965 01966 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 01967 YY_FATAL_ERROR( 01968 "fatal flex scanner internal error--end of buffer missed" ); 01969 01970 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 01971 { /* Don't try to fill the buffer, so this is an EOF. */ 01972 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 01973 { 01974 /* We matched a single character, the EOB, so 01975 * treat this as a final EOF. 01976 */ 01977 return EOB_ACT_END_OF_FILE; 01978 } 01979 01980 else 01981 { 01982 /* We matched some text prior to the EOB, first 01983 * process it. 01984 */ 01985 return EOB_ACT_LAST_MATCH; 01986 } 01987 } 01988 01989 /* Try to read more data. */ 01990 01991 /* First move last chars to start of buffer. */ 01992 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 01993 01994 for ( i = 0; i < number_to_move; ++i ) 01995 *(dest++) = *(source++); 01996 01997 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 01998 /* don't do the read, it's not guaranteed to return an EOF, 01999 * just force an EOF 02000 */ 02001 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 02002 02003 else 02004 { 02005 int num_to_read = 02006 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 02007 02008 while ( num_to_read <= 0 ) 02009 { /* Not enough room in the buffer - grow it. */ 02010 02011 /* just a shorter name for the current buffer */ 02012 YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 02013 02014 int yy_c_buf_p_offset = 02015 (int) ((yy_c_buf_p) - b->yy_ch_buf); 02016 02017 if ( b->yy_is_our_buffer ) 02018 { 02019 int new_size = b->yy_buf_size * 2; 02020 02021 if ( new_size <= 0 ) 02022 b->yy_buf_size += b->yy_buf_size / 8; 02023 else 02024 b->yy_buf_size *= 2; 02025 02026 b->yy_ch_buf = (char *) 02027 /* Include room in for 2 EOB chars. */ 02028 llvmAsmrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); 02029 } 02030 else 02031 /* Can't grow it, we don't own it. */ 02032 b->yy_ch_buf = 0; 02033 02034 if ( ! b->yy_ch_buf ) 02035 YY_FATAL_ERROR( 02036 "fatal error - scanner input buffer overflow" ); 02037 02038 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 02039 02040 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 02041 number_to_move - 1; 02042 02043 } 02044 02045 if ( num_to_read > YY_READ_BUF_SIZE ) 02046 num_to_read = YY_READ_BUF_SIZE; 02047 02048 /* Read in more data. */ 02049 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 02050 (yy_n_chars), num_to_read ); 02051 02052 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02053 } 02054 02055 if ( (yy_n_chars) == 0 ) 02056 { 02057 if ( number_to_move == YY_MORE_ADJ ) 02058 { 02059 ret_val = EOB_ACT_END_OF_FILE; 02060 llvmAsmrestart(llvmAsmin ); 02061 } 02062 02063 else 02064 { 02065 ret_val = EOB_ACT_LAST_MATCH; 02066 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 02067 YY_BUFFER_EOF_PENDING; 02068 } 02069 } 02070 02071 else 02072 ret_val = EOB_ACT_CONTINUE_SCAN; 02073 02074 (yy_n_chars) += number_to_move; 02075 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 02076 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 02077 02078 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 02079 02080 return ret_val; 02081 } 02082 02083 /* yy_get_previous_state - get the state just before the EOB char was reached */ 02084 02085 static yy_state_type yy_get_previous_state (void) 02086 { 02087 register yy_state_type yy_current_state; 02088 register char *yy_cp; 02089 02090 yy_current_state = (yy_start); 02091 02092 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 02093 { 02094 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 02095 if ( yy_accept[yy_current_state] ) 02096 { 02097 (yy_last_accepting_state) = yy_current_state; 02098 (yy_last_accepting_cpos) = yy_cp; 02099 } 02100 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02101 { 02102 yy_current_state = (int) yy_def[yy_current_state]; 02103 if ( yy_current_state >= 454 ) 02104 yy_c = yy_meta[(unsigned int) yy_c]; 02105 } 02106 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02107 } 02108 02109 return yy_current_state; 02110 } 02111 02112 /* yy_try_NUL_trans - try to make a transition on the NUL character 02113 * 02114 * synopsis 02115 * next_state = yy_try_NUL_trans( current_state ); 02116 */ 02117 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 02118 { 02119 register int yy_is_jam; 02120 register char *yy_cp = (yy_c_buf_p); 02121 02122 register YY_CHAR yy_c = 1; 02123 if ( yy_accept[yy_current_state] ) 02124 { 02125 (yy_last_accepting_state) = yy_current_state; 02126 (yy_last_accepting_cpos) = yy_cp; 02127 } 02128 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 02129 { 02130 yy_current_state = (int) yy_def[yy_current_state]; 02131 if ( yy_current_state >= 454 ) 02132 yy_c = yy_meta[(unsigned int) yy_c]; 02133 } 02134 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 02135 yy_is_jam = (yy_current_state == 453); 02136 02137 return yy_is_jam ? 0 : yy_current_state; 02138 } 02139 02140 static inline void yyunput (int c, register char * yy_bp ) 02141 { 02142 register char *yy_cp; 02143 02144 yy_cp = (yy_c_buf_p); 02145 02146 /* undo effects of setting up llvmAsmtext */ 02147 *yy_cp = (yy_hold_char); 02148 02149 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02150 { /* need to shift things up to make room */ 02151 /* +2 for EOB chars. */ 02152 register int number_to_move = (yy_n_chars) + 2; 02153 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 02154 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 02155 register char *source = 02156 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 02157 02158 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 02159 *--dest = *--source; 02160 02161 yy_cp += (int) (dest - source); 02162 yy_bp += (int) (dest - source); 02163 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 02164 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 02165 02166 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 02167 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 02168 } 02169 02170 *--yy_cp = (char) c; 02171 02172 if ( c == '\n' ){ 02173 --llvmAsmlineno; 02174 } 02175 02176 (yytext_ptr) = yy_bp; 02177 (yy_hold_char) = *yy_cp; 02178 (yy_c_buf_p) = yy_cp; 02179 } 02180 02181 #ifndef YY_NO_INPUT 02182 #ifdef __cplusplus 02183 static int yyinput (void) 02184 #else 02185 static int input (void) 02186 #endif 02187 02188 { 02189 int c; 02190 02191 *(yy_c_buf_p) = (yy_hold_char); 02192 02193 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 02194 { 02195 /* yy_c_buf_p now points to the character we want to return. 02196 * If this occurs *before* the EOB characters, then it's a 02197 * valid NUL; if not, then we've hit the end of the buffer. 02198 */ 02199 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 02200 /* This was really a NUL. */ 02201 *(yy_c_buf_p) = '\0'; 02202 02203 else 02204 { /* need more input */ 02205 int offset = (yy_c_buf_p) - (yytext_ptr); 02206 ++(yy_c_buf_p); 02207 02208 switch ( yy_get_next_buffer( ) ) 02209 { 02210 case EOB_ACT_LAST_MATCH: 02211 /* This happens because yy_g_n_b() 02212 * sees that we've accumulated a 02213 * token and flags that we need to 02214 * try matching the token before 02215 * proceeding. But for input(), 02216 * there's no matching to consider. 02217 * So convert the EOB_ACT_LAST_MATCH 02218 * to EOB_ACT_END_OF_FILE. 02219 */ 02220 02221 /* Reset buffer status. */ 02222 llvmAsmrestart(llvmAsmin ); 02223 02224 /*FALLTHROUGH*/ 02225 02226 case EOB_ACT_END_OF_FILE: 02227 { 02228 if ( llvmAsmwrap( ) ) 02229 return EOF; 02230 02231 if ( ! (yy_did_buffer_switch_on_eof) ) 02232 YY_NEW_FILE; 02233 #ifdef __cplusplus 02234 return yyinput(); 02235 #else 02236 return input(); 02237 #endif 02238 } 02239 02240 case EOB_ACT_CONTINUE_SCAN: 02241 (yy_c_buf_p) = (yytext_ptr) + offset; 02242 break; 02243 } 02244 } 02245 } 02246 02247 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 02248 *(yy_c_buf_p) = '\0'; /* preserve llvmAsmtext */ 02249 (yy_hold_char) = *++(yy_c_buf_p); 02250 02251 if ( c == '\n' ) 02252 02253 llvmAsmlineno++; 02254 ; 02255 02256 return c; 02257 } 02258 #endif /* ifndef YY_NO_INPUT */ 02259 02260 /** Immediately switch to a different input stream. 02261 * @param input_file A readable stream. 02262 * 02263 * @note This function does not reset the start condition to @c INITIAL . 02264 */ 02265 void llvmAsmrestart (FILE * input_file ) 02266 { 02267 02268 if ( ! YY_CURRENT_BUFFER ){ 02269 llvmAsmensure_buffer_stack (); 02270 YY_CURRENT_BUFFER_LVALUE = 02271 llvmAsm_create_buffer(llvmAsmin,YY_BUF_SIZE ); 02272 } 02273 02274 llvmAsm_init_buffer(YY_CURRENT_BUFFER,input_file ); 02275 llvmAsm_load_buffer_state( ); 02276 } 02277 02278 /** Switch to a different input buffer. 02279 * @param new_buffer The new input buffer. 02280 * 02281 */ 02282 void llvmAsm_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 02283 { 02284 02285 /* TODO. We should be able to replace this entire function body 02286 * with 02287 * llvmAsmpop_buffer_state(); 02288 * llvmAsmpush_buffer_state(new_buffer); 02289 */ 02290 llvmAsmensure_buffer_stack (); 02291 if ( YY_CURRENT_BUFFER == new_buffer ) 02292 return; 02293 02294 if ( YY_CURRENT_BUFFER ) 02295 { 02296 /* Flush out information for old buffer. */ 02297 *(yy_c_buf_p) = (yy_hold_char); 02298 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02299 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02300 } 02301 02302 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02303 llvmAsm_load_buffer_state( ); 02304 02305 /* We don't actually know whether we did this switch during 02306 * EOF (llvmAsmwrap()) processing, but the only time this flag 02307 * is looked at is after llvmAsmwrap() is called, so it's safe 02308 * to go ahead and always set it. 02309 */ 02310 (yy_did_buffer_switch_on_eof) = 1; 02311 } 02312 02313 static void llvmAsm_load_buffer_state (void) 02314 { 02315 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 02316 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 02317 llvmAsmin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 02318 (yy_hold_char) = *(yy_c_buf_p); 02319 } 02320 02321 /** Allocate and initialize an input buffer state. 02322 * @param file A readable stream. 02323 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 02324 * 02325 * @return the allocated buffer state. 02326 */ 02327 YY_BUFFER_STATE llvmAsm_create_buffer (FILE * file, int size ) 02328 { 02329 YY_BUFFER_STATE b; 02330 02331 b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) ); 02332 if ( ! b ) 02333 YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" ); 02334 02335 b->yy_buf_size = size; 02336 02337 /* yy_ch_buf has to be 2 characters longer than the size given because 02338 * we need to put in 2 end-of-buffer characters. 02339 */ 02340 b->yy_ch_buf = (char *) llvmAsmalloc(b->yy_buf_size + 2 ); 02341 if ( ! b->yy_ch_buf ) 02342 YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_create_buffer()" ); 02343 02344 b->yy_is_our_buffer = 1; 02345 02346 llvmAsm_init_buffer(b,file ); 02347 02348 return b; 02349 } 02350 02351 /** Destroy the buffer. 02352 * @param b a buffer created with llvmAsm_create_buffer() 02353 * 02354 */ 02355 void llvmAsm_delete_buffer (YY_BUFFER_STATE b ) 02356 { 02357 02358 if ( ! b ) 02359 return; 02360 02361 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 02362 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 02363 02364 if ( b->yy_is_our_buffer ) 02365 llvmAsmfree((void *) b->yy_ch_buf ); 02366 02367 llvmAsmfree((void *) b ); 02368 } 02369 02370 /* Initializes or reinitializes a buffer. 02371 * This function is sometimes called more than once on the same buffer, 02372 * such as during a llvmAsmrestart() or at EOF. 02373 */ 02374 static void llvmAsm_init_buffer (YY_BUFFER_STATE b, FILE * file ) 02375 02376 { 02377 int oerrno = errno; 02378 02379 llvmAsm_flush_buffer(b ); 02380 02381 b->yy_input_file = file; 02382 b->yy_fill_buffer = 1; 02383 02384 /* If b is the current buffer, then llvmAsm_init_buffer was _probably_ 02385 * called from llvmAsmrestart() or through yy_get_next_buffer. 02386 * In that case, we don't want to reset the lineno or column. 02387 */ 02388 if (b != YY_CURRENT_BUFFER){ 02389 b->yy_bs_lineno = 1; 02390 b->yy_bs_column = 0; 02391 } 02392 02393 b->yy_is_interactive = 0; 02394 02395 errno = oerrno; 02396 } 02397 02398 /** Discard all buffered characters. On the next scan, YY_INPUT will be called. 02399 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 02400 * 02401 */ 02402 void llvmAsm_flush_buffer (YY_BUFFER_STATE b ) 02403 { 02404 if ( ! b ) 02405 return; 02406 02407 b->yy_n_chars = 0; 02408 02409 /* We always need two end-of-buffer characters. The first causes 02410 * a transition to the end-of-buffer state. The second causes 02411 * a jam in that state. 02412 */ 02413 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 02414 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 02415 02416 b->yy_buf_pos = &b->yy_ch_buf[0]; 02417 02418 b->yy_at_bol = 1; 02419 b->yy_buffer_status = YY_BUFFER_NEW; 02420 02421 if ( b == YY_CURRENT_BUFFER ) 02422 llvmAsm_load_buffer_state( ); 02423 } 02424 02425 /** Pushes the new state onto the stack. The new state becomes 02426 * the current state. This function will allocate the stack 02427 * if necessary. 02428 * @param new_buffer The new state. 02429 * 02430 */ 02431 void llvmAsmpush_buffer_state (YY_BUFFER_STATE new_buffer ) 02432 { 02433 if (new_buffer == NULL) 02434 return; 02435 02436 llvmAsmensure_buffer_stack(); 02437 02438 /* This block is copied from llvmAsm_switch_to_buffer. */ 02439 if ( YY_CURRENT_BUFFER ) 02440 { 02441 /* Flush out information for old buffer. */ 02442 *(yy_c_buf_p) = (yy_hold_char); 02443 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 02444 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 02445 } 02446 02447 /* Only push if top exists. Otherwise, replace top. */ 02448 if (YY_CURRENT_BUFFER) 02449 (yy_buffer_stack_top)++; 02450 YY_CURRENT_BUFFER_LVALUE = new_buffer; 02451 02452 /* copied from llvmAsm_switch_to_buffer. */ 02453 llvmAsm_load_buffer_state( ); 02454 (yy_did_buffer_switch_on_eof) = 1; 02455 } 02456 02457 /** Removes and deletes the top of the stack, if present. 02458 * The next element becomes the new top. 02459 * 02460 */ 02461 void llvmAsmpop_buffer_state (void) 02462 { 02463 if (!YY_CURRENT_BUFFER) 02464 return; 02465 02466 llvmAsm_delete_buffer(YY_CURRENT_BUFFER ); 02467 YY_CURRENT_BUFFER_LVALUE = NULL; 02468 if ((yy_buffer_stack_top) > 0) 02469 --(yy_buffer_stack_top); 02470 02471 if (YY_CURRENT_BUFFER) { 02472 llvmAsm_load_buffer_state( ); 02473 (yy_did_buffer_switch_on_eof) = 1; 02474 } 02475 } 02476 02477 /* Allocates the stack if it does not exist. 02478 * Guarantees space for at least one push. 02479 */ 02480 static void llvmAsmensure_buffer_stack (void) 02481 { 02482 int num_to_alloc; 02483 02484 if (!(yy_buffer_stack)) { 02485 02486 /* First allocation is just for 2 elements, since we don't know if this 02487 * scanner will even need a stack. We use 2 instead of 1 to avoid an 02488 * immediate realloc on the next call. 02489 */ 02490 num_to_alloc = 1; 02491 (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmalloc 02492 (num_to_alloc * sizeof(struct yy_buffer_state*) 02493 ); 02494 02495 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 02496 02497 (yy_buffer_stack_max) = num_to_alloc; 02498 (yy_buffer_stack_top) = 0; 02499 return; 02500 } 02501 02502 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 02503 02504 /* Increase the buffer to prepare for a possible push. */ 02505 int grow_size = 8 /* arbitrary grow size */; 02506 02507 num_to_alloc = (yy_buffer_stack_max) + grow_size; 02508 (yy_buffer_stack) = (struct yy_buffer_state**)llvmAsmrealloc 02509 ((yy_buffer_stack), 02510 num_to_alloc * sizeof(struct yy_buffer_state*) 02511 ); 02512 02513 /* zero only the new slots.*/ 02514 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 02515 (yy_buffer_stack_max) = num_to_alloc; 02516 } 02517 } 02518 02519 /** Setup the input buffer state to scan directly from a user-specified character buffer. 02520 * @param base the character buffer 02521 * @param size the size in bytes of the character buffer 02522 * 02523 * @return the newly allocated buffer state object. 02524 */ 02525 YY_BUFFER_STATE llvmAsm_scan_buffer (char * base, yy_size_t size ) 02526 { 02527 YY_BUFFER_STATE b; 02528 02529 if ( size < 2 || 02530 base[size-2] != YY_END_OF_BUFFER_CHAR || 02531 base[size-1] != YY_END_OF_BUFFER_CHAR ) 02532 /* They forgot to leave room for the EOB's. */ 02533 return 0; 02534 02535 b = (YY_BUFFER_STATE) llvmAsmalloc(sizeof( struct yy_buffer_state ) ); 02536 if ( ! b ) 02537 YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_buffer()" ); 02538 02539 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 02540 b->yy_buf_pos = b->yy_ch_buf = base; 02541 b->yy_is_our_buffer = 0; 02542 b->yy_input_file = 0; 02543 b->yy_n_chars = b->yy_buf_size; 02544 b->yy_is_interactive = 0; 02545 b->yy_at_bol = 1; 02546 b->yy_fill_buffer = 0; 02547 b->yy_buffer_status = YY_BUFFER_NEW; 02548 02549 llvmAsm_switch_to_buffer(b ); 02550 02551 return b; 02552 } 02553 02554 /** Setup the input buffer state to scan a string. The next call to llvmAsmlex() will 02555 * scan from a @e copy of @a str. 02556 * @param yystr a NUL-terminated string to scan 02557 * 02558 * @return the newly allocated buffer state object. 02559 * @note If you want to scan bytes that may contain NUL values, then use 02560 * llvmAsm_scan_bytes() instead. 02561 */ 02562 YY_BUFFER_STATE llvmAsm_scan_string (yyconst char * yystr ) 02563 { 02564 02565 return llvmAsm_scan_bytes(yystr,strlen(yystr) ); 02566 } 02567 02568 /** Setup the input buffer state to scan the given bytes. The next call to llvmAsmlex() will 02569 * scan from a @e copy of @a bytes. 02570 * @param bytes the byte buffer to scan 02571 * @param len the number of bytes in the buffer pointed to by @a bytes. 02572 * 02573 * @return the newly allocated buffer state object. 02574 */ 02575 YY_BUFFER_STATE llvmAsm_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 02576 { 02577 YY_BUFFER_STATE b; 02578 char *buf; 02579 yy_size_t n; 02580 int i; 02581 02582 /* Get memory for full buffer, including space for trailing EOB's. */ 02583 n = _yybytes_len + 2; 02584 buf = (char *) llvmAsmalloc(n ); 02585 if ( ! buf ) 02586 YY_FATAL_ERROR( "out of dynamic memory in llvmAsm_scan_bytes()" ); 02587 02588 for ( i = 0; i < _yybytes_len; ++i ) 02589 buf[i] = yybytes[i]; 02590 02591 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 02592 02593 b = llvmAsm_scan_buffer(buf,n ); 02594 if ( ! b ) 02595 YY_FATAL_ERROR( "bad buffer in llvmAsm_scan_bytes()" ); 02596 02597 /* It's okay to grow etc. this buffer, and we should throw it 02598 * away when we're done. 02599 */ 02600 b->yy_is_our_buffer = 1; 02601 02602 return b; 02603 } 02604 02605 #ifndef YY_EXIT_FAILURE 02606 #define YY_EXIT_FAILURE 2 02607 #endif 02608 02609 static void yy_fatal_error (yyconst char* msg ) 02610 { 02611 (void) fprintf( stderr, "%s\n", msg ); 02612 exit( YY_EXIT_FAILURE ); 02613 } 02614 02615 /* Redefine yyless() so it works in section 3 code. */ 02616 02617 #undef yyless 02618 #define yyless(n) \ 02619 do \ 02620 { \ 02621 /* Undo effects of setting up llvmAsmtext. */ \ 02622 int yyless_macro_arg = (n); \ 02623 YY_LESS_LINENO(yyless_macro_arg);\ 02624 llvmAsmtext[llvmAsmleng] = (yy_hold_char); \ 02625 (yy_c_buf_p) = llvmAsmtext + yyless_macro_arg; \ 02626 (yy_hold_char) = *(yy_c_buf_p); \ 02627 *(yy_c_buf_p) = '\0'; \ 02628 llvmAsmleng = yyless_macro_arg; \ 02629 } \ 02630 while ( 0 ) 02631 02632 /* Accessor methods (get/set functions) to struct members. */ 02633 02634 /** Get the current line number. 02635 * 02636 */ 02637 int llvmAsmget_lineno (void) 02638 { 02639 02640 return llvmAsmlineno; 02641 } 02642 02643 /** Get the input stream. 02644 * 02645 */ 02646 FILE *llvmAsmget_in (void) 02647 { 02648 return llvmAsmin; 02649 } 02650 02651 /** Get the output stream. 02652 * 02653 */ 02654 FILE *llvmAsmget_out (void) 02655 { 02656 return llvmAsmout; 02657 } 02658 02659 /** Get the length of the current token. 02660 * 02661 */ 02662 int llvmAsmget_leng (void) 02663 { 02664 return llvmAsmleng; 02665 } 02666 02667 /** Get the current token. 02668 * 02669 */ 02670 02671 char *llvmAsmget_text (void) 02672 { 02673 return llvmAsmtext; 02674 } 02675 02676 /** Set the current line number. 02677 * @param line_number 02678 * 02679 */ 02680 void llvmAsmset_lineno (int line_number ) 02681 { 02682 02683 llvmAsmlineno = line_number; 02684 } 02685 02686 /** Set the input stream. This does not discard the current 02687 * input buffer. 02688 * @param in_str A readable stream. 02689 * 02690 * @see llvmAsm_switch_to_buffer 02691 */ 02692 void llvmAsmset_in (FILE * in_str ) 02693 { 02694 llvmAsmin = in_str ; 02695 } 02696 02697 void llvmAsmset_out (FILE * out_str ) 02698 { 02699 llvmAsmout = out_str ; 02700 } 02701 02702 int llvmAsmget_debug (void) 02703 { 02704 return llvmAsm_flex_debug; 02705 } 02706 02707 void llvmAsmset_debug (int bdebug ) 02708 { 02709 llvmAsm_flex_debug = bdebug ; 02710 } 02711 02712 static int yy_init_globals (void) 02713 { 02714 /* Initialization is the same as for the non-reentrant scanner. 02715 * This function is called from llvmAsmlex_destroy(), so don't allocate here. 02716 */ 02717 02718 /* We do not touch llvmAsmlineno unless the option is enabled. */ 02719 llvmAsmlineno = 1; 02720 02721 (yy_buffer_stack) = 0; 02722 (yy_buffer_stack_top) = 0; 02723 (yy_buffer_stack_max) = 0; 02724 (yy_c_buf_p) = (char *) 0; 02725 (yy_init) = 0; 02726 (yy_start) = 0; 02727 02728 /* Defined in main.c */ 02729 #ifdef YY_STDINIT 02730 llvmAsmin = stdin; 02731 llvmAsmout = stdout; 02732 #else 02733 llvmAsmin = (FILE *) 0; 02734 llvmAsmout = (FILE *) 0; 02735 #endif 02736 02737 /* For future reference: Set errno on error, since we are called by 02738 * llvmAsmlex_init() 02739 */ 02740 return 0; 02741 } 02742 02743 /* llvmAsmlex_destroy is for both reentrant and non-reentrant scanners. */ 02744 int llvmAsmlex_destroy (void) 02745 { 02746 02747 /* Pop the buffer stack, destroying each element. */ 02748 while(YY_CURRENT_BUFFER){ 02749 llvmAsm_delete_buffer(YY_CURRENT_BUFFER ); 02750 YY_CURRENT_BUFFER_LVALUE = NULL; 02751 llvmAsmpop_buffer_state(); 02752 } 02753 02754 /* Destroy the stack itself. */ 02755 llvmAsmfree((yy_buffer_stack) ); 02756 (yy_buffer_stack) = NULL; 02757 02758 /* Reset the globals. This is important in a non-reentrant scanner so the next time 02759 * llvmAsmlex() is called, initialization will occur. */ 02760 yy_init_globals( ); 02761 02762 return 0; 02763 } 02764 02765 /* 02766 * Internal utility routines. 02767 */ 02768 02769 #ifndef yytext_ptr 02770 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 02771 { 02772 register int i; 02773 for ( i = 0; i < n; ++i ) 02774 s1[i] = s2[i]; 02775 } 02776 #endif 02777 02778 #ifdef YY_NEED_STRLEN 02779 static int yy_flex_strlen (yyconst char * s ) 02780 { 02781 register int n; 02782 for ( n = 0; s[n]; ++n ) 02783 ; 02784 02785 return n; 02786 } 02787 #endif 02788 02789 void *llvmAsmalloc (yy_size_t size ) 02790 { 02791 return (void *) malloc( size ); 02792 } 02793 02794 void *llvmAsmrealloc (void * ptr, yy_size_t size ) 02795 { 02796 /* The cast to (char *) in the following accommodates both 02797 * implementations that use char* generic pointers, and those 02798 * that use void* generic pointers. It works with the latter 02799 * because both ANSI C and C++ allow castless assignment from 02800 * any pointer type to void*, and deal with argument conversions 02801 * as though doing an assignment. 02802 */ 02803 return (void *) realloc( (char *) ptr, size ); 02804 } 02805 02806 void llvmAsmfree (void * ptr ) 02807 { 02808 free( (char *) ptr ); /* see llvmAsmrealloc() for (char *) cast */ 02809 } 02810 02811 #define YYTABLES_NAME "yytables" 02812 02813 #line 356 "/build/buildd/llvm-1.7/llvm/lib/AsmParser/Lexer.l" 02814 02815 02816 02817