📄 parse.c
字号:
#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 + -