📄 skeleton.c
字号:
/* $Id: skeleton.c,v 1.9 2005/05/04 23:39:36 tom Exp $ */#include "defs.h"/* The definition of yysccsid in the banner should be replaced with *//* a #pragma ident directive if the target C compiler supports *//* #pragma ident directives. *//* *//* If the skeleton is changed, the banner should be changed so that *//* the altered version can be easily distinguished from the original. *//* *//* The #defines included with the banner are there because they are *//* useful in subsequent code. The macros #defined in the header or *//* the body either are not useful outside of semantic actions or *//* are conditional. */char *banner[] ={ "#ifndef lint", "static const char yysccsid[] = \"@(#)yaccpar 1.9 (Berkeley) 02/21/93\";", "#endif", "", "#include <stdlib.h>", "", "#define YYBYACC 1", CONCAT1("#define YYMAJOR ", YYMAJOR), CONCAT1("#define YYMINOR ", YYMINOR),#ifdef YYPATCH CONCAT1("#define YYPATCH ", YYPATCH),#endif "", "#define YYEMPTY (-1)", "#define yyclearin (yychar = YYEMPTY)", "#define yyerrok (yyerrflag = 0)", "#define YYRECOVERING (yyerrflag != 0)", "", "extern int yyparse(void);", "", "static int yygrowstack(void);", 0};char *tables[] ={ "extern short yylhs[];", "extern short yylen[];", "extern short yydefred[];", "extern short yydgoto[];", "extern short yysindex[];", "extern short yyrindex[];", "extern short yygindex[];", "extern short yytable[];", "extern short yycheck[];", "", "#if YYDEBUG", "extern char *yyname[];", "extern char *yyrule[];", "#endif", 0};char *header[] ={ "#if YYDEBUG", "#include <stdio.h>", "#endif", "", "/* define the initial stack-sizes */", "#ifdef YYSTACKSIZE", "#undef YYMAXDEPTH", "#define YYMAXDEPTH YYSTACKSIZE", "#else", "#ifdef YYMAXDEPTH", "#define YYSTACKSIZE YYMAXDEPTH", "#else", "#define YYSTACKSIZE 500", "#define YYMAXDEPTH 500", "#endif", "#endif", "", "#define YYINITSTACKSIZE 500", "", "int yydebug;", "int yynerrs;", "int yyerrflag;", "int yychar;", "short *yyssp;", "YYSTYPE *yyvsp;", "YYSTYPE yyval;", "YYSTYPE yylval;", "", "/* variables for the parser stack */", "static short *yyss;", "static short *yysslim;", "static YYSTYPE *yyvs;", "static int yystacksize;", 0};char *body[] ={ "/* allocate initial stack or double stack size, up to YYMAXDEPTH */", "static int yygrowstack(void)", "{", " int newsize, i;", " short *newss;", " YYSTYPE *newvs;", "", " if ((newsize = yystacksize) == 0)", " newsize = YYINITSTACKSIZE;", " else if (newsize >= YYMAXDEPTH)", " return -1;", " else if ((newsize *= 2) > YYMAXDEPTH)", " newsize = YYMAXDEPTH;", "", " i = yyssp - yyss;", " newss = (yyss != 0)", " ? (short *)realloc(yyss, newsize * sizeof(*newss))", " : (short *)malloc(newsize * sizeof(*newss));", " if (newss == 0)", " return -1;", "", " yyss = newss;", " yyssp = newss + i;", " newvs = (yyvs != 0)", " ? (YYSTYPE *)realloc(yyvs, newsize * sizeof(*newvs))", " : (YYSTYPE *)malloc(newsize * sizeof(*newvs));", " if (newvs == 0)", " return -1;", "", " yyvs = newvs;", " yyvsp = newvs + i;", " yystacksize = newsize;", " yysslim = yyss + newsize - 1;", " return 0;", "}", "", "#define YYABORT goto yyabort", "#define YYREJECT goto yyabort", "#define YYACCEPT goto yyaccept", "#define YYERROR goto yyerrlab", "int", "yyparse(void)", "{", " register int yym, yyn, yystate;", "#if YYDEBUG", " register const char *yys;", "", " if ((yys = getenv(\"YYDEBUG\")) != 0)", " {", " yyn = *yys;", " if (yyn >= '0' && yyn <= '9')", " yydebug = yyn - '0';", " }", "#endif", "", " yynerrs = 0;", " yyerrflag = 0;", " yychar = YYEMPTY;", "", " if (yyss == NULL && yygrowstack()) goto yyoverflow;", " yyssp = yyss;", " yyvsp = yyvs;", " *yyssp = yystate = 0;", "", "yyloop:", " if ((yyn = yydefred[yystate]) != 0) goto yyreduce;", " if (yychar < 0)", " {", " if ((yychar = yylex()) < 0) yychar = 0;", "#if YYDEBUG", " if (yydebug)", " {", " yys = 0;", " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", " if (!yys) yys = \"illegal-symbol\";", " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", " YYPREFIX, yystate, yychar, yys);", " }", "#endif", " }", " if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&", " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: state %d, shifting to state %d\\n\",", " YYPREFIX, yystate, yytable[yyn]);", "#endif", " if (yyssp >= yysslim && yygrowstack())", " {", " goto yyoverflow;", " }", " *++yyssp = yystate = yytable[yyn];", " *++yyvsp = yylval;", " yychar = YYEMPTY;", " if (yyerrflag > 0) --yyerrflag;", " goto yyloop;", " }", " if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&", " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", " {", " yyn = yytable[yyn];", " goto yyreduce;", " }", " if (yyerrflag) goto yyinrecovery;", "", " yyerror(\"syntax error\");", "", "#ifdef lint", " goto yyerrlab;", "#endif", "", "yyerrlab:", " ++yynerrs;", "", "yyinrecovery:", " if (yyerrflag < 3)", " {", " yyerrflag = 3;", " for (;;)", " {", " if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&", " yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: state %d, error recovery shifting\\", " to state %d\\n\", YYPREFIX, *yyssp, yytable[yyn]);", "#endif", " if (yyssp >= yysslim && yygrowstack())", " {", " goto yyoverflow;", " }", " *++yyssp = yystate = yytable[yyn];", " *++yyvsp = yylval;", " goto yyloop;", " }", " else", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: error recovery discarding state %d\\\n\",", " YYPREFIX, *yyssp);", "#endif", " if (yyssp <= yyss) goto yyabort;", " --yyssp;", " --yyvsp;", " }", " }", " }", " else", " {", " if (yychar == 0) goto yyabort;", "#if YYDEBUG", " if (yydebug)", " {", " yys = 0;", " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", " if (!yys) yys = \"illegal-symbol\";", " printf(\"%sdebug: state %d, error recovery discards token %d\ (%s)\\n\",", " YYPREFIX, yystate, yychar, yys);", " }", "#endif", " yychar = YYEMPTY;", " goto yyloop;", " }", "", "yyreduce:", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: state %d, reducing by rule %d (%s)\\n\",", " YYPREFIX, yystate, yyn, yyrule[yyn]);", "#endif", " yym = yylen[yyn];", " yyval = yyvsp[1-yym];", " switch (yyn)", " {", 0};char *trailer[] ={ " }", " yyssp -= yym;", " yystate = *yyssp;", " yyvsp -= yym;", " yym = yylhs[yyn];", " if (yystate == 0 && yym == 0)", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: after reduction, shifting from state 0 to\\", " state %d\\n\", YYPREFIX, YYFINAL);", "#endif", " yystate = YYFINAL;", " *++yyssp = YYFINAL;", " *++yyvsp = yyval;", " if (yychar < 0)", " {", " if ((yychar = yylex()) < 0) yychar = 0;", "#if YYDEBUG", " if (yydebug)", " {", " yys = 0;", " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", " if (!yys) yys = \"illegal-symbol\";", " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", " YYPREFIX, YYFINAL, yychar, yys);", " }", "#endif", " }", " if (yychar == 0) goto yyaccept;", " goto yyloop;", " }", " if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&", " yyn <= YYTABLESIZE && yycheck[yyn] == yystate)", " yystate = yytable[yyn];", " else", " yystate = yydgoto[yym];", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: after reduction, shifting from state %d \\", "to state %d\\n\", YYPREFIX, *yyssp, yystate);", "#endif", " if (yyssp >= yysslim && yygrowstack())", " {", " goto yyoverflow;", " }", " *++yyssp = yystate;", " *++yyvsp = yyval;", " goto yyloop;", "", "yyoverflow:", " yyerror(\"yacc stack overflow\");", "", "yyabort:", " return (1);", "", "yyaccept:", " return (0);", "}", 0};void write_section(char *section[]){ register int c; register int i; register char *s; register FILE *f; f = code_file; for (i = 0; (s = section[i]) != 0; ++i) { ++outline; while ((c = *s) != 0) { putc(c, f); ++s; } putc('\n', f); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -