📄 lexer.c
字号:
114, 114, 80, 215, 115, 110, 115, 115, 115, 201, 399, 114, 141, 141, 141, 159, 786, 129, 159, 201, 163, 159, 163, 105, 399, 163, 228, 165, 173, 110, 228, 250, 173, 421, 110, 114, 165, 165, 173, 175, 114, 175, 115, 229, 175, 175, 180, 229, 141, 177, 180, 175, 229, 220, 177, 220, 175, 175, 220, 177, 180, 224, 180, 224, 233, 231, 224, 231, 233, 234, 231, 231, 165, 233, 234, 236, 231, 246, 246, 236, 239, 231, 231, 245, 239, 248, 248, 245, 236, 422, 236, 250, 251, 250, 253, 254, 255, 266, 253, 421, 267, 297, 266, 266, 267, 297, 267, 270, 423, 787, 270, 270, 270, 279, 319, 330, 271, 271, 271, 292, 292, 292, 279, 319, 319, 343, 424, 343, 271, 375, 330, 377, 246, 375, 377, 409, 246, 409, 553, 428, 248, 554, 422, 428, 248, 428, 270, 251, 557, 447, 254, 255, 271, 447, 251, 292, 558, 271, 279, 319, 429, 423, 429, 430, 431, 431, 431, 430, 645, 430, 432, 432, 432, 516, 563, 646, 563, 516, 424, 564, 647, 564, 648, 702, 705, 734, 747, 747, 788, 747, 753, 753, 553, 753, 754, 758, 754, 758, 789, 554, 431, 759, 557, 759, 771, 747, 432, 768, 769, 753, 768, 769, 768, 769, 754, 758, 558, 770, 790, 791, 770, 759, 770, 772, 773, 772, 645, 773, 792, 773, 646, 774, 771, 774, 793, 647, 770, 705, 702, 734, 778, 775, 778, 773, 775, 794, 775, 809, 795, 781, 648, 795, 780, 795, 779, 777, 776, 768, 767, 766, 775, 797, 797, 797, 797, 797, 797, 798, 798, 798, 798, 798, 798, 799, 799, 799, 799, 799, 799, 800, 800, 800, 800, 800, 800, 801, 801, 801, 801, 801, 801, 802, 802, 802, 802, 802, 802, 803, 803, 803, 803, 803, 803, 804, 804, 805, 805, 805, 805, 805, 805, 806, 765, 764, 806, 806, 806, 807, 807, 807, 807, 807, 807, 808, 808, 808, 808, 808, 808, 810, 810, 811, 811, 811, 811, 811, 811, 812, 812, 812, 812, 812, 812, 813, 813, 763, 813, 813, 813, 814, 814, 814, 814, 814, 814, 815, 815, 815, 815, 815, 815, 816, 816, 816, 816, 816, 816, 817, 817, 817, 817, 817, 817, 818, 818, 762, 818, 818, 818, 819, 819, 761, 819, 819, 819, 760, 756, 755, 752, 750, 749, 748, 746, 745, 744, 740, 738, 737, 735, 732, 731, 730, 729, 728, 727, 726, 725, 720, 717, 716, 715, 712, 710, 708, 707, 706, 704, 703, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 676, 672, 671, 670, 669, 668, 667, 664, 661, 659, 658, 657, 656, 652, 651, 650, 649, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 612, 611, 610, 609, 608, 606, 605, 603, 602, 601, 600, 599, 598, 596, 595, 594, 593, 592, 591, 590, 589, 587, 585, 584, 583, 580, 577, 576, 573, 569, 565, 562, 561, 560, 559, 555, 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 503, 502, 500, 496, 495, 492, 491, 489, 488, 486, 485, 484, 483, 482, 481, 480, 478, 477, 476, 475, 474, 470, 469, 468, 467, 466, 465, 463, 461, 460, 459, 457, 455, 453, 451, 449, 448, 446, 445, 442, 441, 439, 438, 437, 436, 435, 434, 433, 427, 426, 425, 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 408, 407, 406, 405, 404, 403, 402, 401, 400, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 376, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, 342, 341, 340, 338, 337, 335, 334, 333, 332, 329, 328, 327, 326, 325, 324, 322, 320, 318, 316, 315, 314, 313, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 299, 296, 295, 294, 291, 290, 289, 288, 287, 286, 285, 284, 283, 281, 280, 277, 276, 275, 273, 272, 268, 265, 264, 263, 261, 260, 259, 257, 256, 247, 244, 243, 242, 241, 240, 238, 237, 235, 232, 230, 227, 226, 225, 223, 222, 221, 219, 218, 217, 216, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 202, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 186, 184, 182, 181, 179, 176, 174, 171, 170, 169, 164, 162, 161, 160, 157, 156, 155, 154, 153, 151, 149, 148, 147, 146, 145, 144, 143, 142, 140, 139, 138, 134, 132, 131, 130, 127, 126, 125, 124, 123, 122, 108, 104, 103, 102, 101, 100, 99, 98, 96, 94, 93, 89, 83, 78, 76, 75, 68, 67, 56, 54, 53, 46, 45, 42, 34, 23, 21, 18, 15, 13, 5, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 } ;static yy_state_type yy_last_accepting_state;static char *yy_last_accepting_cpos;/* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */#define REJECT reject_used_but_not_detected#define yymore() yymore_used_but_not_detected#define YY_MORE_ADJ 0#define YY_RESTORE_YY_MORE_OFFSETchar *yytext;#line 1 "lexer.l"#define INITIAL 0/*Copyright (c) 2000, Red Hat, Inc.This file is part of Source-Navigator.Source-Navigator is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public License as publishedby the Free Software Foundation; either version 2, or (at your option)any later version.Source-Navigator is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public License alongwith Source-Navigator; see the file COPYING. If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA.*//* * lexer.l * * Copyright (C) 1998 Cyngus Solutions * * Description: * A GNU flex scanner for the GNU CHILL programming language. * * A few of these keywords are not even recognised in the current version * of the parser, but we will recognise them anyway in the hope that they * will generate warnings/errors to prevent the use of reserved words. */#line 40 "lexer.l"#include <stdio.h>#include <string.h>#include "symtab.h"#include "snptools.h"#include "parser.h"#include "emit.h"#include "lexinput.h"#undef YY_INPUT#define YY_INPUT(buf,r,ms) (r = sn_encoded_input(buf, ms)) /* For keeping count of how deep in an #ifdef nest we get. */static int ifdef_nesting = 0;#if 0#define keyword(k) emitarg("keyword", k)#define symbol(s) emitarg("symbol", s)#define literal(kind, text) emitarg(kind"literal", text)#define ident(i) emitarg("ident", i)#define include(i) emitarg("include", i)#else#define keyword(k)#define symbol(s)#define literal(kind, text)#define ident(i)#define include(i)#endif#define COMMENT 1#define ELSEDIRECTIVE 2#define PREDIRECTIVE 3#define DIRECTIVE 4#define POSTDIRECTIVE 5/* Macros after this point can all be overridden by user definitions in * section 1. */#ifndef YY_SKIP_YYWRAP#ifdef __cplusplusextern "C" int yywrap YY_PROTO(( void ));#elseextern int yywrap YY_PROTO(( void ));#endif#endif#ifndef YY_NO_UNPUTstatic void yyunput YY_PROTO(( int c, char *buf_ptr ));#endif#ifndef yytext_ptrstatic void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));#endif#ifdef YY_NEED_STRLENstatic int yy_flex_strlen YY_PROTO(( yyconst char * ));#endif#ifndef YY_NO_INPUT#ifdef __cplusplusstatic int yyinput YY_PROTO(( void ));#elsestatic int input YY_PROTO(( void ));#endif#endif#if YY_STACK_USEDstatic int yy_start_stack_ptr = 0;static int yy_start_stack_depth = 0;static int *yy_start_stack = 0;#ifndef YY_NO_PUSH_STATEstatic void yy_push_state YY_PROTO(( int new_state ));#endif#ifndef YY_NO_POP_STATEstatic void yy_pop_state YY_PROTO(( void ));#endif#ifndef YY_NO_TOP_STATEstatic int yy_top_state YY_PROTO(( void ));#endif#else#define YY_NO_PUSH_STATE 1#define YY_NO_POP_STATE 1#define YY_NO_TOP_STATE 1#endif#ifdef YY_MALLOC_DECLYY_MALLOC_DECL#else#if __STDC__#ifndef __cplusplus#include <stdlib.h>#endif#else/* Just try to get by without declaring the routines. This will fail * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) * or sizeof(void*) != sizeof(int). */#endif#endif/* Amount of stuff to slurp up with each read. */#ifndef YY_READ_BUF_SIZE#define YY_READ_BUF_SIZE 8192#endif/* Copy whatever the last rule matched to the standard output. */#ifndef ECHO/* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )#endif/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */#ifndef YY_INPUT#define YY_INPUT(buf,result,max_size) \ if ( yy_current_buffer->yy_is_interactive ) \ { \ int c = '*', n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }#endif/* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */#ifndef yyterminate#define yyterminate() return YY_NULL#endif/* Number of entries by which start-condition stack grows. */#ifndef YY_START_STACK_INCR#define YY_START_STACK_INCR 25#endif/* Report a fatal error. */#ifndef YY_FATAL_ERROR#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )#endif/* Default declaration of generated scanner - a define so the user can * easily add parameters. */#ifndef YY_DECL#define YY_DECL int yylex YY_PROTO(( void ))#endif/* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */#ifndef YY_USER_ACTION#define YY_USER_ACTION#endif/* Code executed at the end of each rule. */#ifndef YY_BREAK#define YY_BREAK break;#endif#define YY_RULE_SETUP \ if ( yyleng > 0 ) \ yy_current_buffer->yy_at_bol = \ (yytext[yyleng - 1] == '\n'); \ YY_USER_ACTIONYY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act;#line 119 "lexer.l" if ( yy_init ) { yy_init = 0;#ifdef YY_USER_INIT YY_USER_INIT;#endif if ( ! yy_start ) yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! yy_current_buffer ) yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); yy_load_buffer_state(); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yy_c_buf_p;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -