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

📄 skeleton.c

📁 操作系统源代码
💻 C
字号:
#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 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)",    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[] ={    "#ifdef YYSTACKSIZE",    "#undef YYMAXDEPTH",    "#define YYMAXDEPTH YYSTACKSIZE",    "#else",    "#ifdef YYMAXDEPTH",    "#define YYSTACKSIZE YYMAXDEPTH",    "#else",    "#define YYSTACKSIZE 500",    "#define YYMAXDEPTH 500",    "#endif",    "#endif",    "int yydebug;",    "int yynerrs;",    "int yyerrflag;",    "int yychar;",    "short *yyssp;",    "YYSTYPE *yyvsp;",    "YYSTYPE yyval;",    "YYSTYPE yylval;",    "short yyss[YYSTACKSIZE];",    "YYSTYPE yyvs[YYSTACKSIZE];",    "#define yystacksize YYSTACKSIZE",    0};char *body[] ={    "#define YYABORT goto yyabort",    "#define YYREJECT goto yyabort",    "#define YYACCEPT goto yyaccept",    "#define YYERROR goto yyerrlab",    "int",    "yyparse()",    "{",    "    register int yym, yyn, yystate;",    "#if YYDEBUG",    "    register char *yys;",    "    extern char *getenv();",    "",    "    if (yys = getenv(\"YYDEBUG\"))",    "    {",    "        yyn = *yys;",    "        if (yyn >= '0' && yyn <= '9')",    "            yydebug = yyn - '0';",    "    }",    "#endif",    "",    "    yynerrs = 0;",    "    yyerrflag = 0;",    "    yychar = (-1);",    "",    "    yyssp = yyss;",    "    yyvsp = yyvs;",    "    *yyssp = yystate = 0;",    "",    "yyloop:",    "    if (yyn = yydefred[yystate]) 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 >= yyss + yystacksize - 1)",    "        {",    "            goto yyoverflow;",    "        }",    "        *++yyssp = yystate = yytable[yyn];",    "        *++yyvsp = yylval;",    "        yychar = (-1);",    "        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;",    "#ifdef lint",    "    goto yynewerror;",    "#endif",    "yynewerror:",    "    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 >= yyss + yystacksize - 1)",    "                {",    "                    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 = (-1);",    "        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 >= yyss + yystacksize - 1)",    "    {",    "        goto yyoverflow;",    "    }",    "    *++yyssp = yystate;",    "    *++yyvsp = yyval;",    "    goto yyloop;",    "yyoverflow:",    "    yyerror(\"yacc stack overflow\");",    "yyabort:",    "    return (1);",    "yyaccept:",    "    return (0);",    "}",    0};write_section(section)char *section[];{    register int c;    register int i;    register char *s;    register FILE *f;    f = code_file;    for (i = 0; s = section[i]; ++i)    {	++outline;	while (c = *s)	{	    putc(c, f);	    ++s;	}	putc('\n', f);    }}

⌨️ 快捷键说明

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