📄 scan.c
字号:
/* A lexical scanner generated by flex *//* scanner skeleton version: * $Header: /usr/fsys/odin/a/vern/flex/RCS/flex.skel,v 2.16 90/08/03 14:09:36 vern Exp $ */#define FLEX_SCANNER#include <stdio.h>/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */#ifdef c_plusplus#ifndef __cplusplus#define __cplusplus#endif#endif#ifdef __cplusplus#include <stdlib.h>#include <osfcn.h>/* use prototypes in function declarations */#define YY_USE_PROTOS/* the "const" storage-class-modifier is valid */#define YY_USE_CONST#else /* ! __cplusplus */#ifdef __STDC__#ifdef __GNUC__#include <stddef.h>void *malloc( size_t );void free( void* );#else#include <stdlib.h>#endif /* __GNUC__ */#define YY_USE_PROTOS#define YY_USE_CONST#endif /* __STDC__ */#endif /* ! __cplusplus */#ifdef __TURBOC__#define YY_USE_CONST#endif#ifndef YY_USE_CONST#define const#endif#ifdef YY_USE_PROTOS#define YY_PROTO(proto) proto#else#define YY_PROTO(proto) ()/* we can't get here if it's an ANSI C compiler, or a C++ compiler, * so it's got to be a K&R compiler, and therefore there's no standard * place from which to include these definitions */char *malloc();int free();int read();#endif/* amount of stuff to slurp up with each read */#ifndef YY_READ_BUF_SIZE#define YY_READ_BUF_SIZE 8192#endif/* returned upon end-of-file */#define YY_END_TOK 0/* copy whatever the last rule matched to the standard output *//* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) *//* this used to be an fputs(), but since the string might contain NUL's, * we now use fwrite() */#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout )/* gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */#define YY_INPUT(buf,result,max_size) \ if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ YY_FATAL_ERROR( "read() in flex scanner failed" );#define YY_NULL 0/* 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. */#define yyterminate() return ( YY_NULL )/* report a fatal error *//* The funky do-while is used to turn this macro definition into * a single C statement (which needs a semi-colon terminator). * This avoids problems with code like: * * if ( something_happens ) * YY_FATAL_ERROR( "oops, the something happened" ); * else * everything_okay(); * * Prior to using the do-while the compiler would get upset at the * "else" because it interpreted the "if" statement as being all * done when it reached the ';' after the YY_FATAL_ERROR() call. */#define YY_FATAL_ERROR(msg) \ do \ { \ (void) fputs( msg, stderr ); \ (void) putc( '\n', stderr ); \ exit( 1 ); \ } \ while ( 0 )/* default yywrap function - always treat EOF as an EOF */#define yywrap() 1/* enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN */#define BEGIN yy_start = 1 + 2 */* action number for EOF rule of a given start state */#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)/* special action meaning "start processing a new file" */#define YY_NEW_FILE \ do \ { \ yy_init_buffer( yy_current_buffer, yyin ); \ yy_load_buffer_state(); \ } \ while ( 0 )/* default declaration of generated scanner - a define so the user can * easily add parameters */#define YY_DECL int yylex YY_PROTO(( void )) /* code executed at the end of each rule */#define YY_BREAK break;#define YY_END_OF_BUFFER_CHAR 0#ifndef YY_BUF_SIZE#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */#endiftypedef struct yy_buffer_state *YY_BUFFER_STATE;#define YY_CHAR unsigned char# line 1 "scan.l"#define INITIAL 0/* scan.l - scanner for flex input */# line 5 "scan.l"/*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Vern Paxson. * * The United States Government has rights in this work pursuant * to contract no. DE-AC03-76SF00098 between the United States * Department of Energy and the University of California. * * Redistribution and use in source and binary forms are permitted provided * that: (1) source distributions retain this entire copyright notice and * comment, and (2) distributions including binaries display the following * acknowledgement: ``This product includes software developed by the * University of California, Berkeley and its contributors'' in the * documentation or other materials provided with the distribution and in * all advertising materials mentioning features or use of this software. * Neither the name of the University nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#ifndef lintstatic char rcsid[] = "@(#) $Header: /usr/fsys/odin/a/vern/flex/RCS/scan.l,v 2.9 90/06/27 23:48:34 vern Exp $ (LBL)";#endif#undef yywrap#include "flexdef.h"#include "parse.h"#define ACTION_ECHO fprintf( temp_action_file, "%s", yytext )#define MARK_END_OF_PROLOG fprintf( temp_action_file, "%%%% end of prolog\n" );#undef YY_DECL#define YY_DECL \ int flexscan()#define RETURNCHAR \ yylval = yytext[0]; \ return ( CHAR );#define RETURNNAME \ (void) strcpy( nmstr, (char *) yytext ); \ return ( NAME );#define PUT_BACK_STRING(str, start) \ for ( i = strlen( (char *) (str) ) - 1; i >= start; --i ) \ unput((str)[i])#define CHECK_REJECT(str) \ if ( all_upper( str ) ) \ reject = true;#define CHECK_YYMORE(str) \ if ( all_lower( str ) ) \ yymore_used = true;#define SECT2 1#define SECT2PROLOG 2#define SECT3 3#define CODEBLOCK 4#define PICKUPDEF 5#define SC 6#define CARETISBOL 7#define NUM 8#define QUOTE 9#define FIRSTCCL 10#define CCL 11#define ACTION 12#define RECOVER 13#define BRACEERROR 14#define C_COMMENT 15#define ACTION_COMMENT 16#define ACTION_STRING 17#define PERCENT_BRACE_ACTION 18#define USED_LIST 19#define CODEBLOCK_2 20#define XLATION 21# line 84 "scan.l"/* done after the current pattern has been matched and before the * corresponding action - sets up yytext */#define YY_DO_BEFORE_ACTION \ yytext = yy_bp; \ yyleng = yy_cp - yy_bp; \ yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp;#define EOB_ACT_CONTINUE_SCAN 0#define EOB_ACT_END_OF_FILE 1#define EOB_ACT_LAST_MATCH 2/* return all but the first 'n' matched characters back to the input stream */#define yyless(n) \ do \ { \ /* undo effects of setting up yytext */ \ *yy_cp = yy_hold_char; \ yy_c_buf_p = yy_cp = yy_bp + n; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 )#define unput(c) yyunput( c, yytext )struct yy_buffer_state { FILE *yy_input_file; YY_CHAR *yy_ch_buf; /* input buffer */ YY_CHAR *yy_buf_pos; /* current position in input buffer */ /* size of input buffer in bytes, not including room for EOB characters*/ int yy_buf_size; /* number of characters read into yy_ch_buf, not including EOB characters */ int yy_n_chars; int yy_eof_status; /* whether we've seen an EOF on this buffer */#define EOF_NOT_SEEN 0 /* "pending" happens when the EOF has been seen but there's still * some text process */#define EOF_PENDING 1#define EOF_DONE 2 };static YY_BUFFER_STATE yy_current_buffer;/* we provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state" */#define YY_CURRENT_BUFFER yy_current_buffer/* yy_hold_char holds the character lost when yytext is formed */static YY_CHAR yy_hold_char;static int yy_n_chars; /* number of characters read into yy_ch_buf */#ifndef YY_USER_ACTION#define YY_USER_ACTION#endif#ifndef YY_USER_INIT#define YY_USER_INIT#endifextern YY_CHAR *yytext;extern int yyleng;extern FILE *yyin, *yyout;YY_CHAR *yytext;int yyleng;FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;#define YY_END_OF_BUFFER 121typedef int yy_state_type;static const short int yy_accept[341] = { 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 19, 7, 18, 19, 16, 1, 17, 19, 19, 19, 15, 67, 59, 60, 53, 67, 66, 51, 67, 67, 67, 50, 49, 67, 52, 120, 47, 119, 119, 28, 29, 28, 28, 28, 28, 31, 30, 32, 73, 120, 69, 70, 72, 74, 88, 89, 86, 85, 87, 75, 77, 76, 75, 81, 80, 81, 81, 83, 83, 83, 84, 99, 104, 103, 105, 105, 100, 100, 100, 97, 98, 120, 33, 91, 90, 22, 24, 23, 107, 109, 108, 111, 113, 114, 115, 95, 95, 96, 95, 95, 95, 95, 38, 35, 34, 38, 38, 44, 42, 45, 44, 44, 41, 41, 41, 40, 41, 7, 18, 0, 16, 1, 17, 0, 2, 14, 8, 0, 12, 4, 0, 0, 5, 0, 3, 15, 59, 60, 0, 0, 56, 0, 0, 0, 117, 117, 117, 55, 54, 55, 50, 49, 63, 50, 0, 47, 46, 119, 119, 28, 28, 28, 28, 28, 31, 30, 71, 72, 85, 118, 118, 118, 78, 79, 82, 99, 0, 102, 0, 101, 100, 100, 100, 0, 33, 22, 20, 107, 106, 111, 112, 95, 95, 95, 92, 95, 95, 95, 38, 35, 38, 38, 42, 0, 43, 43, 43, 42, 40, 0, 13, 14, 8, 8, 0, 12, 4, 0, 0, 0, 5, 0, 6, 57, 0, 58, 0, 64, 0, 0, 117, 117, 55, 55, 65, 63, 28, 28, 28, 25, 0, 118, 118, 100, 100, 0, 21, 92, 92, 95, 95, 38, 38, 0, 39, 43, 43, 0, 11, 4, 0, 11, 0, 0, 5, 0, 0, 0, 117, 28, 28, 118, 100, 100, 95, 95, 38, 38, 43, 0, 9, 0, 0, 0, 28, 28, 100, 100, 95, 95, 38, 38, 0, 0, 26, 27, 93, 94, 93, 94, 36, 37, 10, 62, 0 } ;static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 6, 7, 8, 9, 1, 10, 11, 11, 12, 11, 13, 14, 11, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 17, 1, 18, 11, 1, 24, 25, 26, 27, 28, 29, 23, 23, 23, 30, 31, 23, 32, 33, 34, 31, 23, 35, 36, 37, 38, 23, 23, 39, 40, 23, 19, 20, 21, 22, 23, 1, 24, 25, 26, 27, 28, 29, 23, 23, 23, 30, 31, 23, 32, 33, 34, 31, 23, 35, 36, 37, 38, 23, 23, 39, 40, 23, 41, 42, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ;static const YY_CHAR yy_meta[44] = { 0, 1, 2, 3, 2, 2, 4, 1, 1, 1, 5, 1, 6, 1, 7, 5, 8, 1, 1, 1, 9, 10, 1, 11, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 1, 13 } ;static const short int yy_base[404] = { 0, 0, 43, 85, 126, 1371, 1370, 1369, 1353, 168, 1346, 104, 108, 211, 0, 1332, 1320, 120, 252, 95, 119, 137, 144, 100, 141, 295, 0, 1327, 1323, 113, 336, 254, 255, 257, 258, 253, 268, 379, 0, 338, 421, 0, 0, 273, 460, 1325, 1442, 281, 1442, 1287, 0, 287, 1442, 1279, 472, 1257, 0, 1442, 425, 1442, 1442, 147, 1442, 1239, 1235, 78, 513, 433, 1442, 83, 1442, 1248, 0, 1247, 1442, 0, 1442, 0, 1218, 1205, 1194, 0, 342, 1442, 1442, 1442, 1442, 1202, 0, 1442, 1442, 1442, 1442, 1201, 1442, 1442, 1442, 1442, 79, 1442, 1442,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -