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

📄 parse.c

📁 Minix比较全的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
#ifndef lintstatic char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";#endif#define YYBYACC 1#define YYMAJOR 1#define YYMINOR 9#define yyclearin (yychar=(-1))#define yyerrok (yyerrflag=0)#define YYRECOVERING (yyerrflag!=0)#define YYPREFIX "yy"#line 10 "./parse.y"/*- * 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 with or without * modification 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. *//* $Header$ *//* Some versions of bison are broken in that they use alloca() but don't * declare it properly.  The following is the patented (just kidding!) * #ifdef chud to fix the problem, courtesy of Francois Pinard. */#ifdef YYBISON/* AIX requires this to be the first thing in the file.  What a piece.  */# ifdef _AIX #pragma alloca# endif#endif#include "flexdef.h"/* The remainder of the alloca() cruft has to come after including flexdef.h, * so HAVE_ALLOCA_H is (possibly) defined. */#ifdef YYBISON# ifdef __GNUC__#  ifndef alloca#   define alloca __builtin_alloca#  endif# else#  if HAVE_ALLOCA_H#   include <alloca.h>#  else#   ifdef __hpuxvoid *alloca ();#   else#    ifdef __TURBOC__#     include <malloc.h>#    elsechar *alloca ();#    endif#   endif#  endif# endif#endif/* Bletch, ^^^^ that was ugly! */int pat, scnum, eps, headcnt, trailcnt, anyccl, lastchar, i, rulelen;int trlcontxt, xcluflg, currccl, cclsorted, varlength, variable_trail_rule;int *scon_stk;int scon_stk_ptr;static int madeany = false;  /* whether we've made the '.' character class */int previous_continued_action;	/* whether the previous rule's action was '|' *//* Expand a POSIX character class expression. */#define CCL_EXPR(func) \	{ \	int c; \	for ( c = 0; c < csize; ++c ) \		if ( isascii(c) && func(c) ) \			ccladd( currccl, c ); \	}/* While POSIX defines isblank(), it's not ANSI C. */#define IS_BLANK(c) ((c) == ' ' || (c) == '\t')/* On some over-ambitious machines, such as DEC Alpha's, the default * token type is "long" instead of "int"; this leads to problems with * declaring yylval in flexdef.h.  But so far, all the yacc's I've seen * wrap their definitions of YYSTYPE with "#ifndef YYSTYPE"'s, so the * following should ensure that the default token type is "int". */#define YYSTYPE int#line 112 "y.tab.c"#define CHAR 257#define NUMBER 258#define SECTEND 259#define SCDECL 260#define XSCDECL 261#define NAME 262#define PREVCCL 263#define EOF_OP 264#define OPTION_OP 265#define OPT_OUTFILE 266#define OPT_PREFIX 267#define OPT_YYCLASS 268#define CCE_ALNUM 269#define CCE_ALPHA 270#define CCE_BLANK 271#define CCE_CNTRL 272#define CCE_DIGIT 273#define CCE_GRAPH 274#define CCE_LOWER 275#define CCE_PRINT 276#define CCE_PUNCT 277#define CCE_SPACE 278#define CCE_UPPER 279#define CCE_XDIGIT 280#define YYERRCODE 256short yylhs[] = {                                        -1,    0,    1,    2,    2,    2,    2,    3,    6,    6,    7,    7,    7,    8,    9,    9,   10,   10,   10,    4,    4,    4,    5,   12,   12,   12,   12,   14,   11,   11,   11,   15,   15,   15,   16,   13,   13,   13,   13,   18,   18,   17,   19,   19,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   21,   21,   23,   23,   23,   23,   24,   24,   24,   24,   24,   24,   24,   24,   24,   24,   24,   24,   22,   22,};short yylen[] = {                                         2,    5,    0,    3,    2,    0,    1,    1,    1,    1,    2,    1,    1,    2,    2,    0,    3,    3,    3,    5,    5,    0,    0,    2,    1,    1,    1,    0,    4,    3,    0,    3,    1,    1,    1,    2,    3,    2,    1,    3,    1,    2,    2,    1,    2,    2,    2,    6,    5,    4,    1,    1,    1,    3,    3,    1,    3,    4,    4,    2,    2,    0,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    2,    0,};short yydefred[] = {                                      2,    0,    0,    6,    0,    7,    8,    9,   15,   21,    0,    4,    0,    0,   12,   11,    0,    0,    0,    0,   14,    0,    1,    0,   10,    0,    0,    0,    0,    0,   21,    0,   16,   17,   18,   29,   33,   34,    0,   32,    0,   26,   55,   52,   25,    0,   50,   75,    0,    0,    0,   24,    0,    0,    0,    0,   51,   28,    0,   20,   23,    0,    0,   61,    0,   19,    0,   37,    0,   41,    0,    0,   44,   45,   46,   31,   74,   53,   54,    0,    0,   62,   63,   64,   65,   66,   67,   68,   69,   70,   71,   72,   73,   56,   60,   36,    0,    0,   57,    0,   49,    0,   58,    0,   48,   47,};short yydgoto[] = {                                       1,    2,    4,    9,   13,   22,   10,   16,   11,   12,   20,   23,   50,   51,   29,   38,   39,   52,   53,   54,   55,   56,   61,   64,   94,};short yysindex[] = {                                      0,    0, -235,    0, -191,    0,    0,    0,    0,    0, -207,    0, -215,  -18,    0,    0, -202,    4,   26,   32,    0,   41,    0,  -35,    0, -168, -166, -165,   38, -180,    0,  -30,    0,    0,    0,    0,    0,    0,  -16,    0,  -40,    0,    0,    0,    0,   -2,    0,    0,   -2,    8,   93,    0,   -2,  -25,   -2,   15,    0,    0, -153,    0,    0,  -27,  -26,    0,  -88,    0,  -23,    0,   -2,    0,   15, -150,    0,    0,    0,    0,    0,    0,    0,   -3,   65,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   -2,  -21,    0, -145,    0, -116,    0,  -12,    0,    0,};short yyrindex[] = {                                      0,    0, -188,    0,    0,    0,    0,    0,    0,    0,    0,    0, -154,    1,    0,    0, -140,    0,    0,    0,    0, -176,    0,  -28,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  -32,    0,    0,    0,    0,    0,    0,    0,    0,   22,    0,    0,    0,  106,    7,  -10,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  108,    0,    0,    0,   -7,    0,    0,    0,    0,    0,    0,    0,    0,    0,   46,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,};short yygindex[] = {                                      0,    0,    0,    0,   92,  100,    0,    0,    0,    0,    0,    0,    0,   81,    0,    0,   69,    0,   27,   60,  -29,    0,    0,   66,    0,};#define YYTABLESIZE 326short yytable[] = {                                      43,   22,   30,   42,   47,   93,   22,   77,   30,  104,   48,   67,   22,   95,   30,   78,   46,   40,   22,   39,   21,    3,   69,  101,   43,   70,   43,   42,   58,   42,   43,   43,   47,   42,   42,   30,   43,   43,   48,   42,   42,   30,   21,   40,   46,   39,   57,   30,   40,   14,   39,   17,   18,   19,   40,   15,   39,   72,   73,   30,   24,   49,   30,   22,   45,   25,   22,   70,    5,    6,    7,    5,    5,    5,    8,   62,   36,    5,   74,   66,   27,   43,   37,   28,   42,   59,   27,   26,   30,   49,   98,   30,   30,   27,   32,   30,   33,   34,   68,   68,   35,   68,   63,   65,  100,   13,   13,   13,   97,   37,   99,   13,  102,  105,   43,   61,   38,   42,   35,    3,    3,    3,   40,   31,   30,    3,   60,   75,   96,   79,    0,   40,    0,   39,    0,    0,    0,    0,   71,   59,    0,    0,  103,    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,   80,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,   91,   92,    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,   30,   30,   41,   42,   22,   22,   76,   30,   30,   43,   44,   22,   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   43,    0,    0,   42,    0,    0,   43,   80,   42,   42,   30,   30,    0,    0,   43,    0,    0,   30,   30,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,   91,   92,    0,   61,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   59,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   59,   59,   59,   59,   59,   59,   59,   59,   59,   59,   59,   59,};short yycheck[] = {                                      10,    0,   34,   10,   34,   93,   34,   34,   40,  125,   40,   36,   40,   36,   46,   41,   46,   10,   46,   10,   60,  256,   47,   44,   34,   54,   36,   34,   44,   36,   40,   41,   34,   40,   41,   34,   46,   47,   40,   46,   47,   40,   60,   36,   46,   36,   62,   46,   41,  256,   41,  266,  267,  268,   47,  262,   47,   42,   43,   91,  262,   91,   94,   91,   94,   61,   94,   96,  259,  260,  261,  259,  260,  261,  265,   48,  256,  265,   63,   52,  256,   91,  262,   42,   91,  125,  262,   61,  123,   91,   93,  123,   91,   61,  262,   94,  262,  262,  124,  124,   62,  124,   94,   10,  125,  259,  260,  261,  258,  262,   45,  265,  257,  125,  124,   93,   10,  124,   10,  259,  260,  261,   30,   23,  123,  265,   45,   58,   68,   63,   -1,  124,   -1,  124,   -1,   -1,   -1,   -1,  123,   93,   -1,   -1,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,  257,  256,  257,  256,  257,  257,  263,  264,  263,  264,  263,  264,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,   -1,   -1,  257,   -1,   -1,  263,  257,  257,  263,  256,  257,   -1,   -1,  263,   -1,   -1,  263,  264,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,   -1,  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,  257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,};#define YYFINAL 1#ifndef YYDEBUG#define YYDEBUG 0#endif#define YYMAXTOKEN 280#if YYDEBUGchar *yyname[] = {"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,"CHAR","NUMBER","SECTEND","SCDECL","XSCDECL","NAME","PREVCCL","EOF_OP","OPTION_OP","OPT_OUTFILE","OPT_PREFIX","OPT_YYCLASS","CCE_ALNUM","CCE_ALPHA","CCE_BLANK","CCE_CNTRL","CCE_DIGIT","CCE_GRAPH","CCE_LOWER","CCE_PRINT","CCE_PUNCT","CCE_SPACE","CCE_UPPER","CCE_XDIGIT",};char *yyrule[] = {"$accept : goal","goal : initlex sect1 sect1end sect2 initforrule","initlex :","sect1 : sect1 startconddecl namelist1","sect1 : sect1 options","sect1 :","sect1 : error","sect1end : SECTEND","startconddecl : SCDECL","startconddecl : XSCDECL","namelist1 : namelist1 NAME","namelist1 : NAME","namelist1 : error","options : OPTION_OP optionlist","optionlist : optionlist option","optionlist :","option : OPT_OUTFILE '=' NAME","option : OPT_PREFIX '=' NAME","option : OPT_YYCLASS '=' NAME","sect2 : sect2 scon initforrule flexrule '\\n'","sect2 : sect2 scon '{' sect2 '}'","sect2 :","initforrule :","flexrule : '^' rule","flexrule : rule","flexrule : EOF_OP","flexrule : error","scon_stk_ptr :","scon : '<' scon_stk_ptr namelist2 '>'","scon : '<' '*' '>'","scon :","namelist2 : namelist2 ',' sconname","namelist2 : sconname","namelist2 : error","sconname : NAME","rule : re2 re","rule : re2 re '$'","rule : re '$'","rule : re","re : re '|' series","re : series","re2 : re '/'","series : series singleton","series : singleton","singleton : singleton '*'","singleton : singleton '+'","singleton : singleton '?'","singleton : singleton '{' NUMBER ',' NUMBER '}'","singleton : singleton '{' NUMBER ',' '}'","singleton : singleton '{' NUMBER '}'","singleton : '.'","singleton : fullccl","singleton : PREVCCL","singleton : '\"' string '\"'","singleton : '(' re ')'","singleton : CHAR","fullccl : '[' ccl ']'","fullccl : '[' '^' ccl ']'","ccl : ccl CHAR '-' CHAR","ccl : ccl CHAR","ccl : ccl ccl_expr","ccl :","ccl_expr : CCE_ALNUM","ccl_expr : CCE_ALPHA","ccl_expr : CCE_BLANK","ccl_expr : CCE_CNTRL","ccl_expr : CCE_DIGIT","ccl_expr : CCE_GRAPH","ccl_expr : CCE_LOWER","ccl_expr : CCE_PRINT","ccl_expr : CCE_PUNCT","ccl_expr : CCE_SPACE","ccl_expr : CCE_UPPER","ccl_expr : CCE_XDIGIT","string : string CHAR","string :",};#endif#ifndef YYSTYPEtypedef int YYSTYPE;#endif#ifdef YYSTACKSIZE#undef YYMAXDEPTH#define YYMAXDEPTH YYSTACKSIZE#else#ifdef YYMAXDEPTH#define YYSTACKSIZE YYMAXDEPTH#else#define YYSTACKSIZE 500#define YYMAXDEPTH 500#endif#endifint yydebug;int yynerrs;int yyerrflag;int yychar;short *yyssp;YYSTYPE *yyvsp;YYSTYPE yyval;YYSTYPE yylval;short yyss[YYSTACKSIZE];YYSTYPE yyvs[YYSTACKSIZE];#define yystacksize YYSTACKSIZE#line 776 "./parse.y"/* build_eof_action - build the "<<EOF>>" action for the active start *                    conditions */void build_eof_action()	{	register int i;	char action_text[MAXLINE];	for ( i = 1; i <= scon_stk_ptr; ++i )		{		if ( sceof[scon_stk[i]] )			format_pinpoint_message(				"multiple <<EOF>> rules for start condition %s",				scname[scon_stk[i]] );		else			{			sceof[scon_stk[i]] = true;			sprintf( action_text, "case YY_STATE_EOF(%s):\n",				scname[scon_stk[i]] );			add_action( action_text );			}		}	line_directive_out( (FILE *) 0, 1 );	/* This isn't a normal rule after all - don't count it as	 * such, so we don't have any holes in the rule numbering	 * (which make generating "rule can never match" warnings	 * more difficult.	 */	--num_rules;	++num_eof_rules;	}/* format_synerr - write out formatted syntax error */void format_synerr( msg, arg )char msg[], arg[];	{	char errmsg[MAXLINE];	(void) sprintf( errmsg, msg, arg );	synerr( errmsg );	}/* synerr - report a syntax error */void synerr( str )char str[];	{	syntaxerror = true;	pinpoint_message( str );	}/* format_warn - write out formatted warning */void format_warn( msg, arg )char msg[], arg[];	{	char warn_msg[MAXLINE];	(void) sprintf( warn_msg, msg, arg );	warn( warn_msg );	}/* warn - report a warning, unless -w was given */void warn( str )char str[];	{	line_warning( str, linenum );	}/* format_pinpoint_message - write out a message formatted with one string, *			     pinpointing its location */

⌨️ 快捷键说明

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