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