⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scan.c

📁 操作系统源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* 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# line 2 "scan.l"/* scan.l: the (f)lex description file for the scanner. *//*  This file is part of bc written for MINIX.    Copyright (C) 1991, 1992 Free Software Foundation, Inc.    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License , or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; see the file COPYING.  If not, write to    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.    You may contact the author by:       e-mail:  phil@cs.wwu.edu      us-mail:  Philip A. Nelson                Computer Science Department, 9062                Western Washington University                Bellingham, WA 98226-9062       *************************************************************************/#include "bcdefs.h"#include "y.tab.h"#include "global.h"#include "proto.h"/* Using flex, we can ask for a smaller input buffer.  With lex, this   does nothing! */#ifdef SMALL_BUF#undef YY_READ_BUF_SIZE#define YY_READ_BUF_SIZE 512#endif/* We want to define our own yywrap. */#undef yywrap_PROTOTYPE(int yywrap, (void));/* MINIX returns from read with < 0 if SIGINT is  encountered.   In flex, we can redefine YY_INPUT to the following.  In lex, this   does nothing! */#include <errno.h>#undef  YY_INPUT#define YY_INPUT(buf,result,max_size) \	while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \	    if (errno != EINTR) \		YY_FATAL_ERROR( "read() in flex scanner failed" );# line 60 "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 40typedef int yy_state_type;static const short int yy_accept[144] =    {   0,        0,    0,   40,   38,   33,   31,   25,   38,   26,   38,       22,   26,   22,   22,   38,   26,   37,   29,   27,   29,       38,   22,   35,   35,   35,   35,   35,   35,   35,   35,       35,   35,   35,   35,   35,   35,   35,   35,   38,   33,       29,    0,   36,   27,   23,   30,   37,    0,   34,   37,       37,    0,   28,   32,   35,   35,   35,   35,   35,   35,       35,   35,   35,    7,   35,   35,   35,   35,   35,   35,       35,   35,   35,   35,   35,   24,   37,    0,    0,   37,        0,   35,   35,   35,   35,   35,    6,   35,   35,   35,       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,       35,   13,   35,   35,   35,   14,   16,   35,   17,   35,       35,   35,   35,    3,   15,   35,   35,    9,   35,   35,        2,   35,   35,   11,   35,   35,   12,   20,   35,   10,       35,    8,   35,    1,    4,   21,    5,   35,   35,   35,       19,   18,    0    } ;static const YY_CHAR yy_ec[256] =    {   0,        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    2,    4,    5,    1,    1,    6,    7,    1,    8,        9,   10,   11,   12,   13,   14,   15,   16,   16,   16,       16,   16,   16,   16,   16,   16,   16,    1,   17,   18,       19,   20,    1,    1,   21,   21,   21,   21,   21,   21,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,       22,   23,   24,   25,   26,    1,   27,   28,   29,   30,       31,   32,   33,   34,   35,   36,   37,   38,   39,   40,       41,   42,   43,   44,   45,   46,   47,   36,   48,   36,       49,   36,   50,   51,   52,    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[53] =    {   0,        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,        1,    1,    1,    1,    1,    2,    1,    1,    1,    1,        1,    1,    1,    1,    1,    2,    2,    2,    2,    2,        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,        2,    2,    2,    2,    2,    2,    2,    2,    2,    1,        1,    1    } ;static const short int yy_base[146] =    {   0,        0,    0,  193,  194,  190,  194,  172,  185,  170,  181,      194,  168,   42,   41,   41,   46,   52,  167,   61,  166,      181,  164,  135,  137,  139,  148,  140,  136,    0,  149,       27,   50,  147,  130,  126,  141,   40,   36,  120,  168,      194,  164,  194,  194,  194,  194,   66,  165,  194,   72,       76,  164,  194,  194,    0,  120,  134,  124,  131,  117,      117,  122,  132,    0,  113,  117,  117,  128,  119,  118,       52,  125,  107,  106,  114,  194,   80,  145,   84,   88,      144,  105,  118,   98,  108,  111,    0,   95,   95,   93,      105,  102,   91,   95,   88,  103,   85,   93,   84,   85,       90,    0,   90,   91,   85,    0,    0,   93,    0,   77,       76,   90,   74,    0,    0,   75,   87,    0,   90,   85,        0,   75,   83,    0,   76,   63,    0,    0,   66,    0,       62,    0,   47,    0,    0,    0,    0,   45,   53,   29,        0,    0,  194,  111,   56    } ;static const short int yy_def[146] =    {   0,      143,    1,  143,  143,  143,  143,  143,  144,  143,  143,      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  143,  143,      143,  144,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  143,  143,  143,  143,  143,      143,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,  145,  145,  145,  145,  145,  145,  145,  145,      145,  145,    0,  143,  143    } ;static const short int yy_nxt[247] =    {   0,        4,    5,    6,    7,    8,    9,   10,   11,   11,   12,       13,   11,   14,   15,   16,   17,   11,   18,   19,   20,       17,   11,   21,   11,   22,    4,   23,   24,   25,   26,       27,   28,   29,   30,   31,   29,   29,   32,   29,   29,       33,   34,   35,   36,   37,   29,   29,   38,   29,   11,       39,   11,   46,   46,   63,   49,   47,   55,   64,   44,       44,   47,   74,   48,   44,   50,   53,   51,   72,   75,       53,   53,   51,   53,   52,   53,   65,  142,   96,   41,       66,   77,   73,  141,   67,   53,   77,   80,   78,   50,      140,   51,   80,  139,   81,   77,   51,   97,   52,   47,       77,  138,   78,   80,   47,  137,   48,  136,   80,  135,       81,   42,   42,  134,  133,  132,  131,  130,  129,  128,      127,  126,  125,  124,  123,  122,  121,  120,  119,  118,      117,  116,  115,  114,  113,  112,  111,  110,  109,  108,      107,  106,  105,  104,  103,  102,   80,   77,  101,  100,       99,   98,   95,   94,   93,   92,   91,   90,   89,   88,       87,   86,   85,   84,   83,   82,   51,   79,   43,   40,       76,   71,   70,   69,   68,   62,   61,   60,   59,   58,       57,   56,   44,   54,   41,   41,   44,   45,   44,   43,       41,   40,  143,    3,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,      143,  143,  143,  143,  143,  143    } ;static const short int yy_chk[247] =    {   0,        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,   13,   14,   31,   16,   15,  145,   31,   14,       13,   15,   38,   15,   16,   17,   19,   17,   37,   38,       19,   19,   17,   19,   17,   19,   32,  140,   71,   19,       32,   47,   37,  139,   32,   19,   47,   50,   47,   51,      138,   51,   50,  133,   50,   77,   51,   71,   51,   79,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -