1 1.5 christos /* $NetBSD: calc2.tab.c,v 1.7 2026/01/18 16:41:29 christos Exp $ */ 2 1.1 christos 3 1.1 christos /* original parser id follows */ 4 1.1 christos /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 5 1.2 christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 6 1.1 christos 7 1.1 christos #define YYBYACC 1 8 1.5 christos #define YYMAJOR 2 9 1.5 christos #define YYMINOR 0 10 1.1 christos #define YYCHECK "yyyymmdd" 11 1.1 christos 12 1.1 christos #define YYEMPTY (-1) 13 1.1 christos #define yyclearin (yychar = YYEMPTY) 14 1.1 christos #define yyerrok (yyerrflag = 0) 15 1.1 christos #define YYRECOVERING() (yyerrflag != 0) 16 1.1 christos #define YYENOMEM (-2) 17 1.1 christos #define YYEOF 0 18 1.1 christos #undef YYBTYACC 19 1.1 christos #define YYBTYACC 0 20 1.1 christos #define YYDEBUGSTR YYPREFIX "debug" 21 1.1 christos 22 1.1 christos #ifndef yyparse 23 1.1 christos #define yyparse calc2_parse 24 1.1 christos #endif /* yyparse */ 25 1.1 christos 26 1.1 christos #ifndef yylex 27 1.1 christos #define yylex calc2_lex 28 1.1 christos #endif /* yylex */ 29 1.1 christos 30 1.1 christos #ifndef yyerror 31 1.1 christos #define yyerror calc2_error 32 1.1 christos #endif /* yyerror */ 33 1.1 christos 34 1.1 christos #ifndef yychar 35 1.1 christos #define yychar calc2_char 36 1.1 christos #endif /* yychar */ 37 1.1 christos 38 1.1 christos #ifndef yyval 39 1.1 christos #define yyval calc2_val 40 1.1 christos #endif /* yyval */ 41 1.1 christos 42 1.1 christos #ifndef yylval 43 1.1 christos #define yylval calc2_lval 44 1.1 christos #endif /* yylval */ 45 1.1 christos 46 1.1 christos #ifndef yydebug 47 1.1 christos #define yydebug calc2_debug 48 1.1 christos #endif /* yydebug */ 49 1.1 christos 50 1.1 christos #ifndef yynerrs 51 1.1 christos #define yynerrs calc2_nerrs 52 1.1 christos #endif /* yynerrs */ 53 1.1 christos 54 1.1 christos #ifndef yyerrflag 55 1.1 christos #define yyerrflag calc2_errflag 56 1.1 christos #endif /* yyerrflag */ 57 1.1 christos 58 1.1 christos #ifndef yylhs 59 1.1 christos #define yylhs calc2_lhs 60 1.1 christos #endif /* yylhs */ 61 1.1 christos 62 1.1 christos #ifndef yylen 63 1.1 christos #define yylen calc2_len 64 1.1 christos #endif /* yylen */ 65 1.1 christos 66 1.1 christos #ifndef yydefred 67 1.1 christos #define yydefred calc2_defred 68 1.1 christos #endif /* yydefred */ 69 1.1 christos 70 1.1 christos #ifndef yystos 71 1.1 christos #define yystos calc2_stos 72 1.1 christos #endif /* yystos */ 73 1.1 christos 74 1.1 christos #ifndef yydgoto 75 1.1 christos #define yydgoto calc2_dgoto 76 1.1 christos #endif /* yydgoto */ 77 1.1 christos 78 1.1 christos #ifndef yysindex 79 1.1 christos #define yysindex calc2_sindex 80 1.1 christos #endif /* yysindex */ 81 1.1 christos 82 1.1 christos #ifndef yyrindex 83 1.1 christos #define yyrindex calc2_rindex 84 1.1 christos #endif /* yyrindex */ 85 1.1 christos 86 1.1 christos #ifndef yygindex 87 1.1 christos #define yygindex calc2_gindex 88 1.1 christos #endif /* yygindex */ 89 1.1 christos 90 1.1 christos #ifndef yytable 91 1.1 christos #define yytable calc2_table 92 1.1 christos #endif /* yytable */ 93 1.1 christos 94 1.1 christos #ifndef yycheck 95 1.1 christos #define yycheck calc2_check 96 1.1 christos #endif /* yycheck */ 97 1.1 christos 98 1.1 christos #ifndef yyname 99 1.1 christos #define yyname calc2_name 100 1.1 christos #endif /* yyname */ 101 1.1 christos 102 1.1 christos #ifndef yyrule 103 1.1 christos #define yyrule calc2_rule 104 1.1 christos #endif /* yyrule */ 105 1.1 christos 106 1.1 christos #if YYBTYACC 107 1.1 christos 108 1.1 christos #ifndef yycindex 109 1.1 christos #define yycindex calc2_cindex 110 1.1 christos #endif /* yycindex */ 111 1.1 christos 112 1.1 christos #ifndef yyctable 113 1.1 christos #define yyctable calc2_ctable 114 1.1 christos #endif /* yyctable */ 115 1.1 christos 116 1.1 christos #endif /* YYBTYACC */ 117 1.1 christos 118 1.1 christos #define YYPREFIX "calc2_" 119 1.1 christos 120 1.1 christos #define YYPURE 0 121 1.1 christos 122 1.1 christos #line 7 "calc2.y" 123 1.1 christos # include <stdio.h> 124 1.1 christos # include <ctype.h> 125 1.1 christos 126 1.1 christos #ifdef YYBISON 127 1.1 christos #define YYLEX_PARAM base 128 1.1 christos #define YYLEX_DECL() yylex(int *YYLEX_PARAM) 129 1.1 christos #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s) 130 1.1 christos int YYLEX_DECL(); 131 1.1 christos static void YYERROR_DECL(); 132 1.1 christos #endif 133 1.1 christos 134 1.1 christos #line 133 "calc2.tab.c" 135 1.1 christos 136 1.1 christos #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 137 1.1 christos /* Default: YYSTYPE is the semantic value type. */ 138 1.1 christos typedef int YYSTYPE; 139 1.1 christos # define YYSTYPE_IS_DECLARED 1 140 1.1 christos #endif 141 1.1 christos 142 1.1 christos /* compatibility with bison */ 143 1.1 christos #ifdef YYPARSE_PARAM 144 1.1 christos /* compatibility with FreeBSD */ 145 1.1 christos # ifdef YYPARSE_PARAM_TYPE 146 1.1 christos # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 147 1.1 christos # else 148 1.1 christos # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 149 1.1 christos # endif 150 1.1 christos #else 151 1.1 christos # define YYPARSE_DECL() yyparse(int regs[26], int *base) 152 1.1 christos #endif 153 1.1 christos 154 1.1 christos /* Parameters sent to lex. */ 155 1.1 christos #ifdef YYLEX_PARAM 156 1.1 christos # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 157 1.1 christos # define YYLEX yylex(YYLEX_PARAM) 158 1.1 christos #else 159 1.1 christos # define YYLEX_DECL() yylex(int *base) 160 1.1 christos # define YYLEX yylex(base) 161 1.1 christos #endif 162 1.1 christos 163 1.1 christos /* Parameters sent to yyerror. */ 164 1.1 christos #ifndef YYERROR_DECL 165 1.1 christos #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s) 166 1.1 christos #endif 167 1.1 christos #ifndef YYERROR_CALL 168 1.1 christos #define YYERROR_CALL(msg) yyerror(regs, base, msg) 169 1.1 christos #endif 170 1.1 christos 171 1.1 christos extern int YYPARSE_DECL(); 172 1.1 christos 173 1.1 christos #define DIGIT 257 174 1.1 christos #define LETTER 258 175 1.1 christos #define UMINUS 259 176 1.1 christos #define YYERRCODE 256 177 1.6 christos typedef int YYINT; 178 1.1 christos static const YYINT calc2_lhs[] = { -1, 179 1.1 christos 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 180 1.1 christos 2, 2, 2, 2, 2, 2, 3, 3, 181 1.1 christos }; 182 1.1 christos static const YYINT calc2_len[] = { 2, 183 1.1 christos 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 184 1.1 christos 3, 3, 3, 2, 1, 1, 1, 2, 185 1.1 christos }; 186 1.1 christos static const YYINT calc2_defred[] = { 1, 187 1.1 christos 0, 0, 17, 0, 0, 0, 0, 0, 0, 3, 188 1.1 christos 0, 15, 14, 0, 2, 0, 0, 0, 0, 0, 189 1.1 christos 0, 0, 18, 0, 6, 0, 0, 0, 0, 9, 190 1.1 christos 10, 11, 191 1.1 christos }; 192 1.2 christos #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 193 1.1 christos static const YYINT calc2_stos[] = { 0, 194 1.1 christos 261, 256, 257, 258, 45, 40, 262, 263, 264, 10, 195 1.1 christos 61, 258, 263, 263, 10, 124, 38, 43, 45, 42, 196 1.1 christos 47, 37, 257, 263, 41, 263, 263, 263, 263, 263, 197 1.1 christos 263, 263, 198 1.1 christos }; 199 1.2 christos #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 200 1.1 christos static const YYINT calc2_dgoto[] = { 1, 201 1.1 christos 7, 8, 9, 202 1.1 christos }; 203 1.1 christos static const YYINT calc2_sindex[] = { 0, 204 1.1 christos -40, -7, 0, -55, -38, -38, 1, -29, -247, 0, 205 1.1 christos -38, 0, 0, 22, 0, -38, -38, -38, -38, -38, 206 1.1 christos -38, -38, 0, -29, 0, 51, 60, -20, -20, 0, 207 1.1 christos 0, 0, 208 1.1 christos }; 209 1.1 christos static const YYINT calc2_rindex[] = { 0, 210 1.1 christos 0, 0, 0, 2, 0, 0, 0, 9, -9, 0, 211 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212 1.1 christos 0, 0, 0, 10, 0, -6, 14, 5, 13, 0, 213 1.1 christos 0, 0, 214 1.1 christos }; 215 1.1 christos #if YYBTYACC 216 1.1 christos static const YYINT calc2_cindex[] = { 0, 217 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220 1.1 christos 0, 0, 221 1.1 christos }; 222 1.1 christos #endif 223 1.1 christos static const YYINT calc2_gindex[] = { 0, 224 1.1 christos 0, 65, 0, 225 1.1 christos }; 226 1.1 christos #define YYTABLESIZE 220 227 1.1 christos static const YYINT calc2_table[] = { 6, 228 1.1 christos 16, 6, 10, 13, 5, 11, 5, 22, 17, 23, 229 1.1 christos 15, 15, 20, 18, 7, 19, 22, 21, 4, 5, 230 1.1 christos 0, 20, 8, 12, 0, 0, 21, 16, 16, 0, 231 1.1 christos 0, 16, 16, 16, 13, 16, 0, 16, 15, 15, 232 1.1 christos 0, 0, 7, 15, 15, 7, 15, 7, 15, 7, 233 1.1 christos 8, 12, 0, 8, 12, 8, 0, 8, 22, 17, 234 1.1 christos 0, 0, 25, 20, 18, 0, 19, 0, 21, 13, 235 1.1 christos 14, 0, 0, 0, 0, 24, 0, 0, 0, 0, 236 1.1 christos 26, 27, 28, 29, 30, 31, 32, 22, 17, 0, 237 1.1 christos 0, 0, 20, 18, 16, 19, 22, 21, 0, 0, 238 1.1 christos 0, 20, 18, 0, 19, 0, 21, 0, 0, 0, 239 1.1 christos 0, 0, 0, 0, 16, 0, 0, 13, 0, 0, 240 1.1 christos 0, 0, 0, 0, 0, 15, 0, 0, 7, 0, 241 1.1 christos 0, 0, 0, 0, 0, 0, 8, 12, 0, 0, 242 1.1 christos 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 243 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249 1.1 christos 0, 0, 0, 0, 0, 2, 3, 4, 3, 12, 250 1.1 christos }; 251 1.1 christos static const YYINT calc2_check[] = { 40, 252 1.1 christos 10, 40, 10, 10, 45, 61, 45, 37, 38, 257, 253 1.1 christos 10, 10, 42, 43, 10, 45, 37, 47, 10, 10, 254 1.1 christos -1, 42, 10, 10, -1, -1, 47, 37, 38, -1, 255 1.1 christos -1, 41, 42, 43, 41, 45, -1, 47, 37, 38, 256 1.1 christos -1, -1, 38, 42, 43, 41, 45, 43, 47, 45, 257 1.1 christos 38, 38, -1, 41, 41, 43, -1, 45, 37, 38, 258 1.1 christos -1, -1, 41, 42, 43, -1, 45, -1, 47, 5, 259 1.1 christos 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, 260 1.1 christos 16, 17, 18, 19, 20, 21, 22, 37, 38, -1, 261 1.1 christos -1, -1, 42, 43, 124, 45, 37, 47, -1, -1, 262 1.1 christos -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, 263 1.1 christos -1, -1, -1, -1, 124, -1, -1, 124, -1, -1, 264 1.1 christos -1, -1, -1, -1, -1, 124, -1, -1, 124, -1, 265 1.1 christos -1, -1, -1, -1, -1, -1, 124, 124, -1, -1, 266 1.1 christos -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, 267 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 271 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 273 1.1 christos -1, -1, -1, -1, -1, 256, 257, 258, 257, 258, 274 1.1 christos }; 275 1.1 christos #if YYBTYACC 276 1.1 christos static const YYINT calc2_ctable[] = { -1, 277 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 278 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 283 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298 1.1 christos -1, -1, -1, -1, -1, -1, -1, -1, -1, 299 1.1 christos }; 300 1.1 christos #endif 301 1.1 christos #define YYFINAL 1 302 1.1 christos #ifndef YYDEBUG 303 1.1 christos #define YYDEBUG 0 304 1.1 christos #endif 305 1.1 christos #define YYMAXTOKEN 259 306 1.1 christos #define YYUNDFTOKEN 265 307 1.1 christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 308 1.1 christos #if YYDEBUG 309 1.7 christos #ifndef NULL 310 1.7 christos #define NULL (void*)0 311 1.7 christos #endif 312 1.1 christos static const char *const calc2_name[] = { 313 1.1 christos 314 1.7 christos "$end",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'\\n'",NULL,NULL,NULL,NULL, 315 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 316 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,"'%'","'&'",NULL,"'('","')'","'*'","'+'",NULL, 317 1.7 christos "'-'",NULL,"'/'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 318 1.7 christos NULL,"'='",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 319 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 320 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 321 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 322 1.7 christos NULL,"'|'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 323 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 324 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 325 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 326 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 327 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 328 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 329 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 330 1.7 christos NULL,NULL,NULL,NULL,NULL,NULL,"error","DIGIT","LETTER","UMINUS","$accept", 331 1.7 christos "list","stat","expr","number","illegal-symbol", 332 1.1 christos }; 333 1.1 christos static const char *const calc2_rule[] = { 334 1.1 christos "$accept : list", 335 1.1 christos "list :", 336 1.1 christos "list : list stat '\\n'", 337 1.1 christos "list : list error '\\n'", 338 1.1 christos "stat : expr", 339 1.1 christos "stat : LETTER '=' expr", 340 1.1 christos "expr : '(' expr ')'", 341 1.1 christos "expr : expr '+' expr", 342 1.1 christos "expr : expr '-' expr", 343 1.1 christos "expr : expr '*' expr", 344 1.1 christos "expr : expr '/' expr", 345 1.1 christos "expr : expr '%' expr", 346 1.1 christos "expr : expr '&' expr", 347 1.1 christos "expr : expr '|' expr", 348 1.1 christos "expr : '-' expr", 349 1.1 christos "expr : LETTER", 350 1.1 christos "expr : number", 351 1.1 christos "number : DIGIT", 352 1.1 christos "number : number DIGIT", 353 1.1 christos 354 1.1 christos }; 355 1.1 christos #endif 356 1.1 christos 357 1.4 christos #if YYDEBUG 358 1.1 christos int yydebug; 359 1.4 christos #endif 360 1.1 christos 361 1.1 christos int yyerrflag; 362 1.1 christos int yychar; 363 1.1 christos YYSTYPE yyval; 364 1.1 christos YYSTYPE yylval; 365 1.4 christos int yynerrs; 366 1.4 christos 367 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 368 1.1 christos YYLTYPE yyloc; /* position returned by actions */ 369 1.1 christos YYLTYPE yylloc; /* position from the lexer */ 370 1.1 christos #endif 371 1.1 christos 372 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 373 1.1 christos #ifndef YYLLOC_DEFAULT 374 1.1 christos #define YYLLOC_DEFAULT(loc, rhs, n) \ 375 1.1 christos do \ 376 1.1 christos { \ 377 1.1 christos if (n == 0) \ 378 1.1 christos { \ 379 1.4 christos (loc).first_line = YYRHSLOC(rhs, 0).last_line; \ 380 1.4 christos (loc).first_column = YYRHSLOC(rhs, 0).last_column; \ 381 1.4 christos (loc).last_line = YYRHSLOC(rhs, 0).last_line; \ 382 1.4 christos (loc).last_column = YYRHSLOC(rhs, 0).last_column; \ 383 1.1 christos } \ 384 1.1 christos else \ 385 1.1 christos { \ 386 1.4 christos (loc).first_line = YYRHSLOC(rhs, 1).first_line; \ 387 1.4 christos (loc).first_column = YYRHSLOC(rhs, 1).first_column; \ 388 1.4 christos (loc).last_line = YYRHSLOC(rhs, n).last_line; \ 389 1.4 christos (loc).last_column = YYRHSLOC(rhs, n).last_column; \ 390 1.1 christos } \ 391 1.1 christos } while (0) 392 1.1 christos #endif /* YYLLOC_DEFAULT */ 393 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 394 1.1 christos #if YYBTYACC 395 1.1 christos 396 1.1 christos #ifndef YYLVQUEUEGROWTH 397 1.1 christos #define YYLVQUEUEGROWTH 32 398 1.1 christos #endif 399 1.1 christos #endif /* YYBTYACC */ 400 1.1 christos 401 1.1 christos /* define the initial stack-sizes */ 402 1.1 christos #ifdef YYSTACKSIZE 403 1.1 christos #undef YYMAXDEPTH 404 1.1 christos #define YYMAXDEPTH YYSTACKSIZE 405 1.1 christos #else 406 1.1 christos #ifdef YYMAXDEPTH 407 1.1 christos #define YYSTACKSIZE YYMAXDEPTH 408 1.1 christos #else 409 1.1 christos #define YYSTACKSIZE 10000 410 1.1 christos #define YYMAXDEPTH 10000 411 1.1 christos #endif 412 1.1 christos #endif 413 1.1 christos 414 1.1 christos #ifndef YYINITSTACKSIZE 415 1.1 christos #define YYINITSTACKSIZE 200 416 1.1 christos #endif 417 1.1 christos 418 1.1 christos typedef struct { 419 1.1 christos unsigned stacksize; 420 1.2 christos YYINT *s_base; 421 1.2 christos YYINT *s_mark; 422 1.2 christos YYINT *s_last; 423 1.1 christos YYSTYPE *l_base; 424 1.1 christos YYSTYPE *l_mark; 425 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 426 1.1 christos YYLTYPE *p_base; 427 1.1 christos YYLTYPE *p_mark; 428 1.1 christos #endif 429 1.1 christos } YYSTACKDATA; 430 1.1 christos #if YYBTYACC 431 1.1 christos 432 1.1 christos struct YYParseState_s 433 1.1 christos { 434 1.1 christos struct YYParseState_s *save; /* Previously saved parser state */ 435 1.1 christos YYSTACKDATA yystack; /* saved parser stack */ 436 1.1 christos int state; /* saved parser state */ 437 1.1 christos int errflag; /* saved error recovery status */ 438 1.1 christos int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 439 1.1 christos YYINT ctry; /* saved index in yyctable[] for this conflict */ 440 1.1 christos }; 441 1.1 christos typedef struct YYParseState_s YYParseState; 442 1.1 christos #endif /* YYBTYACC */ 443 1.1 christos /* variables for the parser stack */ 444 1.1 christos static YYSTACKDATA yystack; 445 1.1 christos #if YYBTYACC 446 1.1 christos 447 1.1 christos /* Current parser state */ 448 1.7 christos static YYParseState *yyps = NULL; 449 1.1 christos 450 1.1 christos /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 451 1.7 christos static YYParseState *yypath = NULL; 452 1.1 christos 453 1.1 christos /* Base of the lexical value queue */ 454 1.7 christos static YYSTYPE *yylvals = NULL; 455 1.1 christos 456 1.1 christos /* Current position at lexical value queue */ 457 1.7 christos static YYSTYPE *yylvp = NULL; 458 1.1 christos 459 1.1 christos /* End position of lexical value queue */ 460 1.7 christos static YYSTYPE *yylve = NULL; 461 1.1 christos 462 1.1 christos /* The last allocated position at the lexical value queue */ 463 1.7 christos static YYSTYPE *yylvlim = NULL; 464 1.1 christos 465 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 466 1.1 christos /* Base of the lexical position queue */ 467 1.7 christos static YYLTYPE *yylpsns = NULL; 468 1.1 christos 469 1.1 christos /* Current position at lexical position queue */ 470 1.7 christos static YYLTYPE *yylpp = NULL; 471 1.1 christos 472 1.1 christos /* End position of lexical position queue */ 473 1.7 christos static YYLTYPE *yylpe = NULL; 474 1.1 christos 475 1.1 christos /* The last allocated position at the lexical position queue */ 476 1.7 christos static YYLTYPE *yylplim = NULL; 477 1.1 christos #endif 478 1.1 christos 479 1.1 christos /* Current position at lexical token queue */ 480 1.7 christos static YYINT *yylexp = NULL; 481 1.1 christos 482 1.7 christos static YYINT *yylexemes = NULL; 483 1.1 christos #endif /* YYBTYACC */ 484 1.1 christos #line 73 "calc2.y" 485 1.1 christos /* start of programs */ 486 1.1 christos 487 1.1 christos #ifdef YYBYACC 488 1.1 christos extern int YYLEX_DECL(); 489 1.1 christos #endif 490 1.1 christos 491 1.1 christos int 492 1.1 christos main (void) 493 1.1 christos { 494 1.1 christos int regs[26]; 495 1.1 christos int base = 10; 496 1.1 christos 497 1.1 christos while(!feof(stdin)) { 498 1.1 christos yyparse(regs, &base); 499 1.1 christos } 500 1.1 christos return 0; 501 1.1 christos } 502 1.1 christos 503 1.1 christos #define UNUSED(x) ((void)(x)) 504 1.1 christos 505 1.1 christos static void 506 1.1 christos YYERROR_DECL() 507 1.1 christos { 508 1.1 christos UNUSED(regs); /* %parse-param regs is not actually used here */ 509 1.1 christos UNUSED(base); /* %parse-param base is not actually used here */ 510 1.1 christos fprintf(stderr, "%s\n", s); 511 1.1 christos } 512 1.1 christos 513 1.1 christos int 514 1.1 christos YYLEX_DECL() 515 1.1 christos { 516 1.1 christos /* lexical analysis routine */ 517 1.1 christos /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 518 1.1 christos /* return DIGIT for a digit, yylval = 0 through 9 */ 519 1.1 christos /* all other characters are returned immediately */ 520 1.1 christos 521 1.1 christos int c; 522 1.1 christos 523 1.1 christos while( (c=getchar()) == ' ' ) { /* skip blanks */ } 524 1.1 christos 525 1.1 christos /* c is now nonblank */ 526 1.1 christos 527 1.1 christos if( islower( c )) { 528 1.1 christos yylval = c - 'a'; 529 1.1 christos return ( LETTER ); 530 1.1 christos } 531 1.1 christos if( isdigit( c )) { 532 1.1 christos yylval = (c - '0') % (*base); 533 1.1 christos return ( DIGIT ); 534 1.1 christos } 535 1.1 christos return( c ); 536 1.1 christos } 537 1.7 christos #line 536 "calc2.tab.c" 538 1.1 christos 539 1.1 christos /* For use in generated program */ 540 1.1 christos #define yydepth (int)(yystack.s_mark - yystack.s_base) 541 1.1 christos #if YYBTYACC 542 1.1 christos #define yytrial (yyps->save) 543 1.1 christos #endif /* YYBTYACC */ 544 1.1 christos 545 1.1 christos #if YYDEBUG 546 1.2 christos #include <stdio.h> /* needed for printf */ 547 1.1 christos #endif 548 1.1 christos 549 1.2 christos #include <stdlib.h> /* needed for malloc, etc */ 550 1.2 christos #include <string.h> /* needed for memset */ 551 1.1 christos 552 1.1 christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 553 1.1 christos static int yygrowstack(YYSTACKDATA *data) 554 1.1 christos { 555 1.1 christos int i; 556 1.1 christos unsigned newsize; 557 1.2 christos YYINT *newss; 558 1.1 christos YYSTYPE *newvs; 559 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 560 1.1 christos YYLTYPE *newps; 561 1.1 christos #endif 562 1.1 christos 563 1.1 christos if ((newsize = data->stacksize) == 0) 564 1.1 christos newsize = YYINITSTACKSIZE; 565 1.1 christos else if (newsize >= YYMAXDEPTH) 566 1.1 christos return YYENOMEM; 567 1.1 christos else if ((newsize *= 2) > YYMAXDEPTH) 568 1.1 christos newsize = YYMAXDEPTH; 569 1.1 christos 570 1.1 christos i = (int) (data->s_mark - data->s_base); 571 1.2 christos newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 572 1.7 christos if (newss == NULL) 573 1.1 christos return YYENOMEM; 574 1.1 christos 575 1.1 christos data->s_base = newss; 576 1.1 christos data->s_mark = newss + i; 577 1.1 christos 578 1.1 christos newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 579 1.7 christos if (newvs == NULL) 580 1.1 christos return YYENOMEM; 581 1.1 christos 582 1.1 christos data->l_base = newvs; 583 1.1 christos data->l_mark = newvs + i; 584 1.1 christos 585 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 586 1.1 christos newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 587 1.7 christos if (newps == NULL) 588 1.1 christos return YYENOMEM; 589 1.1 christos 590 1.1 christos data->p_base = newps; 591 1.1 christos data->p_mark = newps + i; 592 1.1 christos #endif 593 1.1 christos 594 1.1 christos data->stacksize = newsize; 595 1.1 christos data->s_last = data->s_base + newsize - 1; 596 1.1 christos 597 1.1 christos #if YYDEBUG 598 1.1 christos if (yydebug) 599 1.1 christos fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 600 1.1 christos #endif 601 1.1 christos return 0; 602 1.1 christos } 603 1.1 christos 604 1.1 christos #if YYPURE || defined(YY_NO_LEAKS) 605 1.1 christos static void yyfreestack(YYSTACKDATA *data) 606 1.1 christos { 607 1.1 christos free(data->s_base); 608 1.1 christos free(data->l_base); 609 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 610 1.1 christos free(data->p_base); 611 1.1 christos #endif 612 1.1 christos memset(data, 0, sizeof(*data)); 613 1.1 christos } 614 1.1 christos #else 615 1.1 christos #define yyfreestack(data) /* nothing */ 616 1.1 christos #endif /* YYPURE || defined(YY_NO_LEAKS) */ 617 1.1 christos #if YYBTYACC 618 1.1 christos 619 1.1 christos static YYParseState * 620 1.1 christos yyNewState(unsigned size) 621 1.1 christos { 622 1.1 christos YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 623 1.1 christos if (p == NULL) return NULL; 624 1.1 christos 625 1.1 christos p->yystack.stacksize = size; 626 1.1 christos if (size == 0) 627 1.1 christos { 628 1.1 christos p->yystack.s_base = NULL; 629 1.1 christos p->yystack.l_base = NULL; 630 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 631 1.1 christos p->yystack.p_base = NULL; 632 1.1 christos #endif 633 1.1 christos return p; 634 1.1 christos } 635 1.2 christos p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 636 1.1 christos if (p->yystack.s_base == NULL) return NULL; 637 1.1 christos p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 638 1.1 christos if (p->yystack.l_base == NULL) return NULL; 639 1.1 christos memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 640 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 641 1.1 christos p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 642 1.1 christos if (p->yystack.p_base == NULL) return NULL; 643 1.1 christos memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 644 1.1 christos #endif 645 1.1 christos 646 1.1 christos return p; 647 1.1 christos } 648 1.1 christos 649 1.1 christos static void 650 1.1 christos yyFreeState(YYParseState *p) 651 1.1 christos { 652 1.1 christos yyfreestack(&p->yystack); 653 1.1 christos free(p); 654 1.1 christos } 655 1.1 christos #endif /* YYBTYACC */ 656 1.1 christos 657 1.1 christos #define YYABORT goto yyabort 658 1.1 christos #define YYREJECT goto yyabort 659 1.1 christos #define YYACCEPT goto yyaccept 660 1.1 christos #define YYERROR goto yyerrlab 661 1.1 christos #if YYBTYACC 662 1.1 christos #define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 663 1.1 christos #define YYVALID_NESTED do { if (yyps->save && \ 664 1.1 christos yyps->save->save == 0) goto yyvalid; } while(0) 665 1.1 christos #endif /* YYBTYACC */ 666 1.1 christos 667 1.1 christos int 668 1.1 christos YYPARSE_DECL() 669 1.1 christos { 670 1.1 christos int yym, yyn, yystate, yyresult; 671 1.1 christos #if YYBTYACC 672 1.1 christos int yynewerrflag; 673 1.1 christos YYParseState *yyerrctx = NULL; 674 1.1 christos #endif /* YYBTYACC */ 675 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 676 1.4 christos YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */ 677 1.1 christos #endif 678 1.1 christos #if YYDEBUG 679 1.1 christos const char *yys; 680 1.1 christos 681 1.7 christos if ((yys = getenv("YYDEBUG")) != NULL) 682 1.1 christos { 683 1.1 christos yyn = *yys; 684 1.1 christos if (yyn >= '0' && yyn <= '9') 685 1.1 christos yydebug = yyn - '0'; 686 1.1 christos } 687 1.1 christos if (yydebug) 688 1.1 christos fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 689 1.1 christos #endif 690 1.3 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 691 1.3 christos memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range)); 692 1.3 christos #endif 693 1.1 christos 694 1.1 christos #if YYBTYACC 695 1.7 christos yyps = yyNewState(0); if (yyps == NULL) goto yyenomem; 696 1.7 christos yyps->save = NULL; 697 1.1 christos #endif /* YYBTYACC */ 698 1.2 christos yym = 0; 699 1.6 christos /* yyn is set below */ 700 1.1 christos yynerrs = 0; 701 1.1 christos yyerrflag = 0; 702 1.1 christos yychar = YYEMPTY; 703 1.1 christos yystate = 0; 704 1.1 christos 705 1.1 christos #if YYPURE 706 1.1 christos memset(&yystack, 0, sizeof(yystack)); 707 1.1 christos #endif 708 1.1 christos 709 1.1 christos if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 710 1.1 christos yystack.s_mark = yystack.s_base; 711 1.1 christos yystack.l_mark = yystack.l_base; 712 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 713 1.1 christos yystack.p_mark = yystack.p_base; 714 1.1 christos #endif 715 1.1 christos yystate = 0; 716 1.1 christos *yystack.s_mark = 0; 717 1.1 christos 718 1.1 christos yyloop: 719 1.1 christos if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 720 1.1 christos if (yychar < 0) 721 1.1 christos { 722 1.1 christos #if YYBTYACC 723 1.1 christos do { 724 1.1 christos if (yylvp < yylve) 725 1.1 christos { 726 1.1 christos /* we're currently re-reading tokens */ 727 1.1 christos yylval = *yylvp++; 728 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 729 1.1 christos yylloc = *yylpp++; 730 1.1 christos #endif 731 1.1 christos yychar = *yylexp++; 732 1.1 christos break; 733 1.1 christos } 734 1.1 christos if (yyps->save) 735 1.1 christos { 736 1.1 christos /* in trial mode; save scanner results for future parse attempts */ 737 1.1 christos if (yylvp == yylvlim) 738 1.1 christos { /* Enlarge lexical value queue */ 739 1.1 christos size_t p = (size_t) (yylvp - yylvals); 740 1.1 christos size_t s = (size_t) (yylvlim - yylvals); 741 1.1 christos 742 1.1 christos s += YYLVQUEUEGROWTH; 743 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 744 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 745 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 746 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 747 1.1 christos #endif 748 1.1 christos yylvp = yylve = yylvals + p; 749 1.1 christos yylvlim = yylvals + s; 750 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 751 1.1 christos yylpp = yylpe = yylpsns + p; 752 1.1 christos yylplim = yylpsns + s; 753 1.1 christos #endif 754 1.1 christos yylexp = yylexemes + p; 755 1.1 christos } 756 1.2 christos *yylexp = (YYINT) YYLEX; 757 1.1 christos *yylvp++ = yylval; 758 1.1 christos yylve++; 759 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 760 1.1 christos *yylpp++ = yylloc; 761 1.1 christos yylpe++; 762 1.1 christos #endif 763 1.1 christos yychar = *yylexp++; 764 1.1 christos break; 765 1.1 christos } 766 1.1 christos /* normal operation, no conflict encountered */ 767 1.1 christos #endif /* YYBTYACC */ 768 1.1 christos yychar = YYLEX; 769 1.1 christos #if YYBTYACC 770 1.1 christos } while (0); 771 1.1 christos #endif /* YYBTYACC */ 772 1.1 christos if (yychar < 0) yychar = YYEOF; 773 1.1 christos #if YYDEBUG 774 1.1 christos if (yydebug) 775 1.1 christos { 776 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 777 1.1 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 778 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys); 779 1.1 christos #ifdef YYSTYPE_TOSTRING 780 1.1 christos #if YYBTYACC 781 1.1 christos if (!yytrial) 782 1.1 christos #endif /* YYBTYACC */ 783 1.1 christos fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 784 1.1 christos #endif 785 1.1 christos fputc('\n', stderr); 786 1.1 christos } 787 1.1 christos #endif 788 1.1 christos } 789 1.1 christos #if YYBTYACC 790 1.1 christos 791 1.1 christos /* Do we have a conflict? */ 792 1.1 christos if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 793 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 794 1.1 christos { 795 1.1 christos YYINT ctry; 796 1.1 christos 797 1.1 christos if (yypath) 798 1.1 christos { 799 1.1 christos YYParseState *save; 800 1.1 christos #if YYDEBUG 801 1.1 christos if (yydebug) 802 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 803 1.1 christos YYDEBUGSTR, yydepth, yystate); 804 1.1 christos #endif 805 1.1 christos /* Switch to the next conflict context */ 806 1.1 christos save = yypath; 807 1.1 christos yypath = save->save; 808 1.1 christos save->save = NULL; 809 1.1 christos ctry = save->ctry; 810 1.1 christos if (save->state != yystate) YYABORT; 811 1.1 christos yyFreeState(save); 812 1.1 christos 813 1.1 christos } 814 1.1 christos else 815 1.1 christos { 816 1.1 christos 817 1.1 christos /* Unresolved conflict - start/continue trial parse */ 818 1.1 christos YYParseState *save; 819 1.1 christos #if YYDEBUG 820 1.1 christos if (yydebug) 821 1.1 christos { 822 1.1 christos fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 823 1.1 christos if (yyps->save) 824 1.1 christos fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 825 1.1 christos else 826 1.1 christos fputs("Starting trial parse.\n", stderr); 827 1.1 christos } 828 1.1 christos #endif 829 1.1 christos save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 830 1.1 christos if (save == NULL) goto yyenomem; 831 1.1 christos save->save = yyps->save; 832 1.1 christos save->state = yystate; 833 1.1 christos save->errflag = yyerrflag; 834 1.1 christos save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 835 1.2 christos memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 836 1.1 christos save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 837 1.1 christos memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 838 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 839 1.1 christos save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 840 1.1 christos memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 841 1.1 christos #endif 842 1.1 christos ctry = yytable[yyn]; 843 1.1 christos if (yyctable[ctry] == -1) 844 1.1 christos { 845 1.1 christos #if YYDEBUG 846 1.1 christos if (yydebug && yychar >= YYEOF) 847 1.1 christos fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 848 1.1 christos #endif 849 1.1 christos ctry++; 850 1.1 christos } 851 1.1 christos save->ctry = ctry; 852 1.1 christos if (yyps->save == NULL) 853 1.1 christos { 854 1.1 christos /* If this is a first conflict in the stack, start saving lexemes */ 855 1.1 christos if (!yylexemes) 856 1.1 christos { 857 1.4 christos yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 858 1.1 christos if (yylexemes == NULL) goto yyenomem; 859 1.1 christos yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 860 1.1 christos if (yylvals == NULL) goto yyenomem; 861 1.1 christos yylvlim = yylvals + YYLVQUEUEGROWTH; 862 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 863 1.1 christos yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 864 1.1 christos if (yylpsns == NULL) goto yyenomem; 865 1.1 christos yylplim = yylpsns + YYLVQUEUEGROWTH; 866 1.1 christos #endif 867 1.1 christos } 868 1.1 christos if (yylvp == yylve) 869 1.1 christos { 870 1.1 christos yylvp = yylve = yylvals; 871 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 872 1.1 christos yylpp = yylpe = yylpsns; 873 1.1 christos #endif 874 1.1 christos yylexp = yylexemes; 875 1.1 christos if (yychar >= YYEOF) 876 1.1 christos { 877 1.1 christos *yylve++ = yylval; 878 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 879 1.1 christos *yylpe++ = yylloc; 880 1.1 christos #endif 881 1.2 christos *yylexp = (YYINT) yychar; 882 1.1 christos yychar = YYEMPTY; 883 1.1 christos } 884 1.1 christos } 885 1.1 christos } 886 1.1 christos if (yychar >= YYEOF) 887 1.1 christos { 888 1.1 christos yylvp--; 889 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 890 1.1 christos yylpp--; 891 1.1 christos #endif 892 1.1 christos yylexp--; 893 1.1 christos yychar = YYEMPTY; 894 1.1 christos } 895 1.1 christos save->lexeme = (int) (yylvp - yylvals); 896 1.1 christos yyps->save = save; 897 1.1 christos } 898 1.1 christos if (yytable[yyn] == ctry) 899 1.1 christos { 900 1.1 christos #if YYDEBUG 901 1.1 christos if (yydebug) 902 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 903 1.1 christos YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 904 1.1 christos #endif 905 1.1 christos if (yychar < 0) 906 1.1 christos { 907 1.1 christos yylvp++; 908 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 909 1.1 christos yylpp++; 910 1.1 christos #endif 911 1.1 christos yylexp++; 912 1.1 christos } 913 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 914 1.1 christos goto yyoverflow; 915 1.1 christos yystate = yyctable[ctry]; 916 1.2 christos *++yystack.s_mark = (YYINT) yystate; 917 1.1 christos *++yystack.l_mark = yylval; 918 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 919 1.1 christos *++yystack.p_mark = yylloc; 920 1.1 christos #endif 921 1.1 christos yychar = YYEMPTY; 922 1.1 christos if (yyerrflag > 0) --yyerrflag; 923 1.1 christos goto yyloop; 924 1.1 christos } 925 1.1 christos else 926 1.1 christos { 927 1.1 christos yyn = yyctable[ctry]; 928 1.1 christos goto yyreduce; 929 1.1 christos } 930 1.1 christos } /* End of code dealing with conflicts */ 931 1.1 christos #endif /* YYBTYACC */ 932 1.1 christos if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 933 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 934 1.1 christos { 935 1.1 christos #if YYDEBUG 936 1.1 christos if (yydebug) 937 1.1 christos fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 938 1.1 christos YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 939 1.1 christos #endif 940 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 941 1.1 christos yystate = yytable[yyn]; 942 1.1 christos *++yystack.s_mark = yytable[yyn]; 943 1.1 christos *++yystack.l_mark = yylval; 944 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 945 1.1 christos *++yystack.p_mark = yylloc; 946 1.1 christos #endif 947 1.1 christos yychar = YYEMPTY; 948 1.1 christos if (yyerrflag > 0) --yyerrflag; 949 1.1 christos goto yyloop; 950 1.1 christos } 951 1.1 christos if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 952 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 953 1.1 christos { 954 1.1 christos yyn = yytable[yyn]; 955 1.1 christos goto yyreduce; 956 1.1 christos } 957 1.1 christos if (yyerrflag != 0) goto yyinrecovery; 958 1.1 christos #if YYBTYACC 959 1.1 christos 960 1.1 christos yynewerrflag = 1; 961 1.1 christos goto yyerrhandler; 962 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 963 1.1 christos 964 1.1 christos yyerrlab: 965 1.2 christos /* explicit YYERROR from an action -- pop the rhs of the rule reduced 966 1.2 christos * before looking for error recovery */ 967 1.2 christos yystack.s_mark -= yym; 968 1.2 christos yystate = *yystack.s_mark; 969 1.2 christos yystack.l_mark -= yym; 970 1.2 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 971 1.2 christos yystack.p_mark -= yym; 972 1.2 christos #endif 973 1.2 christos 974 1.1 christos yynewerrflag = 0; 975 1.1 christos yyerrhandler: 976 1.1 christos while (yyps->save) 977 1.1 christos { 978 1.1 christos int ctry; 979 1.1 christos YYParseState *save = yyps->save; 980 1.1 christos #if YYDEBUG 981 1.1 christos if (yydebug) 982 1.1 christos fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 983 1.1 christos YYDEBUGSTR, yydepth, yystate, yyps->save->state, 984 1.1 christos (int)(yylvp - yylvals - yyps->save->lexeme)); 985 1.1 christos #endif 986 1.1 christos /* Memorize most forward-looking error state in case it's really an error. */ 987 1.1 christos if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 988 1.1 christos { 989 1.1 christos /* Free old saved error context state */ 990 1.1 christos if (yyerrctx) yyFreeState(yyerrctx); 991 1.1 christos /* Create and fill out new saved error context state */ 992 1.1 christos yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 993 1.1 christos if (yyerrctx == NULL) goto yyenomem; 994 1.1 christos yyerrctx->save = yyps->save; 995 1.1 christos yyerrctx->state = yystate; 996 1.1 christos yyerrctx->errflag = yyerrflag; 997 1.1 christos yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 998 1.2 christos memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 999 1.1 christos yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 1000 1.1 christos memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1001 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1002 1.1 christos yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 1003 1.1 christos memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1004 1.1 christos #endif 1005 1.1 christos yyerrctx->lexeme = (int) (yylvp - yylvals); 1006 1.1 christos } 1007 1.1 christos yylvp = yylvals + save->lexeme; 1008 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1009 1.1 christos yylpp = yylpsns + save->lexeme; 1010 1.1 christos #endif 1011 1.1 christos yylexp = yylexemes + save->lexeme; 1012 1.1 christos yychar = YYEMPTY; 1013 1.1 christos yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 1014 1.2 christos memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1015 1.1 christos yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 1016 1.1 christos memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1017 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1018 1.1 christos yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 1019 1.1 christos memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1020 1.1 christos #endif 1021 1.1 christos ctry = ++save->ctry; 1022 1.1 christos yystate = save->state; 1023 1.1 christos /* We tried shift, try reduce now */ 1024 1.1 christos if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 1025 1.1 christos yyps->save = save->save; 1026 1.1 christos save->save = NULL; 1027 1.1 christos yyFreeState(save); 1028 1.1 christos 1029 1.1 christos /* Nothing left on the stack -- error */ 1030 1.1 christos if (!yyps->save) 1031 1.1 christos { 1032 1.1 christos #if YYDEBUG 1033 1.1 christos if (yydebug) 1034 1.1 christos fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1035 1.1 christos YYPREFIX, yydepth); 1036 1.1 christos #endif 1037 1.1 christos /* Restore state as it was in the most forward-advanced error */ 1038 1.1 christos yylvp = yylvals + yyerrctx->lexeme; 1039 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1040 1.1 christos yylpp = yylpsns + yyerrctx->lexeme; 1041 1.1 christos #endif 1042 1.1 christos yylexp = yylexemes + yyerrctx->lexeme; 1043 1.1 christos yychar = yylexp[-1]; 1044 1.1 christos yylval = yylvp[-1]; 1045 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1046 1.1 christos yylloc = yylpp[-1]; 1047 1.1 christos #endif 1048 1.1 christos yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1049 1.2 christos memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1050 1.1 christos yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1051 1.1 christos memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1052 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1053 1.1 christos yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1054 1.1 christos memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1055 1.1 christos #endif 1056 1.1 christos yystate = yyerrctx->state; 1057 1.1 christos yyFreeState(yyerrctx); 1058 1.1 christos yyerrctx = NULL; 1059 1.1 christos } 1060 1.1 christos yynewerrflag = 1; 1061 1.1 christos } 1062 1.1 christos if (yynewerrflag == 0) goto yyinrecovery; 1063 1.1 christos #endif /* YYBTYACC */ 1064 1.1 christos 1065 1.1 christos YYERROR_CALL("syntax error"); 1066 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1067 1.4 christos yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */ 1068 1.1 christos #endif 1069 1.1 christos 1070 1.1 christos #if !YYBTYACC 1071 1.2 christos goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 1072 1.1 christos yyerrlab: 1073 1.1 christos #endif 1074 1.1 christos ++yynerrs; 1075 1.1 christos 1076 1.1 christos yyinrecovery: 1077 1.1 christos if (yyerrflag < 3) 1078 1.1 christos { 1079 1.1 christos yyerrflag = 3; 1080 1.1 christos for (;;) 1081 1.1 christos { 1082 1.1 christos if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1083 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1084 1.1 christos { 1085 1.1 christos #if YYDEBUG 1086 1.1 christos if (yydebug) 1087 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1088 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1089 1.1 christos #endif 1090 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1091 1.1 christos yystate = yytable[yyn]; 1092 1.1 christos *++yystack.s_mark = yytable[yyn]; 1093 1.1 christos *++yystack.l_mark = yylval; 1094 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1095 1.1 christos /* lookahead position is error end position */ 1096 1.4 christos yyerror_loc_range[2] = yylloc; 1097 1.1 christos YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1098 1.1 christos *++yystack.p_mark = yyloc; 1099 1.1 christos #endif 1100 1.1 christos goto yyloop; 1101 1.1 christos } 1102 1.1 christos else 1103 1.1 christos { 1104 1.1 christos #if YYDEBUG 1105 1.1 christos if (yydebug) 1106 1.1 christos fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1107 1.1 christos YYDEBUGSTR, yydepth, *yystack.s_mark); 1108 1.1 christos #endif 1109 1.1 christos if (yystack.s_mark <= yystack.s_base) goto yyabort; 1110 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1111 1.1 christos /* the current TOS position is the error start position */ 1112 1.4 christos yyerror_loc_range[1] = *yystack.p_mark; 1113 1.1 christos #endif 1114 1.1 christos #if defined(YYDESTRUCT_CALL) 1115 1.1 christos #if YYBTYACC 1116 1.1 christos if (!yytrial) 1117 1.1 christos #endif /* YYBTYACC */ 1118 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1119 1.1 christos YYDESTRUCT_CALL("error: discarding state", 1120 1.1 christos yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1121 1.1 christos #else 1122 1.1 christos YYDESTRUCT_CALL("error: discarding state", 1123 1.1 christos yystos[*yystack.s_mark], yystack.l_mark); 1124 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1125 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1126 1.1 christos --yystack.s_mark; 1127 1.1 christos --yystack.l_mark; 1128 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1129 1.1 christos --yystack.p_mark; 1130 1.1 christos #endif 1131 1.1 christos } 1132 1.1 christos } 1133 1.1 christos } 1134 1.1 christos else 1135 1.1 christos { 1136 1.1 christos if (yychar == YYEOF) goto yyabort; 1137 1.1 christos #if YYDEBUG 1138 1.1 christos if (yydebug) 1139 1.1 christos { 1140 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1141 1.1 christos fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1142 1.1 christos YYDEBUGSTR, yydepth, yystate, yychar, yys); 1143 1.1 christos } 1144 1.1 christos #endif 1145 1.1 christos #if defined(YYDESTRUCT_CALL) 1146 1.1 christos #if YYBTYACC 1147 1.1 christos if (!yytrial) 1148 1.1 christos #endif /* YYBTYACC */ 1149 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1150 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1151 1.1 christos #else 1152 1.1 christos YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1153 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1154 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1155 1.1 christos yychar = YYEMPTY; 1156 1.1 christos goto yyloop; 1157 1.1 christos } 1158 1.1 christos 1159 1.1 christos yyreduce: 1160 1.1 christos yym = yylen[yyn]; 1161 1.1 christos #if YYDEBUG 1162 1.1 christos if (yydebug) 1163 1.1 christos { 1164 1.1 christos fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1165 1.1 christos YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1166 1.1 christos #ifdef YYSTYPE_TOSTRING 1167 1.1 christos #if YYBTYACC 1168 1.1 christos if (!yytrial) 1169 1.1 christos #endif /* YYBTYACC */ 1170 1.1 christos if (yym > 0) 1171 1.1 christos { 1172 1.1 christos int i; 1173 1.1 christos fputc('<', stderr); 1174 1.1 christos for (i = yym; i > 0; i--) 1175 1.1 christos { 1176 1.1 christos if (i != yym) fputs(", ", stderr); 1177 1.1 christos fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1178 1.1 christos yystack.l_mark[1-i]), stderr); 1179 1.1 christos } 1180 1.1 christos fputc('>', stderr); 1181 1.1 christos } 1182 1.1 christos #endif 1183 1.1 christos fputc('\n', stderr); 1184 1.1 christos } 1185 1.1 christos #endif 1186 1.1 christos if (yym > 0) 1187 1.1 christos yyval = yystack.l_mark[1-yym]; 1188 1.1 christos else 1189 1.1 christos memset(&yyval, 0, sizeof yyval); 1190 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1191 1.1 christos 1192 1.1 christos /* Perform position reduction */ 1193 1.1 christos memset(&yyloc, 0, sizeof(yyloc)); 1194 1.1 christos #if YYBTYACC 1195 1.1 christos if (!yytrial) 1196 1.1 christos #endif /* YYBTYACC */ 1197 1.1 christos { 1198 1.4 christos YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym); 1199 1.1 christos /* just in case YYERROR is invoked within the action, save 1200 1.1 christos the start of the rhs as the error start position */ 1201 1.4 christos yyerror_loc_range[1] = yystack.p_mark[1-yym]; 1202 1.1 christos } 1203 1.1 christos #endif 1204 1.1 christos 1205 1.1 christos switch (yyn) 1206 1.1 christos { 1207 1.1 christos case 3: 1208 1.1 christos #line 35 "calc2.y" 1209 1.1 christos { yyerrok ; } 1210 1.7 christos #line 1209 "calc2.tab.c" 1211 1.1 christos break; 1212 1.1 christos case 4: 1213 1.1 christos #line 39 "calc2.y" 1214 1.1 christos { printf("%d\n",yystack.l_mark[0]);} 1215 1.7 christos #line 1214 "calc2.tab.c" 1216 1.1 christos break; 1217 1.1 christos case 5: 1218 1.1 christos #line 41 "calc2.y" 1219 1.1 christos { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 1220 1.7 christos #line 1219 "calc2.tab.c" 1221 1.1 christos break; 1222 1.1 christos case 6: 1223 1.1 christos #line 45 "calc2.y" 1224 1.1 christos { yyval = yystack.l_mark[-1]; } 1225 1.7 christos #line 1224 "calc2.tab.c" 1226 1.1 christos break; 1227 1.1 christos case 7: 1228 1.1 christos #line 47 "calc2.y" 1229 1.1 christos { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 1230 1.7 christos #line 1229 "calc2.tab.c" 1231 1.1 christos break; 1232 1.1 christos case 8: 1233 1.1 christos #line 49 "calc2.y" 1234 1.1 christos { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 1235 1.7 christos #line 1234 "calc2.tab.c" 1236 1.1 christos break; 1237 1.1 christos case 9: 1238 1.1 christos #line 51 "calc2.y" 1239 1.1 christos { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 1240 1.7 christos #line 1239 "calc2.tab.c" 1241 1.1 christos break; 1242 1.1 christos case 10: 1243 1.1 christos #line 53 "calc2.y" 1244 1.1 christos { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 1245 1.7 christos #line 1244 "calc2.tab.c" 1246 1.1 christos break; 1247 1.1 christos case 11: 1248 1.1 christos #line 55 "calc2.y" 1249 1.1 christos { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 1250 1.7 christos #line 1249 "calc2.tab.c" 1251 1.1 christos break; 1252 1.1 christos case 12: 1253 1.1 christos #line 57 "calc2.y" 1254 1.1 christos { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 1255 1.7 christos #line 1254 "calc2.tab.c" 1256 1.1 christos break; 1257 1.1 christos case 13: 1258 1.1 christos #line 59 "calc2.y" 1259 1.1 christos { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 1260 1.7 christos #line 1259 "calc2.tab.c" 1261 1.1 christos break; 1262 1.1 christos case 14: 1263 1.1 christos #line 61 "calc2.y" 1264 1.1 christos { yyval = - yystack.l_mark[0]; } 1265 1.7 christos #line 1264 "calc2.tab.c" 1266 1.1 christos break; 1267 1.1 christos case 15: 1268 1.1 christos #line 63 "calc2.y" 1269 1.1 christos { yyval = regs[yystack.l_mark[0]]; } 1270 1.7 christos #line 1269 "calc2.tab.c" 1271 1.1 christos break; 1272 1.1 christos case 17: 1273 1.1 christos #line 68 "calc2.y" 1274 1.1 christos { yyval = yystack.l_mark[0]; (*base) = (yystack.l_mark[0]==0) ? 8 : 10; } 1275 1.7 christos #line 1274 "calc2.tab.c" 1276 1.1 christos break; 1277 1.1 christos case 18: 1278 1.1 christos #line 70 "calc2.y" 1279 1.1 christos { yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; } 1280 1.7 christos #line 1279 "calc2.tab.c" 1281 1.1 christos break; 1282 1.7 christos #line 1281 "calc2.tab.c" 1283 1.1 christos default: 1284 1.1 christos break; 1285 1.1 christos } 1286 1.1 christos yystack.s_mark -= yym; 1287 1.1 christos yystate = *yystack.s_mark; 1288 1.1 christos yystack.l_mark -= yym; 1289 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1290 1.1 christos yystack.p_mark -= yym; 1291 1.1 christos #endif 1292 1.1 christos yym = yylhs[yyn]; 1293 1.1 christos if (yystate == 0 && yym == 0) 1294 1.1 christos { 1295 1.1 christos #if YYDEBUG 1296 1.1 christos if (yydebug) 1297 1.1 christos { 1298 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1299 1.1 christos #ifdef YYSTYPE_TOSTRING 1300 1.1 christos #if YYBTYACC 1301 1.1 christos if (!yytrial) 1302 1.1 christos #endif /* YYBTYACC */ 1303 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1304 1.1 christos #endif 1305 1.1 christos fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1306 1.1 christos } 1307 1.1 christos #endif 1308 1.1 christos yystate = YYFINAL; 1309 1.1 christos *++yystack.s_mark = YYFINAL; 1310 1.1 christos *++yystack.l_mark = yyval; 1311 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1312 1.1 christos *++yystack.p_mark = yyloc; 1313 1.1 christos #endif 1314 1.1 christos if (yychar < 0) 1315 1.1 christos { 1316 1.1 christos #if YYBTYACC 1317 1.1 christos do { 1318 1.1 christos if (yylvp < yylve) 1319 1.1 christos { 1320 1.1 christos /* we're currently re-reading tokens */ 1321 1.1 christos yylval = *yylvp++; 1322 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1323 1.1 christos yylloc = *yylpp++; 1324 1.1 christos #endif 1325 1.1 christos yychar = *yylexp++; 1326 1.1 christos break; 1327 1.1 christos } 1328 1.1 christos if (yyps->save) 1329 1.1 christos { 1330 1.1 christos /* in trial mode; save scanner results for future parse attempts */ 1331 1.1 christos if (yylvp == yylvlim) 1332 1.1 christos { /* Enlarge lexical value queue */ 1333 1.1 christos size_t p = (size_t) (yylvp - yylvals); 1334 1.1 christos size_t s = (size_t) (yylvlim - yylvals); 1335 1.1 christos 1336 1.1 christos s += YYLVQUEUEGROWTH; 1337 1.4 christos if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) 1338 1.1 christos goto yyenomem; 1339 1.4 christos if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1340 1.1 christos goto yyenomem; 1341 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1342 1.4 christos if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1343 1.1 christos goto yyenomem; 1344 1.1 christos #endif 1345 1.1 christos yylvp = yylve = yylvals + p; 1346 1.1 christos yylvlim = yylvals + s; 1347 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1348 1.1 christos yylpp = yylpe = yylpsns + p; 1349 1.1 christos yylplim = yylpsns + s; 1350 1.1 christos #endif 1351 1.1 christos yylexp = yylexemes + p; 1352 1.1 christos } 1353 1.2 christos *yylexp = (YYINT) YYLEX; 1354 1.1 christos *yylvp++ = yylval; 1355 1.1 christos yylve++; 1356 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1357 1.1 christos *yylpp++ = yylloc; 1358 1.1 christos yylpe++; 1359 1.1 christos #endif 1360 1.1 christos yychar = *yylexp++; 1361 1.1 christos break; 1362 1.1 christos } 1363 1.1 christos /* normal operation, no conflict encountered */ 1364 1.1 christos #endif /* YYBTYACC */ 1365 1.1 christos yychar = YYLEX; 1366 1.1 christos #if YYBTYACC 1367 1.1 christos } while (0); 1368 1.1 christos #endif /* YYBTYACC */ 1369 1.1 christos if (yychar < 0) yychar = YYEOF; 1370 1.1 christos #if YYDEBUG 1371 1.1 christos if (yydebug) 1372 1.1 christos { 1373 1.2 christos if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1374 1.2 christos fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 1375 1.1 christos YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1376 1.1 christos } 1377 1.1 christos #endif 1378 1.1 christos } 1379 1.1 christos if (yychar == YYEOF) goto yyaccept; 1380 1.1 christos goto yyloop; 1381 1.1 christos } 1382 1.1 christos if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1383 1.1 christos yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1384 1.1 christos yystate = yytable[yyn]; 1385 1.1 christos else 1386 1.1 christos yystate = yydgoto[yym]; 1387 1.1 christos #if YYDEBUG 1388 1.1 christos if (yydebug) 1389 1.1 christos { 1390 1.1 christos fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1391 1.1 christos #ifdef YYSTYPE_TOSTRING 1392 1.1 christos #if YYBTYACC 1393 1.1 christos if (!yytrial) 1394 1.1 christos #endif /* YYBTYACC */ 1395 1.1 christos fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1396 1.1 christos #endif 1397 1.1 christos fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1398 1.1 christos } 1399 1.1 christos #endif 1400 1.1 christos if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1401 1.2 christos *++yystack.s_mark = (YYINT) yystate; 1402 1.1 christos *++yystack.l_mark = yyval; 1403 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1404 1.1 christos *++yystack.p_mark = yyloc; 1405 1.1 christos #endif 1406 1.1 christos goto yyloop; 1407 1.1 christos #if YYBTYACC 1408 1.1 christos 1409 1.1 christos /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1410 1.1 christos yyvalid: 1411 1.1 christos if (yypath) YYABORT; 1412 1.1 christos while (yyps->save) 1413 1.1 christos { 1414 1.1 christos YYParseState *save = yyps->save; 1415 1.1 christos yyps->save = save->save; 1416 1.1 christos save->save = yypath; 1417 1.1 christos yypath = save; 1418 1.1 christos } 1419 1.1 christos #if YYDEBUG 1420 1.1 christos if (yydebug) 1421 1.1 christos fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1422 1.1 christos YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1423 1.1 christos #endif 1424 1.1 christos if (yyerrctx) 1425 1.1 christos { 1426 1.1 christos yyFreeState(yyerrctx); 1427 1.1 christos yyerrctx = NULL; 1428 1.1 christos } 1429 1.1 christos yylvp = yylvals + yypath->lexeme; 1430 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1431 1.1 christos yylpp = yylpsns + yypath->lexeme; 1432 1.1 christos #endif 1433 1.1 christos yylexp = yylexemes + yypath->lexeme; 1434 1.1 christos yychar = YYEMPTY; 1435 1.1 christos yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1436 1.2 christos memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1437 1.1 christos yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1438 1.1 christos memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1439 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1440 1.1 christos yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1441 1.1 christos memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1442 1.1 christos #endif 1443 1.1 christos yystate = yypath->state; 1444 1.1 christos goto yyloop; 1445 1.1 christos #endif /* YYBTYACC */ 1446 1.1 christos 1447 1.1 christos yyoverflow: 1448 1.1 christos YYERROR_CALL("yacc stack overflow"); 1449 1.1 christos #if YYBTYACC 1450 1.1 christos goto yyabort_nomem; 1451 1.1 christos yyenomem: 1452 1.1 christos YYERROR_CALL("memory exhausted"); 1453 1.1 christos yyabort_nomem: 1454 1.1 christos #endif /* YYBTYACC */ 1455 1.1 christos yyresult = 2; 1456 1.1 christos goto yyreturn; 1457 1.1 christos 1458 1.1 christos yyabort: 1459 1.1 christos yyresult = 1; 1460 1.1 christos goto yyreturn; 1461 1.1 christos 1462 1.1 christos yyaccept: 1463 1.1 christos #if YYBTYACC 1464 1.1 christos if (yyps->save) goto yyvalid; 1465 1.1 christos #endif /* YYBTYACC */ 1466 1.1 christos yyresult = 0; 1467 1.1 christos 1468 1.1 christos yyreturn: 1469 1.1 christos #if defined(YYDESTRUCT_CALL) 1470 1.1 christos if (yychar != YYEOF && yychar != YYEMPTY) 1471 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1472 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1473 1.1 christos #else 1474 1.1 christos YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1475 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1476 1.1 christos 1477 1.1 christos { 1478 1.1 christos YYSTYPE *pv; 1479 1.1 christos #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1480 1.1 christos YYLTYPE *pp; 1481 1.1 christos 1482 1.1 christos for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1483 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state", 1484 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1485 1.1 christos #else 1486 1.1 christos for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1487 1.1 christos YYDESTRUCT_CALL("cleanup: discarding state", 1488 1.1 christos yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1489 1.1 christos #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1490 1.1 christos } 1491 1.1 christos #endif /* defined(YYDESTRUCT_CALL) */ 1492 1.1 christos 1493 1.1 christos #if YYBTYACC 1494 1.1 christos if (yyerrctx) 1495 1.1 christos { 1496 1.1 christos yyFreeState(yyerrctx); 1497 1.1 christos yyerrctx = NULL; 1498 1.1 christos } 1499 1.1 christos while (yyps) 1500 1.1 christos { 1501 1.1 christos YYParseState *save = yyps; 1502 1.1 christos yyps = save->save; 1503 1.1 christos save->save = NULL; 1504 1.1 christos yyFreeState(save); 1505 1.1 christos } 1506 1.1 christos while (yypath) 1507 1.1 christos { 1508 1.1 christos YYParseState *save = yypath; 1509 1.1 christos yypath = save->save; 1510 1.1 christos save->save = NULL; 1511 1.1 christos yyFreeState(save); 1512 1.1 christos } 1513 1.1 christos #endif /* YYBTYACC */ 1514 1.1 christos yyfreestack(&yystack); 1515 1.1 christos return (yyresult); 1516 1.1 christos } 1517