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 * %sccs.include.redist.c% 9 */ 10 11 #ifndef lint 12 static char sccsid[] = "@(#)skeleton.c 5.5 (Berkeley) 06/01/90"; 13 #endif /* not lint */ 14 15 #include "defs.h" 16 17 /* The three line banner used here should be replaced with a one line */ 18 /* #ident directive if the target C compiler supports #ident */ 19 /* directives. */ 20 /* */ 21 /* If the skeleton is changed, the banner should be changed so that */ 22 /* the altered version can easily be distinguished from the original. */ 23 24 char *banner[] = 25 { 26 "#ifndef lint", 27 "char yysccsid[] = \"@(#)yaccpar 1.4 (Berkeley) 02/25/90\";", 28 "#endif", 29 0 30 }; 31 32 33 char *header[] = 34 { 35 "#define yyclearin (yychar=(-1))", 36 "#define yyerrok (yyerrflag=0)", 37 "#ifndef YYSTACKSIZE", 38 "#ifdef YYMAXDEPTH", 39 "#define YYSTACKSIZE YYMAXDEPTH", 40 "#else", 41 "#define YYSTACKSIZE 300", 42 "#endif", 43 "#endif", 44 "int yydebug;", 45 "int yynerrs;", 46 "int yyerrflag;", 47 "int yychar;", 48 "short *yyssp;", 49 "YYSTYPE *yyvsp;", 50 "YYSTYPE yyval;", 51 "YYSTYPE yylval;", 52 "#define yystacksize YYSTACKSIZE", 53 "short yyss[YYSTACKSIZE];", 54 "YYSTYPE yyvs[YYSTACKSIZE];", 55 0 56 }; 57 58 59 char *body[] = 60 { 61 "#define YYABORT goto yyabort", 62 "#define YYACCEPT goto yyaccept", 63 "#define YYERROR goto yyerrlab", 64 "int", 65 "yyparse()", 66 "{", 67 " register int yym, yyn, yystate;", 68 "#if YYDEBUG", 69 " register char *yys;", 70 " extern char *getenv();", 71 "", 72 " if (yys = getenv(\"YYDEBUG\"))", 73 " {", 74 " yyn = *yys;", 75 " if (yyn >= '0' && yyn <= '9')", 76 " yydebug = yyn - '0';", 77 " }", 78 "#endif", 79 "", 80 " yynerrs = 0;", 81 " yyerrflag = 0;", 82 " yychar = (-1);", 83 "", 84 " yyssp = yyss;", 85 " yyvsp = yyvs;", 86 " *yyssp = yystate = 0;", 87 "", 88 "yyloop:", 89 " if (yyn = yydefred[yystate]) goto yyreduce;", 90 " if (yychar < 0)", 91 " {", 92 " if ((yychar = yylex()) < 0) yychar = 0;", 93 "#if YYDEBUG", 94 " if (yydebug)", 95 " {", 96 " yys = 0;", 97 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", 98 " if (!yys) yys = \"illegal-symbol\";", 99 " printf(\"yydebug: state %d, reading %d (%s)\\n\", yystate,", 100 " yychar, yys);", 101 " }", 102 "#endif", 103 " }", 104 " if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&", 105 " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", 106 " {", 107 "#if YYDEBUG", 108 " if (yydebug)", 109 " printf(\"yydebug: state %d, shifting to state %d\\n\",", 110 " yystate, yytable[yyn]);", 111 "#endif", 112 " if (yyssp >= yyss + yystacksize - 1)", 113 " {", 114 " goto yyoverflow;", 115 " }", 116 " *++yyssp = yystate = yytable[yyn];", 117 " *++yyvsp = yylval;", 118 " yychar = (-1);", 119 " if (yyerrflag > 0) --yyerrflag;", 120 " goto yyloop;", 121 " }", 122 " if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&", 123 " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", 124 " {", 125 " yyn = yytable[yyn];", 126 " goto yyreduce;", 127 " }", 128 " if (yyerrflag) goto yyinrecovery;", 129 "#ifdef lint", 130 " goto yynewerror;", 131 "#endif", 132 "yynewerror:", 133 " yyerror(\"syntax error\");", 134 "#ifdef lint", 135 " goto yyerrlab;", 136 "#endif", 137 "yyerrlab:", 138 " ++yynerrs;", 139 "yyinrecovery:", 140 " if (yyerrflag < 3)", 141 " {", 142 " yyerrflag = 3;", 143 " for (;;)", 144 " {", 145 " if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&", 146 " yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)", 147 " {", 148 "#if YYDEBUG", 149 " if (yydebug)", 150 " printf(\"yydebug: state %d, error recovery shifting\\", 151 " to state %d\\n\", *yyssp, yytable[yyn]);", 152 "#endif", 153 " if (yyssp >= yyss + yystacksize - 1)", 154 " {", 155 " goto yyoverflow;", 156 " }", 157 " *++yyssp = yystate = yytable[yyn];", 158 " *++yyvsp = yylval;", 159 " goto yyloop;", 160 " }", 161 " else", 162 " {", 163 "#if YYDEBUG", 164 " if (yydebug)", 165 " printf(\"yydebug: error recovery discarding state %d\ 166 \\n\",", 167 " *yyssp);", 168 "#endif", 169 " if (yyssp <= yyss) goto yyabort;", 170 " --yyssp;", 171 " --yyvsp;", 172 " }", 173 " }", 174 " }", 175 " else", 176 " {", 177 " if (yychar == 0) goto yyabort;", 178 "#if YYDEBUG", 179 " if (yydebug)", 180 " {", 181 " yys = 0;", 182 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", 183 " if (!yys) yys = \"illegal-symbol\";", 184 " printf(\"yydebug: state %d, error recovery discards token %d\ 185 (%s)\\n\",", 186 " yystate, yychar, yys);", 187 " }", 188 "#endif", 189 " yychar = (-1);", 190 " goto yyloop;", 191 " }", 192 "yyreduce:", 193 "#if YYDEBUG", 194 " if (yydebug)", 195 " printf(\"yydebug: state %d, reducing by rule %d (%s)\\n\",", 196 " yystate, yyn, yyrule[yyn]);", 197 "#endif", 198 " yym = yylen[yyn];", 199 " yyval = yyvsp[1-yym];", 200 " switch (yyn)", 201 " {", 202 0 203 }; 204 205 206 char *trailer[] = 207 { 208 " }", 209 " yyssp -= yym;", 210 " yystate = *yyssp;", 211 " yyvsp -= yym;", 212 " yym = yylhs[yyn];", 213 " if (yystate == 0 && yym == 0)", 214 " {", 215 "#ifdef YYDEBUG", 216 " if (yydebug)", 217 " printf(\"yydebug: after reduction, shifting from state 0 to\\", 218 " state %d\\n\", YYFINAL);", 219 "#endif", 220 " yystate = YYFINAL;", 221 " *++yyssp = YYFINAL;", 222 " *++yyvsp = yyval;", 223 " if (yychar < 0)", 224 " {", 225 " if ((yychar = yylex()) < 0) yychar = 0;", 226 "#if YYDEBUG", 227 " if (yydebug)", 228 " {", 229 " yys = 0;", 230 " if (yychar <= YYMAXTOKEN) yys = yyname[yychar];", 231 " if (!yys) yys = \"illegal-symbol\";", 232 " printf(\"yydebug: state %d, reading %d (%s)\\n\",", 233 " YYFINAL, yychar, yys);", 234 " }", 235 "#endif", 236 " }", 237 " if (yychar == 0) goto yyaccept;", 238 " goto yyloop;", 239 " }", 240 " if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&", 241 " yyn <= YYTABLESIZE && yycheck[yyn] == yystate)", 242 " yystate = yytable[yyn];", 243 " else", 244 " yystate = yydgoto[yym];", 245 "#ifdef YYDEBUG", 246 " if (yydebug)", 247 " printf(\"yydebug: after reduction, shifting from state %d \\", 248 "to state %d\\n\", *yyssp, yystate);", 249 "#endif", 250 " if (yyssp >= yyss + yystacksize - 1)", 251 " {", 252 " goto yyoverflow;", 253 " }", 254 " *++yyssp = yystate;", 255 " *++yyvsp = yyval;", 256 " goto yyloop;", 257 "yyoverflow:", 258 " yyerror(\"yacc stack overflow\");", 259 "yyabort:", 260 " return (1);", 261 "yyaccept:", 262 " return (0);", 263 "}", 264 0 265 }; 266 267 268 write_section(section) 269 char *section[]; 270 { 271 register int i; 272 273 for (i = 0; section[i]; ++i) 274 { 275 ++outline; 276 fprintf(output_file, "%s\n", section[i]); 277 } 278 } 279