github.com/aergoio/aergo@v1.3.1/libtool/src/gmp-6.1.2/demos/calc/calclex.c (about) 1 /* A lexical scanner generated by flex */ 2 3 /* Scanner skeleton version: 4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ 5 * $FreeBSD: releng/9.3/usr.bin/lex/flex.skl 214272 2010-10-24 15:31:41Z uqs $ 6 */ 7 8 #if defined(__FreeBSD__) 9 #include <sys/cdefs.h> 10 #else 11 #define __unused 12 #define __dead2 13 #endif 14 15 #define FLEX_SCANNER 16 #define YY_FLEX_MAJOR_VERSION 2 17 #define YY_FLEX_MINOR_VERSION 5 18 19 #include <stdio.h> 20 21 22 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ 23 #ifdef c_plusplus 24 #ifndef __cplusplus 25 #define __cplusplus 26 #endif 27 #endif 28 29 30 #ifdef __cplusplus 31 32 #include <stdlib.h> 33 #include <unistd.h> 34 35 /* Use prototypes in function declarations. */ 36 #define YY_USE_PROTOS 37 38 /* The "const" storage-class-modifier is valid. */ 39 #define YY_USE_CONST 40 41 #else /* ! __cplusplus */ 42 43 #if __STDC__ 44 45 #define YY_USE_PROTOS 46 #define YY_USE_CONST 47 48 #endif /* __STDC__ */ 49 #endif /* ! __cplusplus */ 50 51 #ifdef __TURBOC__ 52 #pragma warn -rch 53 #pragma warn -use 54 #include <io.h> 55 #include <stdlib.h> 56 #define YY_USE_CONST 57 #define YY_USE_PROTOS 58 #endif 59 60 #ifdef YY_USE_CONST 61 #define yyconst const 62 #else 63 #define yyconst 64 #endif 65 66 67 #ifdef YY_USE_PROTOS 68 #define YY_PROTO(proto) proto 69 #else 70 #define YY_PROTO(proto) () 71 #endif 72 73 /* Returned upon end-of-file. */ 74 #define YY_NULL 0 75 76 /* Promotes a possibly negative, possibly signed char to an unsigned 77 * integer for use as an array index. If the signed char is negative, 78 * we want to instead treat it as an 8-bit unsigned char, hence the 79 * double cast. 80 */ 81 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 82 83 /* Enter a start condition. This macro really ought to take a parameter, 84 * but we do it the disgusting crufty way forced on us by the ()-less 85 * definition of BEGIN. 86 */ 87 #define BEGIN yy_start = 1 + 2 * 88 89 /* Translate the current start state into a value that can be later handed 90 * to BEGIN to return to the state. The YYSTATE alias is for lex 91 * compatibility. 92 */ 93 #define YY_START ((yy_start - 1) / 2) 94 #define YYSTATE YY_START 95 96 /* Action number for EOF rule of a given start state. */ 97 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 98 99 /* Special action meaning "start processing a new file". */ 100 #define YY_NEW_FILE yyrestart( yyin ) 101 102 #define YY_END_OF_BUFFER_CHAR 0 103 104 /* Size of default input buffer. */ 105 #define YY_BUF_SIZE 16384 106 107 typedef struct yy_buffer_state *YY_BUFFER_STATE; 108 109 extern int yyleng; 110 extern FILE *yyin, *yyout; 111 112 #define EOB_ACT_CONTINUE_SCAN 0 113 #define EOB_ACT_END_OF_FILE 1 114 #define EOB_ACT_LAST_MATCH 2 115 116 /* The funky do-while in the following #define is used to turn the definition 117 * int a single C statement (which needs a semi-colon terminator). This 118 * avoids problems with code like: 119 * 120 * if ( condition_holds ) 121 * yyless( 5 ); 122 * else 123 * do_something_else(); 124 * 125 * Prior to using the do-while the compiler would get upset at the 126 * "else" because it interpreted the "if" statement as being all 127 * done when it reached the ';' after the yyless() call. 128 */ 129 130 /* Return all but the first 'n' matched characters back to the input stream. */ 131 132 #define yyless(n) \ 133 do \ 134 { \ 135 /* Undo effects of setting up yytext. */ \ 136 *yy_cp = yy_hold_char; \ 137 YY_RESTORE_YY_MORE_OFFSET \ 138 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ 139 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 140 } \ 141 while ( 0 ) 142 143 #define unput(c) yyunput( c, yytext_ptr ) 144 145 /* The following is because we cannot portably get our hands on size_t 146 * (without autoconf's help, which isn't available because we want 147 * flex-generated scanners to compile on their own). 148 */ 149 typedef unsigned int yy_size_t; 150 151 152 struct yy_buffer_state 153 { 154 FILE *yy_input_file; 155 156 char *yy_ch_buf; /* input buffer */ 157 char *yy_buf_pos; /* current position in input buffer */ 158 159 /* Size of input buffer in bytes, not including room for EOB 160 * characters. 161 */ 162 yy_size_t yy_buf_size; 163 164 /* Number of characters read into yy_ch_buf, not including EOB 165 * characters. 166 */ 167 int yy_n_chars; 168 169 /* Whether we "own" the buffer - i.e., we know we created it, 170 * and can realloc() it to grow it, and should free() it to 171 * delete it. 172 */ 173 int yy_is_our_buffer; 174 175 /* Whether this is an "interactive" input source; if so, and 176 * if we're using stdio for input, then we want to use getc() 177 * instead of fread(), to make sure we stop fetching input after 178 * each newline. 179 */ 180 int yy_is_interactive; 181 182 /* Whether we're considered to be at the beginning of a line. 183 * If so, '^' rules will be active on the next match, otherwise 184 * not. 185 */ 186 int yy_at_bol; 187 188 /* Whether to try to fill the input buffer when we reach the 189 * end of it. 190 */ 191 int yy_fill_buffer; 192 193 int yy_buffer_status; 194 #define YY_BUFFER_NEW 0 195 #define YY_BUFFER_NORMAL 1 196 /* When an EOF's been seen but there's still some text to process 197 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 198 * shouldn't try reading from the input source any more. We might 199 * still have a bunch of tokens to match, though, because of 200 * possible backing-up. 201 * 202 * When we actually see the EOF, we change the status to "new" 203 * (via yyrestart()), so that the user can continue scanning by 204 * just pointing yyin at a new input file. 205 */ 206 #define YY_BUFFER_EOF_PENDING 2 207 }; 208 209 static YY_BUFFER_STATE yy_current_buffer = 0; 210 211 /* We provide macros for accessing buffer states in case in the 212 * future we want to put the buffer states in a more general 213 * "scanner state". 214 */ 215 #define YY_CURRENT_BUFFER yy_current_buffer 216 217 218 /* yy_hold_char holds the character lost when yytext is formed. */ 219 static char yy_hold_char; 220 221 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 222 223 224 int yyleng; 225 226 /* Points to current character in buffer. */ 227 static char *yy_c_buf_p = (char *) 0; 228 static int yy_init = 1; /* whether we need to initialize */ 229 static int yy_start = 0; /* start state number */ 230 231 /* Flag which is used to allow yywrap()'s to do buffer switches 232 * instead of setting up a fresh yyin. A bit of a hack ... 233 */ 234 static int yy_did_buffer_switch_on_eof; 235 236 void yyrestart YY_PROTO(( FILE *input_file )); 237 238 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); 239 void yy_load_buffer_state YY_PROTO(( void )); 240 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); 241 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); 242 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); 243 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); 244 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) 245 246 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); 247 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); 248 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); 249 250 static void *yy_flex_alloc YY_PROTO(( yy_size_t )); 251 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused; 252 static void yy_flex_free YY_PROTO(( void * )); 253 254 #define yy_new_buffer yy_create_buffer 255 256 #define yy_set_interactive(is_interactive) \ 257 { \ 258 if ( ! yy_current_buffer ) \ 259 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 260 yy_current_buffer->yy_is_interactive = is_interactive; \ 261 } 262 263 #define yy_set_bol(at_bol) \ 264 { \ 265 if ( ! yy_current_buffer ) \ 266 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 267 yy_current_buffer->yy_at_bol = at_bol; \ 268 } 269 270 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol) 271 272 typedef unsigned char YY_CHAR; 273 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 274 typedef int yy_state_type; 275 extern char *yytext; 276 #define yytext_ptr yytext 277 278 static yy_state_type yy_get_previous_state YY_PROTO(( void )); 279 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); 280 static int yy_get_next_buffer YY_PROTO(( void )); 281 static void yy_fatal_error YY_PROTO(( yyconst char msg[] )) __dead2; 282 283 /* Done after the current pattern has been matched and before the 284 * corresponding action - sets up yytext. 285 */ 286 #define YY_DO_BEFORE_ACTION \ 287 yytext_ptr = yy_bp; \ 288 yyleng = (int) (yy_cp - yy_bp); \ 289 yy_hold_char = *yy_cp; \ 290 *yy_cp = '\0'; \ 291 yy_c_buf_p = yy_cp; 292 293 #define YY_NUM_RULES 19 294 #define YY_END_OF_BUFFER 20 295 static yyconst short int yy_accept[39] = 296 { 0, 297 0, 0, 20, 18, 1, 2, 7, 6, 7, 18, 298 16, 16, 2, 7, 7, 7, 16, 17, 18, 18, 299 11, 6, 5, 6, 14, 16, 0, 12, 8, 10, 300 9, 13, 16, 17, 3, 15, 4, 0 301 } ; 302 303 static yyconst int yy_ec[256] = 304 { 0, 305 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 306 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 307 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 308 1, 2, 4, 1, 5, 1, 6, 7, 1, 6, 309 6, 6, 6, 6, 6, 1, 6, 8, 9, 9, 310 9, 9, 9, 9, 9, 9, 9, 1, 10, 11, 311 12, 13, 1, 1, 14, 14, 14, 14, 14, 14, 312 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 313 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 314 1, 17, 1, 6, 1, 1, 15, 15, 15, 15, 315 316 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 317 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 318 15, 15, 1, 18, 1, 1, 1, 1, 1, 1, 319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 322 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 324 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 325 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 326 327 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 328 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 329 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 330 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 331 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 332 1, 1, 1, 1, 1 333 } ; 334 335 static yyconst int yy_meta[19] = 336 { 0, 337 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 338 1, 1, 1, 2, 3, 2, 1, 1 339 } ; 340 341 static yyconst short int yy_base[43] = 342 { 0, 343 0, 0, 39, 49, 49, 49, 26, 16, 49, 30, 344 20, 19, 49, 9, 22, 10, 9, 0, 29, 13, 345 49, 23, 49, 24, 49, 0, 0, 49, 49, 49, 346 49, 49, 13, 0, 49, 49, 49, 49, 41, 28, 347 43, 45 348 } ; 349 350 static yyconst short int yy_def[43] = 351 { 0, 352 38, 1, 38, 38, 38, 38, 38, 39, 38, 38, 353 40, 40, 38, 38, 38, 38, 41, 42, 38, 38, 354 38, 39, 38, 39, 38, 12, 12, 38, 38, 38, 355 38, 38, 41, 42, 38, 38, 38, 0, 38, 38, 356 38, 38 357 } ; 358 359 static yyconst short int yy_nxt[68] = 360 { 0, 361 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 362 14, 15, 16, 17, 18, 18, 19, 20, 23, 28, 363 29, 31, 32, 34, 34, 23, 37, 34, 34, 26, 364 36, 35, 24, 30, 38, 27, 25, 21, 38, 24, 365 24, 22, 22, 22, 33, 33, 34, 34, 3, 38, 366 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 367 38, 38, 38, 38, 38, 38, 38 368 } ; 369 370 static yyconst short int yy_chk[68] = 371 { 0, 372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 373 1, 1, 1, 1, 1, 1, 1, 1, 8, 14, 374 14, 16, 16, 17, 17, 22, 24, 33, 33, 40, 375 20, 19, 8, 15, 12, 11, 10, 7, 3, 22, 376 24, 39, 39, 39, 41, 41, 42, 42, 38, 38, 377 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 378 38, 38, 38, 38, 38, 38, 38 379 } ; 380 381 static yy_state_type yy_last_accepting_state; 382 static char *yy_last_accepting_cpos; 383 384 /* The intent behind this definition is that it'll catch 385 * any uses of REJECT which flex missed. 386 */ 387 #define REJECT reject_used_but_not_detected 388 #define yymore() yymore_used_but_not_detected 389 #define YY_MORE_ADJ 0 390 #define YY_RESTORE_YY_MORE_OFFSET 391 char *yytext; 392 #line 1 "../../../gmp/demos/calc/calclex.l" 393 #define INITIAL 0 394 /* Lexical analyzer for calc program. 395 396 Copyright 2000-2002 Free Software Foundation, Inc. 397 398 This file is part of the GNU MP Library. 399 400 This program is free software; you can redistribute it and/or modify it under 401 the terms of the GNU General Public License as published by the Free Software 402 Foundation; either version 3 of the License, or (at your option) any later 403 version. 404 405 This program is distributed in the hope that it will be useful, but WITHOUT ANY 406 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 407 PARTICULAR PURPOSE. See the GNU General Public License for more details. 408 409 You should have received a copy of the GNU General Public License along with 410 this program. If not, see https://www.gnu.org/licenses/. */ 411 #line 20 "../../../gmp/demos/calc/calclex.l" 412 #include <string.h> 413 #include "calc-common.h" 414 415 416 #if WITH_READLINE 417 /* Let GNU flex use readline. See the calcread.c redefined input() for a 418 way that might work for a standard lex too. */ 419 #define YY_INPUT(buf,result,max_size) \ 420 result = calc_input (buf, max_size); 421 #endif 422 423 424 /* Non-zero when reading the second or subsequent line of an expression, 425 used to give a different prompt when using readline. */ 426 int calc_more_input = 0; 427 428 429 const struct calc_keywords_t calc_keywords[] = { 430 { "abs", ABS }, 431 { "bin", BIN }, 432 { "decimal", DECIMAL }, 433 { "fib", FIB }, 434 { "hex", HEX }, 435 { "help", HELP }, 436 { "gcd", GCD }, 437 { "kron", KRON }, 438 { "lcm", LCM }, 439 { "lucnum", LUCNUM }, 440 { "nextprime", NEXTPRIME }, 441 { "powm", POWM }, 442 { "quit", QUIT }, 443 { "root", ROOT }, 444 { "sqrt", SQRT }, 445 { NULL } 446 }; 447 #line 448 "calclex.c" 448 449 /* Macros after this point can all be overridden by user definitions in 450 * section 1. 451 */ 452 453 #ifndef YY_SKIP_YYWRAP 454 #ifdef __cplusplus 455 extern "C" int yywrap YY_PROTO(( void )); 456 #else 457 extern int yywrap YY_PROTO(( void )); 458 #endif 459 #endif 460 461 #ifndef YY_NO_UNPUT 462 static void yyunput YY_PROTO(( int c, char *buf_ptr )); 463 #endif 464 465 #ifndef yytext_ptr 466 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); 467 #endif 468 469 #ifdef YY_NEED_STRLEN 470 static int yy_flex_strlen YY_PROTO(( yyconst char * )); 471 #endif 472 473 #ifndef YY_NO_INPUT 474 #ifdef __cplusplus 475 static int yyinput YY_PROTO(( void )); 476 #else 477 static int input YY_PROTO(( void )); 478 #endif 479 #endif 480 481 #if YY_STACK_USED 482 static int yy_start_stack_ptr = 0; 483 static int yy_start_stack_depth = 0; 484 static int *yy_start_stack = 0; 485 #ifndef YY_NO_PUSH_STATE 486 static void yy_push_state YY_PROTO(( int new_state )); 487 #endif 488 #ifndef YY_NO_POP_STATE 489 static void yy_pop_state YY_PROTO(( void )); 490 #endif 491 #ifndef YY_NO_TOP_STATE 492 static int yy_top_state YY_PROTO(( void )); 493 #endif 494 495 #else 496 #define YY_NO_PUSH_STATE 1 497 #define YY_NO_POP_STATE 1 498 #define YY_NO_TOP_STATE 1 499 #endif 500 501 #ifdef YY_MALLOC_DECL 502 YY_MALLOC_DECL 503 #else 504 #if __STDC__ 505 #ifndef __cplusplus 506 #include <stdlib.h> 507 #endif 508 #else 509 /* Just try to get by without declaring the routines. This will fail 510 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) 511 * or sizeof(void*) != sizeof(int). 512 */ 513 #endif 514 #endif 515 516 /* Amount of stuff to slurp up with each read. */ 517 #ifndef YY_READ_BUF_SIZE 518 #define YY_READ_BUF_SIZE 8192 519 #endif 520 521 /* Copy whatever the last rule matched to the standard output. */ 522 523 #ifndef ECHO 524 /* This used to be an fputs(), but since the string might contain NUL's, 525 * we now use fwrite(). 526 */ 527 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) 528 #endif 529 530 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 531 * is returned in "result". 532 */ 533 #ifndef YY_INPUT 534 #define YY_INPUT(buf,result,max_size) \ 535 if ( yy_current_buffer->yy_is_interactive ) \ 536 { \ 537 int c = '*', n; \ 538 for ( n = 0; n < max_size && \ 539 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 540 buf[n] = (char) c; \ 541 if ( c == '\n' ) \ 542 buf[n++] = (char) c; \ 543 if ( c == EOF && ferror( yyin ) ) \ 544 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 545 result = n; \ 546 } \ 547 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ 548 && ferror( yyin ) ) \ 549 YY_FATAL_ERROR( "input in flex scanner failed" ); 550 #endif 551 552 /* No semi-colon after return; correct usage is to write "yyterminate();" - 553 * we don't want an extra ';' after the "return" because that will cause 554 * some compilers to complain about unreachable statements. 555 */ 556 #ifndef yyterminate 557 #define yyterminate() return YY_NULL 558 #endif 559 560 /* Number of entries by which start-condition stack grows. */ 561 #ifndef YY_START_STACK_INCR 562 #define YY_START_STACK_INCR 25 563 #endif 564 565 /* Report a fatal error. */ 566 #ifndef YY_FATAL_ERROR 567 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 568 #endif 569 570 /* Default declaration of generated scanner - a define so the user can 571 * easily add parameters. 572 */ 573 #ifndef YY_DECL 574 #define YY_DECL int yylex YY_PROTO(( void )) 575 #endif 576 577 /* Code executed at the beginning of each rule, after yytext and yyleng 578 * have been set up. 579 */ 580 #ifndef YY_USER_ACTION 581 #define YY_USER_ACTION 582 #endif 583 584 /* Code executed at the end of each rule. */ 585 #ifndef YY_BREAK 586 #define YY_BREAK break; 587 #endif 588 589 #define YY_RULE_SETUP \ 590 YY_USER_ACTION 591 592 YY_DECL 593 { 594 yy_state_type yy_current_state; 595 char *yy_cp, *yy_bp; 596 int yy_act; 597 598 #line 57 "../../../gmp/demos/calc/calclex.l" 599 600 601 #line 602 "calclex.c" 602 603 if ( yy_init ) 604 { 605 yy_init = 0; 606 607 #ifdef YY_USER_INIT 608 YY_USER_INIT; 609 #endif 610 611 if ( ! yy_start ) 612 yy_start = 1; /* first start state */ 613 614 if ( ! yyin ) 615 yyin = stdin; 616 617 if ( ! yyout ) 618 yyout = stdout; 619 620 if ( ! yy_current_buffer ) 621 yy_current_buffer = 622 yy_create_buffer( yyin, YY_BUF_SIZE ); 623 624 yy_load_buffer_state(); 625 } 626 627 while ( 1 ) /* loops until end-of-file is reached */ 628 { 629 yy_cp = yy_c_buf_p; 630 631 /* Support of yytext. */ 632 *yy_cp = yy_hold_char; 633 634 /* yy_bp points to the position in yy_ch_buf of the start of 635 * the current run. 636 */ 637 yy_bp = yy_cp; 638 639 yy_current_state = yy_start; 640 yy_match: 641 do 642 { 643 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 644 if ( yy_accept[yy_current_state] ) 645 { 646 yy_last_accepting_state = yy_current_state; 647 yy_last_accepting_cpos = yy_cp; 648 } 649 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 650 { 651 yy_current_state = (int) yy_def[yy_current_state]; 652 if ( yy_current_state >= 39 ) 653 yy_c = yy_meta[(unsigned int) yy_c]; 654 } 655 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 656 ++yy_cp; 657 } 658 while ( yy_base[yy_current_state] != 49 ); 659 660 yy_find_action: 661 yy_act = yy_accept[yy_current_state]; 662 if ( yy_act == 0 ) 663 { /* have to back up */ 664 yy_cp = yy_last_accepting_cpos; 665 yy_current_state = yy_last_accepting_state; 666 yy_act = yy_accept[yy_current_state]; 667 } 668 669 YY_DO_BEFORE_ACTION; 670 671 672 do_action: /* This label is used only to access EOF actions. */ 673 674 675 switch ( yy_act ) 676 { /* beginning of action switch */ 677 case 0: /* must back up */ 678 /* undo the effects of YY_DO_BEFORE_ACTION */ 679 *yy_cp = yy_hold_char; 680 yy_cp = yy_last_accepting_cpos; 681 yy_current_state = yy_last_accepting_state; 682 goto yy_find_action; 683 684 case 1: 685 YY_RULE_SETUP 686 #line 59 "../../../gmp/demos/calc/calclex.l" 687 { /* white space is skipped */ } 688 YY_BREAK 689 case 2: 690 YY_RULE_SETUP 691 #line 61 "../../../gmp/demos/calc/calclex.l" 692 { /* semicolon or newline separates statements */ 693 calc_more_input = 0; 694 return EOS; } 695 YY_BREAK 696 case 3: 697 YY_RULE_SETUP 698 #line 64 "../../../gmp/demos/calc/calclex.l" 699 { /* escaped newlines are skipped */ } 700 YY_BREAK 701 case 4: 702 YY_RULE_SETUP 703 #line 67 "../../../gmp/demos/calc/calclex.l" 704 { 705 /* comment through to escaped newline is skipped */ } 706 YY_BREAK 707 case 5: 708 YY_RULE_SETUP 709 #line 69 "../../../gmp/demos/calc/calclex.l" 710 { /* comment through to newline is a separator */ 711 calc_more_input = 0; 712 return EOS; } 713 YY_BREAK 714 case 6: 715 YY_RULE_SETUP 716 #line 72 "../../../gmp/demos/calc/calclex.l" 717 { /* comment through to EOF skipped */ } 718 YY_BREAK 719 case 7: 720 YY_RULE_SETUP 721 #line 75 "../../../gmp/demos/calc/calclex.l" 722 { return yytext[0]; } 723 YY_BREAK 724 case 8: 725 YY_RULE_SETUP 726 #line 76 "../../../gmp/demos/calc/calclex.l" 727 { return LE; } 728 YY_BREAK 729 case 9: 730 YY_RULE_SETUP 731 #line 77 "../../../gmp/demos/calc/calclex.l" 732 { return GE; } 733 YY_BREAK 734 case 10: 735 YY_RULE_SETUP 736 #line 78 "../../../gmp/demos/calc/calclex.l" 737 { return EQ; } 738 YY_BREAK 739 case 11: 740 YY_RULE_SETUP 741 #line 79 "../../../gmp/demos/calc/calclex.l" 742 { return NE; } 743 YY_BREAK 744 case 12: 745 YY_RULE_SETUP 746 #line 80 "../../../gmp/demos/calc/calclex.l" 747 { return LSHIFT; } 748 YY_BREAK 749 case 13: 750 YY_RULE_SETUP 751 #line 81 "../../../gmp/demos/calc/calclex.l" 752 { return RSHIFT; } 753 YY_BREAK 754 case 14: 755 YY_RULE_SETUP 756 #line 82 "../../../gmp/demos/calc/calclex.l" 757 { return LAND; } 758 YY_BREAK 759 case 15: 760 YY_RULE_SETUP 761 #line 83 "../../../gmp/demos/calc/calclex.l" 762 { return LOR; } 763 YY_BREAK 764 case 16: 765 YY_RULE_SETUP 766 #line 85 "../../../gmp/demos/calc/calclex.l" 767 { 768 yylval.str = yytext; 769 return NUMBER; } 770 YY_BREAK 771 case 17: 772 YY_RULE_SETUP 773 #line 89 "../../../gmp/demos/calc/calclex.l" 774 { 775 int i; 776 777 for (i = 0; calc_keywords[i].name != NULL; i++) 778 if (strcmp (yytext, calc_keywords[i].name) == 0) 779 return calc_keywords[i].value; 780 781 if (yytext[0] >= 'a' && yytext[0] <= 'z' && yytext[1] == '\0') 782 { 783 yylval.var = yytext[0] - 'a'; 784 return VARIABLE; 785 } 786 787 return BAD; 788 } 789 YY_BREAK 790 case 18: 791 YY_RULE_SETUP 792 #line 105 "../../../gmp/demos/calc/calclex.l" 793 { return BAD; } 794 YY_BREAK 795 case 19: 796 YY_RULE_SETUP 797 #line 107 "../../../gmp/demos/calc/calclex.l" 798 ECHO; 799 YY_BREAK 800 #line 801 "calclex.c" 801 case YY_STATE_EOF(INITIAL): 802 yyterminate(); 803 804 case YY_END_OF_BUFFER: 805 { 806 /* Amount of text matched not including the EOB char. */ 807 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; 808 809 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 810 *yy_cp = yy_hold_char; 811 YY_RESTORE_YY_MORE_OFFSET 812 813 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) 814 { 815 /* We're scanning a new file or input source. It's 816 * possible that this happened because the user 817 * just pointed yyin at a new source and called 818 * yylex(). If so, then we have to assure 819 * consistency between yy_current_buffer and our 820 * globals. Here is the right place to do so, because 821 * this is the first action (other than possibly a 822 * back-up) that will match for the new input source. 823 */ 824 yy_n_chars = yy_current_buffer->yy_n_chars; 825 yy_current_buffer->yy_input_file = yyin; 826 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; 827 } 828 829 /* Note that here we test for yy_c_buf_p "<=" to the position 830 * of the first EOB in the buffer, since yy_c_buf_p will 831 * already have been incremented past the NUL character 832 * (since all states make transitions on EOB to the 833 * end-of-buffer state). Contrast this with the test 834 * in input(). 835 */ 836 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 837 { /* This was really a NUL. */ 838 yy_state_type yy_next_state; 839 840 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; 841 842 yy_current_state = yy_get_previous_state(); 843 844 /* Okay, we're now positioned to make the NUL 845 * transition. We couldn't have 846 * yy_get_previous_state() go ahead and do it 847 * for us because it doesn't know how to deal 848 * with the possibility of jamming (and we don't 849 * want to build jamming into it because then it 850 * will run more slowly). 851 */ 852 853 yy_next_state = yy_try_NUL_trans( yy_current_state ); 854 855 yy_bp = yytext_ptr + YY_MORE_ADJ; 856 857 if ( yy_next_state ) 858 { 859 /* Consume the NUL. */ 860 yy_cp = ++yy_c_buf_p; 861 yy_current_state = yy_next_state; 862 goto yy_match; 863 } 864 865 else 866 { 867 yy_cp = yy_c_buf_p; 868 goto yy_find_action; 869 } 870 } 871 872 else switch ( yy_get_next_buffer() ) 873 { 874 case EOB_ACT_END_OF_FILE: 875 { 876 yy_did_buffer_switch_on_eof = 0; 877 878 if ( yywrap() ) 879 { 880 /* Note: because we've taken care in 881 * yy_get_next_buffer() to have set up 882 * yytext, we can now set up 883 * yy_c_buf_p so that if some total 884 * hoser (like flex itself) wants to 885 * call the scanner after we return the 886 * YY_NULL, it'll still work - another 887 * YY_NULL will get returned. 888 */ 889 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; 890 891 yy_act = YY_STATE_EOF(YY_START); 892 goto do_action; 893 } 894 895 else 896 { 897 if ( ! yy_did_buffer_switch_on_eof ) 898 YY_NEW_FILE; 899 } 900 break; 901 } 902 903 case EOB_ACT_CONTINUE_SCAN: 904 yy_c_buf_p = 905 yytext_ptr + yy_amount_of_matched_text; 906 907 yy_current_state = yy_get_previous_state(); 908 909 yy_cp = yy_c_buf_p; 910 yy_bp = yytext_ptr + YY_MORE_ADJ; 911 goto yy_match; 912 913 case EOB_ACT_LAST_MATCH: 914 yy_c_buf_p = 915 &yy_current_buffer->yy_ch_buf[yy_n_chars]; 916 917 yy_current_state = yy_get_previous_state(); 918 919 yy_cp = yy_c_buf_p; 920 yy_bp = yytext_ptr + YY_MORE_ADJ; 921 goto yy_find_action; 922 } 923 break; 924 } 925 926 default: 927 YY_FATAL_ERROR( 928 "fatal flex scanner internal error--no action found" ); 929 } /* end of action switch */ 930 } /* end of scanning one token */ 931 } /* end of yylex */ 932 933 934 /* yy_get_next_buffer - try to read in a new buffer 935 * 936 * Returns a code representing an action: 937 * EOB_ACT_LAST_MATCH - 938 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 939 * EOB_ACT_END_OF_FILE - end of file 940 */ 941 942 #ifdef YY_USE_PROTOS 943 static int yy_get_next_buffer(void) 944 #else 945 static int yy_get_next_buffer() 946 #endif 947 { 948 char *dest = yy_current_buffer->yy_ch_buf; 949 char *source = yytext_ptr; 950 int number_to_move, i; 951 int ret_val; 952 953 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) 954 YY_FATAL_ERROR( 955 "fatal flex scanner internal error--end of buffer missed" ); 956 957 if ( yy_current_buffer->yy_fill_buffer == 0 ) 958 { /* Don't try to fill the buffer, so this is an EOF. */ 959 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) 960 { 961 /* We matched a single character, the EOB, so 962 * treat this as a final EOF. 963 */ 964 return EOB_ACT_END_OF_FILE; 965 } 966 967 else 968 { 969 /* We matched some text prior to the EOB, first 970 * process it. 971 */ 972 return EOB_ACT_LAST_MATCH; 973 } 974 } 975 976 /* Try to read more data. */ 977 978 /* First move last chars to start of buffer. */ 979 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; 980 981 for ( i = 0; i < number_to_move; ++i ) 982 *(dest++) = *(source++); 983 984 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 985 /* don't do the read, it's not guaranteed to return an EOF, 986 * just force an EOF 987 */ 988 yy_current_buffer->yy_n_chars = yy_n_chars = 0; 989 990 else 991 { 992 int num_to_read = 993 yy_current_buffer->yy_buf_size - number_to_move - 1; 994 995 while ( num_to_read <= 0 ) 996 { /* Not enough room in the buffer - grow it. */ 997 #ifdef YY_USES_REJECT 998 YY_FATAL_ERROR( 999 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 1000 #else 1001 1002 /* just a shorter name for the current buffer */ 1003 YY_BUFFER_STATE b = yy_current_buffer; 1004 1005 int yy_c_buf_p_offset = 1006 (int) (yy_c_buf_p - b->yy_ch_buf); 1007 1008 if ( b->yy_is_our_buffer ) 1009 { 1010 int new_size = b->yy_buf_size * 2; 1011 1012 if ( new_size <= 0 ) 1013 b->yy_buf_size += b->yy_buf_size / 8; 1014 else 1015 b->yy_buf_size *= 2; 1016 1017 b->yy_ch_buf = (char *) 1018 /* Include room in for 2 EOB chars. */ 1019 yy_flex_realloc( (void *) b->yy_ch_buf, 1020 b->yy_buf_size + 2 ); 1021 } 1022 else 1023 /* Can't grow it, we don't own it. */ 1024 b->yy_ch_buf = 0; 1025 1026 if ( ! b->yy_ch_buf ) 1027 YY_FATAL_ERROR( 1028 "fatal error - scanner input buffer overflow" ); 1029 1030 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 1031 1032 num_to_read = yy_current_buffer->yy_buf_size - 1033 number_to_move - 1; 1034 #endif 1035 } 1036 1037 if ( num_to_read > YY_READ_BUF_SIZE ) 1038 num_to_read = YY_READ_BUF_SIZE; 1039 1040 /* Read in more data. */ 1041 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), 1042 yy_n_chars, num_to_read ); 1043 1044 yy_current_buffer->yy_n_chars = yy_n_chars; 1045 } 1046 1047 if ( yy_n_chars == 0 ) 1048 { 1049 if ( number_to_move == YY_MORE_ADJ ) 1050 { 1051 ret_val = EOB_ACT_END_OF_FILE; 1052 yyrestart( yyin ); 1053 } 1054 1055 else 1056 { 1057 ret_val = EOB_ACT_LAST_MATCH; 1058 yy_current_buffer->yy_buffer_status = 1059 YY_BUFFER_EOF_PENDING; 1060 } 1061 } 1062 1063 else 1064 ret_val = EOB_ACT_CONTINUE_SCAN; 1065 1066 yy_n_chars += number_to_move; 1067 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; 1068 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 1069 1070 yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; 1071 1072 return ret_val; 1073 } 1074 1075 1076 /* yy_get_previous_state - get the state just before the EOB char was reached */ 1077 1078 #ifdef YY_USE_PROTOS 1079 static yy_state_type yy_get_previous_state(void) 1080 #else 1081 static yy_state_type yy_get_previous_state() 1082 #endif 1083 { 1084 yy_state_type yy_current_state; 1085 char *yy_cp; 1086 1087 yy_current_state = yy_start; 1088 1089 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) 1090 { 1091 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 1092 if ( yy_accept[yy_current_state] ) 1093 { 1094 yy_last_accepting_state = yy_current_state; 1095 yy_last_accepting_cpos = yy_cp; 1096 } 1097 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1098 { 1099 yy_current_state = (int) yy_def[yy_current_state]; 1100 if ( yy_current_state >= 39 ) 1101 yy_c = yy_meta[(unsigned int) yy_c]; 1102 } 1103 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 1104 } 1105 1106 return yy_current_state; 1107 } 1108 1109 1110 /* yy_try_NUL_trans - try to make a transition on the NUL character 1111 * 1112 * synopsis 1113 * next_state = yy_try_NUL_trans( current_state ); 1114 */ 1115 1116 #ifdef YY_USE_PROTOS 1117 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) 1118 #else 1119 static yy_state_type yy_try_NUL_trans( yy_current_state ) 1120 yy_state_type yy_current_state; 1121 #endif 1122 { 1123 int yy_is_jam; 1124 char *yy_cp = yy_c_buf_p; 1125 1126 YY_CHAR yy_c = 1; 1127 if ( yy_accept[yy_current_state] ) 1128 { 1129 yy_last_accepting_state = yy_current_state; 1130 yy_last_accepting_cpos = yy_cp; 1131 } 1132 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1133 { 1134 yy_current_state = (int) yy_def[yy_current_state]; 1135 if ( yy_current_state >= 39 ) 1136 yy_c = yy_meta[(unsigned int) yy_c]; 1137 } 1138 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 1139 yy_is_jam = (yy_current_state == 38); 1140 1141 return yy_is_jam ? 0 : yy_current_state; 1142 } 1143 1144 1145 #ifndef YY_NO_UNPUT 1146 #ifdef YY_USE_PROTOS 1147 static void yyunput( int c, char *yy_bp ) 1148 #else 1149 static void yyunput( c, yy_bp ) 1150 int c; 1151 char *yy_bp; 1152 #endif 1153 { 1154 char *yy_cp = yy_c_buf_p; 1155 1156 /* undo effects of setting up yytext */ 1157 *yy_cp = yy_hold_char; 1158 1159 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 1160 { /* need to shift things up to make room */ 1161 /* +2 for EOB chars. */ 1162 int number_to_move = yy_n_chars + 2; 1163 char *dest = &yy_current_buffer->yy_ch_buf[ 1164 yy_current_buffer->yy_buf_size + 2]; 1165 char *source = 1166 &yy_current_buffer->yy_ch_buf[number_to_move]; 1167 1168 while ( source > yy_current_buffer->yy_ch_buf ) 1169 *--dest = *--source; 1170 1171 yy_cp += (int) (dest - source); 1172 yy_bp += (int) (dest - source); 1173 yy_current_buffer->yy_n_chars = 1174 yy_n_chars = yy_current_buffer->yy_buf_size; 1175 1176 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 1177 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 1178 } 1179 1180 *--yy_cp = (char) c; 1181 1182 1183 yytext_ptr = yy_bp; 1184 yy_hold_char = *yy_cp; 1185 yy_c_buf_p = yy_cp; 1186 } 1187 #endif /* ifndef YY_NO_UNPUT */ 1188 1189 1190 #ifndef YY_NO_INPUT 1191 #ifdef __cplusplus 1192 static int yyinput() 1193 #else 1194 #ifdef YY_USE_PROTOS 1195 static int input(void) 1196 #else 1197 static int input() 1198 #endif 1199 #endif 1200 { 1201 int c; 1202 1203 *yy_c_buf_p = yy_hold_char; 1204 1205 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) 1206 { 1207 /* yy_c_buf_p now points to the character we want to return. 1208 * If this occurs *before* the EOB characters, then it's a 1209 * valid NUL; if not, then we've hit the end of the buffer. 1210 */ 1211 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 1212 /* This was really a NUL. */ 1213 *yy_c_buf_p = '\0'; 1214 1215 else 1216 { /* need more input */ 1217 int offset = yy_c_buf_p - yytext_ptr; 1218 ++yy_c_buf_p; 1219 1220 switch ( yy_get_next_buffer() ) 1221 { 1222 case EOB_ACT_LAST_MATCH: 1223 /* This happens because yy_g_n_b() 1224 * sees that we've accumulated a 1225 * token and flags that we need to 1226 * try matching the token before 1227 * proceeding. But for input(), 1228 * there's no matching to consider. 1229 * So convert the EOB_ACT_LAST_MATCH 1230 * to EOB_ACT_END_OF_FILE. 1231 */ 1232 1233 /* Reset buffer status. */ 1234 yyrestart( yyin ); 1235 1236 /* fall through */ 1237 1238 case EOB_ACT_END_OF_FILE: 1239 { 1240 if ( yywrap() ) 1241 return EOF; 1242 1243 if ( ! yy_did_buffer_switch_on_eof ) 1244 YY_NEW_FILE; 1245 #ifdef __cplusplus 1246 return yyinput(); 1247 #else 1248 return input(); 1249 #endif 1250 } 1251 1252 case EOB_ACT_CONTINUE_SCAN: 1253 yy_c_buf_p = yytext_ptr + offset; 1254 break; 1255 } 1256 } 1257 } 1258 1259 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ 1260 *yy_c_buf_p = '\0'; /* preserve yytext */ 1261 yy_hold_char = *++yy_c_buf_p; 1262 1263 1264 return c; 1265 } 1266 #endif /* ifndef YY_NO_INPUT */ 1267 1268 1269 #ifdef YY_USE_PROTOS 1270 void yyrestart( FILE *input_file ) 1271 #else 1272 void yyrestart( input_file ) 1273 FILE *input_file; 1274 #endif 1275 { 1276 if ( ! yy_current_buffer ) 1277 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 1278 1279 yy_init_buffer( yy_current_buffer, input_file ); 1280 yy_load_buffer_state(); 1281 } 1282 1283 1284 #ifdef YY_USE_PROTOS 1285 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) 1286 #else 1287 void yy_switch_to_buffer( new_buffer ) 1288 YY_BUFFER_STATE new_buffer; 1289 #endif 1290 { 1291 if ( yy_current_buffer == new_buffer ) 1292 return; 1293 1294 if ( yy_current_buffer ) 1295 { 1296 /* Flush out information for old buffer. */ 1297 *yy_c_buf_p = yy_hold_char; 1298 yy_current_buffer->yy_buf_pos = yy_c_buf_p; 1299 yy_current_buffer->yy_n_chars = yy_n_chars; 1300 } 1301 1302 yy_current_buffer = new_buffer; 1303 yy_load_buffer_state(); 1304 1305 /* We don't actually know whether we did this switch during 1306 * EOF (yywrap()) processing, but the only time this flag 1307 * is looked at is after yywrap() is called, so it's safe 1308 * to go ahead and always set it. 1309 */ 1310 yy_did_buffer_switch_on_eof = 1; 1311 } 1312 1313 1314 #ifdef YY_USE_PROTOS 1315 void yy_load_buffer_state( void ) 1316 #else 1317 void yy_load_buffer_state() 1318 #endif 1319 { 1320 yy_n_chars = yy_current_buffer->yy_n_chars; 1321 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; 1322 yyin = yy_current_buffer->yy_input_file; 1323 yy_hold_char = *yy_c_buf_p; 1324 } 1325 1326 1327 #ifdef YY_USE_PROTOS 1328 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) 1329 #else 1330 YY_BUFFER_STATE yy_create_buffer( file, size ) 1331 FILE *file; 1332 int size; 1333 #endif 1334 { 1335 YY_BUFFER_STATE b; 1336 1337 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 1338 if ( ! b ) 1339 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 1340 1341 b->yy_buf_size = size; 1342 1343 /* yy_ch_buf has to be 2 characters longer than the size given because 1344 * we need to put in 2 end-of-buffer characters. 1345 */ 1346 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); 1347 if ( ! b->yy_ch_buf ) 1348 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 1349 1350 b->yy_is_our_buffer = 1; 1351 1352 yy_init_buffer( b, file ); 1353 1354 return b; 1355 } 1356 1357 1358 #ifdef YY_USE_PROTOS 1359 void yy_delete_buffer( YY_BUFFER_STATE b ) 1360 #else 1361 void yy_delete_buffer( b ) 1362 YY_BUFFER_STATE b; 1363 #endif 1364 { 1365 if ( ! b ) 1366 return; 1367 1368 if ( b == yy_current_buffer ) 1369 yy_current_buffer = (YY_BUFFER_STATE) 0; 1370 1371 if ( b->yy_is_our_buffer ) 1372 yy_flex_free( (void *) b->yy_ch_buf ); 1373 1374 yy_flex_free( (void *) b ); 1375 } 1376 1377 1378 #ifndef YY_ALWAYS_INTERACTIVE 1379 #ifndef YY_NEVER_INTERACTIVE 1380 extern int isatty YY_PROTO(( int )); 1381 #endif 1382 #endif 1383 1384 #ifdef YY_USE_PROTOS 1385 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) 1386 #else 1387 void yy_init_buffer( b, file ) 1388 YY_BUFFER_STATE b; 1389 FILE *file; 1390 #endif 1391 1392 1393 { 1394 yy_flush_buffer( b ); 1395 1396 b->yy_input_file = file; 1397 b->yy_fill_buffer = 1; 1398 1399 #if YY_ALWAYS_INTERACTIVE 1400 b->yy_is_interactive = 1; 1401 #else 1402 #if YY_NEVER_INTERACTIVE 1403 b->yy_is_interactive = 0; 1404 #else 1405 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 1406 #endif 1407 #endif 1408 } 1409 1410 1411 #ifdef YY_USE_PROTOS 1412 void yy_flush_buffer( YY_BUFFER_STATE b ) 1413 #else 1414 void yy_flush_buffer( b ) 1415 YY_BUFFER_STATE b; 1416 #endif 1417 1418 { 1419 if ( ! b ) 1420 return; 1421 1422 b->yy_n_chars = 0; 1423 1424 /* We always need two end-of-buffer characters. The first causes 1425 * a transition to the end-of-buffer state. The second causes 1426 * a jam in that state. 1427 */ 1428 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 1429 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 1430 1431 b->yy_buf_pos = &b->yy_ch_buf[0]; 1432 1433 b->yy_at_bol = 1; 1434 b->yy_buffer_status = YY_BUFFER_NEW; 1435 1436 if ( b == yy_current_buffer ) 1437 yy_load_buffer_state(); 1438 } 1439 1440 1441 #ifndef YY_NO_SCAN_BUFFER 1442 #ifdef YY_USE_PROTOS 1443 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) 1444 #else 1445 YY_BUFFER_STATE yy_scan_buffer( base, size ) 1446 char *base; 1447 yy_size_t size; 1448 #endif 1449 { 1450 YY_BUFFER_STATE b; 1451 1452 if ( size < 2 || 1453 base[size-2] != YY_END_OF_BUFFER_CHAR || 1454 base[size-1] != YY_END_OF_BUFFER_CHAR ) 1455 /* They forgot to leave room for the EOB's. */ 1456 return 0; 1457 1458 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 1459 if ( ! b ) 1460 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 1461 1462 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 1463 b->yy_buf_pos = b->yy_ch_buf = base; 1464 b->yy_is_our_buffer = 0; 1465 b->yy_input_file = 0; 1466 b->yy_n_chars = b->yy_buf_size; 1467 b->yy_is_interactive = 0; 1468 b->yy_at_bol = 1; 1469 b->yy_fill_buffer = 0; 1470 b->yy_buffer_status = YY_BUFFER_NEW; 1471 1472 yy_switch_to_buffer( b ); 1473 1474 return b; 1475 } 1476 #endif 1477 1478 1479 #ifndef YY_NO_SCAN_STRING 1480 #ifdef YY_USE_PROTOS 1481 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) 1482 #else 1483 YY_BUFFER_STATE yy_scan_string( yy_str ) 1484 yyconst char *yy_str; 1485 #endif 1486 { 1487 int len; 1488 for ( len = 0; yy_str[len]; ++len ) 1489 ; 1490 1491 return yy_scan_bytes( yy_str, len ); 1492 } 1493 #endif 1494 1495 1496 #ifndef YY_NO_SCAN_BYTES 1497 #ifdef YY_USE_PROTOS 1498 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) 1499 #else 1500 YY_BUFFER_STATE yy_scan_bytes( bytes, len ) 1501 yyconst char *bytes; 1502 int len; 1503 #endif 1504 { 1505 YY_BUFFER_STATE b; 1506 char *buf; 1507 yy_size_t n; 1508 int i; 1509 1510 /* Get memory for full buffer, including space for trailing EOB's. */ 1511 n = len + 2; 1512 buf = (char *) yy_flex_alloc( n ); 1513 if ( ! buf ) 1514 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 1515 1516 for ( i = 0; i < len; ++i ) 1517 buf[i] = bytes[i]; 1518 1519 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; 1520 1521 b = yy_scan_buffer( buf, n ); 1522 if ( ! b ) 1523 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 1524 1525 /* It's okay to grow etc. this buffer, and we should throw it 1526 * away when we're done. 1527 */ 1528 b->yy_is_our_buffer = 1; 1529 1530 return b; 1531 } 1532 #endif 1533 1534 1535 #ifndef YY_NO_PUSH_STATE 1536 #ifdef YY_USE_PROTOS 1537 static void yy_push_state( int new_state ) 1538 #else 1539 static void yy_push_state( new_state ) 1540 int new_state; 1541 #endif 1542 { 1543 if ( yy_start_stack_ptr >= yy_start_stack_depth ) 1544 { 1545 yy_size_t new_size; 1546 1547 yy_start_stack_depth += YY_START_STACK_INCR; 1548 new_size = yy_start_stack_depth * sizeof( int ); 1549 1550 if ( ! yy_start_stack ) 1551 yy_start_stack = (int *) yy_flex_alloc( new_size ); 1552 1553 else 1554 yy_start_stack = (int *) yy_flex_realloc( 1555 (void *) yy_start_stack, new_size ); 1556 1557 if ( ! yy_start_stack ) 1558 YY_FATAL_ERROR( 1559 "out of memory expanding start-condition stack" ); 1560 } 1561 1562 yy_start_stack[yy_start_stack_ptr++] = YY_START; 1563 1564 BEGIN(new_state); 1565 } 1566 #endif 1567 1568 1569 #ifndef YY_NO_POP_STATE 1570 #ifdef YY_USE_PROTOS 1571 static void yy_pop_state(void) 1572 #else 1573 static void yy_pop_state() 1574 #endif 1575 { 1576 if ( --yy_start_stack_ptr < 0 ) 1577 YY_FATAL_ERROR( "start-condition stack underflow" ); 1578 1579 BEGIN(yy_start_stack[yy_start_stack_ptr]); 1580 } 1581 #endif 1582 1583 1584 #ifndef YY_NO_TOP_STATE 1585 #ifdef YY_USE_PROTOS 1586 static int yy_top_state(void) 1587 #else 1588 static int yy_top_state() 1589 #endif 1590 { 1591 return yy_start_stack[yy_start_stack_ptr - 1]; 1592 } 1593 #endif 1594 1595 #ifndef YY_EXIT_FAILURE 1596 #define YY_EXIT_FAILURE 2 1597 #endif 1598 1599 #ifdef YY_USE_PROTOS 1600 static void yy_fatal_error( yyconst char msg[] ) 1601 #else 1602 static void yy_fatal_error( msg ) 1603 char msg[]; 1604 #endif 1605 { 1606 (void) fprintf( stderr, "%s\n", msg ); 1607 exit( YY_EXIT_FAILURE ); 1608 } 1609 1610 1611 1612 /* Redefine yyless() so it works in section 3 code. */ 1613 1614 #undef yyless 1615 #define yyless(n) \ 1616 do \ 1617 { \ 1618 /* Undo effects of setting up yytext. */ \ 1619 yytext[yyleng] = yy_hold_char; \ 1620 yy_c_buf_p = yytext + n; \ 1621 yy_hold_char = *yy_c_buf_p; \ 1622 *yy_c_buf_p = '\0'; \ 1623 yyleng = n; \ 1624 } \ 1625 while ( 0 ) 1626 1627 1628 /* Internal utility routines. */ 1629 1630 #ifndef yytext_ptr 1631 #ifdef YY_USE_PROTOS 1632 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) 1633 #else 1634 static void yy_flex_strncpy( s1, s2, n ) 1635 char *s1; 1636 yyconst char *s2; 1637 int n; 1638 #endif 1639 { 1640 int i; 1641 for ( i = 0; i < n; ++i ) 1642 s1[i] = s2[i]; 1643 } 1644 #endif 1645 1646 #ifdef YY_NEED_STRLEN 1647 #ifdef YY_USE_PROTOS 1648 static int yy_flex_strlen( yyconst char *s ) 1649 #else 1650 static int yy_flex_strlen( s ) 1651 yyconst char *s; 1652 #endif 1653 { 1654 int n; 1655 for ( n = 0; s[n]; ++n ) 1656 ; 1657 1658 return n; 1659 } 1660 #endif 1661 1662 1663 #ifdef YY_USE_PROTOS 1664 static void *yy_flex_alloc( yy_size_t size ) 1665 #else 1666 static void *yy_flex_alloc( size ) 1667 yy_size_t size; 1668 #endif 1669 { 1670 return (void *) malloc( size ); 1671 } 1672 1673 #ifdef YY_USE_PROTOS 1674 static void *yy_flex_realloc( void *ptr, yy_size_t size ) 1675 #else 1676 static void *yy_flex_realloc( ptr, size ) 1677 void *ptr; 1678 yy_size_t size; 1679 #endif 1680 { 1681 /* The cast to (char *) in the following accommodates both 1682 * implementations that use char* generic pointers, and those 1683 * that use void* generic pointers. It works with the latter 1684 * because both ANSI C and C++ allow castless assignment from 1685 * any pointer type to void*, and deal with argument conversions 1686 * as though doing an assignment. 1687 */ 1688 return (void *) realloc( (char *) ptr, size ); 1689 } 1690 1691 #ifdef YY_USE_PROTOS 1692 static void yy_flex_free( void *ptr ) 1693 #else 1694 static void yy_flex_free( ptr ) 1695 void *ptr; 1696 #endif 1697 { 1698 free( ptr ); 1699 } 1700 1701 #if YY_MAIN 1702 int main() 1703 { 1704 yylex(); 1705 return 0; 1706 } 1707 #endif 1708 #line 107 "../../../gmp/demos/calc/calclex.l" 1709 1710 1711 int 1712 yywrap () 1713 { 1714 return 1; 1715 }