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