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

📄 scan.c

📁 操作系统源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* 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 + -