Annotation of 43BSDReno/pgrm/yacc/skeleton.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1989 The Regents of the University of California.
        !             3:  * All rights reserved.
        !             4:  *
        !             5:  * This code is derived from software contributed to Berkeley by
        !             6:  * Robert Paul Corbett.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms are permitted provided
        !             9:  * that: (1) source distributions retain this entire copyright notice and
        !            10:  * comment, and (2) distributions including binaries display the following
        !            11:  * acknowledgement:  ``This product includes software developed by the
        !            12:  * University of California, Berkeley and its contributors'' in the
        !            13:  * documentation or other materials provided with the distribution and in
        !            14:  * all advertising materials mentioning features or use of this software.
        !            15:  * Neither the name of the University nor the names of its contributors may
        !            16:  * be used to endorse or promote products derived from this software without
        !            17:  * specific prior written permission.
        !            18:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            19:  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            20:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            21:  */
        !            22: 
        !            23: #ifndef lint
        !            24: static char sccsid[] = "@(#)skeleton.c 5.5 (Berkeley) 6/1/90";
        !            25: #endif /* not lint */
        !            26: 
        !            27: #include "defs.h"
        !            28: 
        !            29: /*  The three line banner used here should be replaced with a one line */
        !            30: /*  #ident directive if the target C compiler supports #ident          */
        !            31: /*  directives.                                                                */
        !            32: /*                                                                     */
        !            33: /*  If the skeleton is changed, the banner should be changed so that   */
        !            34: /*  the altered version can easily be distinguished from the original. */
        !            35: 
        !            36: char *banner[] =
        !            37: {
        !            38:     "#ifndef lint",
        !            39:     "char yysccsid[] = \"@(#)yaccpar   1.4 (Berkeley) 02/25/90\";",
        !            40:     "#endif",
        !            41:     0
        !            42: };
        !            43: 
        !            44: 
        !            45: char *header[] =
        !            46: {
        !            47:     "#define yyclearin (yychar=(-1))",
        !            48:     "#define yyerrok (yyerrflag=0)",
        !            49:     "#ifndef YYSTACKSIZE",
        !            50:     "#ifdef YYMAXDEPTH",
        !            51:     "#define YYSTACKSIZE YYMAXDEPTH",
        !            52:     "#else",
        !            53:     "#define YYSTACKSIZE 300",
        !            54:     "#endif",
        !            55:     "#endif",
        !            56:     "int yydebug;",
        !            57:     "int yynerrs;",
        !            58:     "int yyerrflag;",
        !            59:     "int yychar;",
        !            60:     "short *yyssp;",
        !            61:     "YYSTYPE *yyvsp;",
        !            62:     "YYSTYPE yyval;",
        !            63:     "YYSTYPE yylval;",
        !            64:     "#define yystacksize YYSTACKSIZE",
        !            65:     "short yyss[YYSTACKSIZE];",
        !            66:     "YYSTYPE yyvs[YYSTACKSIZE];",
        !            67:     0
        !            68: };
        !            69: 
        !            70: 
        !            71: char *body[] =
        !            72: {
        !            73:     "#define YYABORT goto yyabort",
        !            74:     "#define YYACCEPT goto yyaccept",
        !            75:     "#define YYERROR goto yyerrlab",
        !            76:     "int",
        !            77:     "yyparse()",
        !            78:     "{",
        !            79:     "    register int yym, yyn, yystate;",
        !            80:     "#if YYDEBUG",
        !            81:     "    register char *yys;",
        !            82:     "    extern char *getenv();",
        !            83:     "",
        !            84:     "    if (yys = getenv(\"YYDEBUG\"))",
        !            85:     "    {",
        !            86:     "        yyn = *yys;",
        !            87:     "        if (yyn >= '0' && yyn <= '9')",
        !            88:     "            yydebug = yyn - '0';",
        !            89:     "    }",
        !            90:     "#endif",
        !            91:     "",
        !            92:     "    yynerrs = 0;",
        !            93:     "    yyerrflag = 0;",
        !            94:     "    yychar = (-1);",
        !            95:     "",
        !            96:     "    yyssp = yyss;",
        !            97:     "    yyvsp = yyvs;",
        !            98:     "    *yyssp = yystate = 0;",
        !            99:     "",
        !           100:     "yyloop:",
        !           101:     "    if (yyn = yydefred[yystate]) goto yyreduce;",
        !           102:     "    if (yychar < 0)",
        !           103:     "    {",
        !           104:     "        if ((yychar = yylex()) < 0) yychar = 0;",
        !           105:     "#if YYDEBUG",
        !           106:     "        if (yydebug)",
        !           107:     "        {",
        !           108:     "            yys = 0;",
        !           109:     "            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
        !           110:     "            if (!yys) yys = \"illegal-symbol\";",
        !           111:     "            printf(\"yydebug: state %d, reading %d (%s)\\n\", yystate,",
        !           112:     "                    yychar, yys);",
        !           113:     "        }",
        !           114:     "#endif",
        !           115:     "    }",
        !           116:     "    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&",
        !           117:     "            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)",
        !           118:     "    {",
        !           119:     "#if YYDEBUG",
        !           120:     "        if (yydebug)",
        !           121:     "            printf(\"yydebug: state %d, shifting to state %d\\n\",",
        !           122:     "                    yystate, yytable[yyn]);",
        !           123:     "#endif",
        !           124:     "        if (yyssp >= yyss + yystacksize - 1)",
        !           125:     "        {",
        !           126:     "            goto yyoverflow;",
        !           127:     "        }",
        !           128:     "        *++yyssp = yystate = yytable[yyn];",
        !           129:     "        *++yyvsp = yylval;",
        !           130:     "        yychar = (-1);",
        !           131:     "        if (yyerrflag > 0)  --yyerrflag;",
        !           132:     "        goto yyloop;",
        !           133:     "    }",
        !           134:     "    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&",
        !           135:     "            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)",
        !           136:     "    {",
        !           137:     "        yyn = yytable[yyn];",
        !           138:     "        goto yyreduce;",
        !           139:     "    }",
        !           140:     "    if (yyerrflag) goto yyinrecovery;",
        !           141:     "#ifdef lint",
        !           142:     "    goto yynewerror;",
        !           143:     "#endif",
        !           144:     "yynewerror:",
        !           145:     "    yyerror(\"syntax error\");",
        !           146:     "#ifdef lint",
        !           147:     "    goto yyerrlab;",
        !           148:     "#endif",
        !           149:     "yyerrlab:",
        !           150:     "    ++yynerrs;",
        !           151:     "yyinrecovery:",
        !           152:     "    if (yyerrflag < 3)",
        !           153:     "    {",
        !           154:     "        yyerrflag = 3;",
        !           155:     "        for (;;)",
        !           156:     "        {",
        !           157:     "            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&",
        !           158:     "                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)",
        !           159:     "            {",
        !           160:     "#if YYDEBUG",
        !           161:     "                if (yydebug)",
        !           162:     "                    printf(\"yydebug: state %d, error recovery shifting\\",
        !           163:     " to state %d\\n\", *yyssp, yytable[yyn]);",
        !           164:     "#endif",
        !           165:     "                if (yyssp >= yyss + yystacksize - 1)",
        !           166:     "                {",
        !           167:     "                    goto yyoverflow;",
        !           168:     "                }",
        !           169:     "                *++yyssp = yystate = yytable[yyn];",
        !           170:     "                *++yyvsp = yylval;",
        !           171:     "                goto yyloop;",
        !           172:     "            }",
        !           173:     "            else",
        !           174:     "            {",
        !           175:     "#if YYDEBUG",
        !           176:     "                if (yydebug)",
        !           177:     "                    printf(\"yydebug: error recovery discarding state %d\
        !           178: \\n\",",
        !           179:     "                            *yyssp);",
        !           180:     "#endif",
        !           181:     "                if (yyssp <= yyss) goto yyabort;",
        !           182:     "                --yyssp;",
        !           183:     "                --yyvsp;",
        !           184:     "            }",
        !           185:     "        }",
        !           186:     "    }",
        !           187:     "    else",
        !           188:     "    {",
        !           189:     "        if (yychar == 0) goto yyabort;",
        !           190:     "#if YYDEBUG",
        !           191:     "        if (yydebug)",
        !           192:     "        {",
        !           193:     "            yys = 0;",
        !           194:     "            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
        !           195:     "            if (!yys) yys = \"illegal-symbol\";",
        !           196:     "            printf(\"yydebug: state %d, error recovery discards token %d\
        !           197:  (%s)\\n\",",
        !           198:     "                    yystate, yychar, yys);",
        !           199:     "        }",
        !           200:     "#endif",
        !           201:     "        yychar = (-1);",
        !           202:     "        goto yyloop;",
        !           203:     "    }",
        !           204:     "yyreduce:",
        !           205:     "#if YYDEBUG",
        !           206:     "    if (yydebug)",
        !           207:     "        printf(\"yydebug: state %d, reducing by rule %d (%s)\\n\",",
        !           208:     "                yystate, yyn, yyrule[yyn]);",
        !           209:     "#endif",
        !           210:     "    yym = yylen[yyn];",
        !           211:     "    yyval = yyvsp[1-yym];",
        !           212:     "    switch (yyn)",
        !           213:     "    {",
        !           214:     0
        !           215: };
        !           216: 
        !           217: 
        !           218: char *trailer[] =
        !           219: {
        !           220:     "    }",
        !           221:     "    yyssp -= yym;",
        !           222:     "    yystate = *yyssp;",
        !           223:     "    yyvsp -= yym;",
        !           224:     "    yym = yylhs[yyn];",
        !           225:     "    if (yystate == 0 && yym == 0)",
        !           226:     "    {",
        !           227:     "#ifdef YYDEBUG",
        !           228:     "        if (yydebug)",
        !           229:     "            printf(\"yydebug: after reduction, shifting from state 0 to\\",
        !           230:     " state %d\\n\", YYFINAL);",
        !           231:     "#endif",
        !           232:     "        yystate = YYFINAL;",
        !           233:     "        *++yyssp = YYFINAL;",
        !           234:     "        *++yyvsp = yyval;",
        !           235:     "        if (yychar < 0)",
        !           236:     "        {",
        !           237:     "            if ((yychar = yylex()) < 0) yychar = 0;",
        !           238:     "#if YYDEBUG",
        !           239:     "            if (yydebug)",
        !           240:     "            {",
        !           241:     "                yys = 0;",
        !           242:     "                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];",
        !           243:     "                if (!yys) yys = \"illegal-symbol\";",
        !           244:     "                printf(\"yydebug: state %d, reading %d (%s)\\n\",",
        !           245:     "                        YYFINAL, yychar, yys);",
        !           246:     "            }",
        !           247:     "#endif",
        !           248:     "        }",
        !           249:     "        if (yychar == 0) goto yyaccept;",
        !           250:     "        goto yyloop;",
        !           251:     "    }",
        !           252:     "    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&",
        !           253:     "            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)",
        !           254:     "        yystate = yytable[yyn];",
        !           255:     "    else",
        !           256:     "        yystate = yydgoto[yym];",
        !           257:     "#ifdef YYDEBUG",
        !           258:     "    if (yydebug)",
        !           259:     "        printf(\"yydebug: after reduction, shifting from state %d \\",
        !           260:     "to state %d\\n\", *yyssp, yystate);",
        !           261:     "#endif",
        !           262:     "    if (yyssp >= yyss + yystacksize - 1)",
        !           263:     "    {",
        !           264:     "        goto yyoverflow;",
        !           265:     "    }",
        !           266:     "    *++yyssp = yystate;",
        !           267:     "    *++yyvsp = yyval;",
        !           268:     "    goto yyloop;",
        !           269:     "yyoverflow:",
        !           270:     "    yyerror(\"yacc stack overflow\");",
        !           271:     "yyabort:",
        !           272:     "    return (1);",
        !           273:     "yyaccept:",
        !           274:     "    return (0);",
        !           275:     "}",
        !           276:     0
        !           277: };
        !           278: 
        !           279: 
        !           280: write_section(section)
        !           281: char *section[];
        !           282: {
        !           283:     register int i;
        !           284: 
        !           285:     for (i = 0; section[i]; ++i)
        !           286:     {
        !           287:        ++outline;
        !           288:        fprintf(output_file, "%s\n", section[i]);
        !           289:     }
        !           290: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.