1264790Sbapt/* original parser id follows */ 2264790Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3319297Sdelphij/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4264790Sbapt 5264790Sbapt#define YYBYACC 1 6264790Sbapt#define YYMAJOR 1 7264790Sbapt#define YYMINOR 9 8264790Sbapt#define YYCHECK "yyyymmdd" 9264790Sbapt 10264790Sbapt#define YYEMPTY (-1) 11264790Sbapt#define yyclearin (yychar = YYEMPTY) 12264790Sbapt#define yyerrok (yyerrflag = 0) 13264790Sbapt#define YYRECOVERING() (yyerrflag != 0) 14264790Sbapt#define YYENOMEM (-2) 15264790Sbapt#define YYEOF 0 16264790Sbapt#undef YYBTYACC 17264790Sbapt#define YYBTYACC 0 18264790Sbapt#define YYDEBUGSTR YYPREFIX "debug" 19264790Sbapt 20264790Sbapt#ifndef yyparse 21264790Sbapt#define yyparse quote_calc3_parse 22264790Sbapt#endif /* yyparse */ 23264790Sbapt 24264790Sbapt#ifndef yylex 25264790Sbapt#define yylex quote_calc3_lex 26264790Sbapt#endif /* yylex */ 27264790Sbapt 28264790Sbapt#ifndef yyerror 29264790Sbapt#define yyerror quote_calc3_error 30264790Sbapt#endif /* yyerror */ 31264790Sbapt 32264790Sbapt#ifndef yychar 33264790Sbapt#define yychar quote_calc3_char 34264790Sbapt#endif /* yychar */ 35264790Sbapt 36264790Sbapt#ifndef yyval 37264790Sbapt#define yyval quote_calc3_val 38264790Sbapt#endif /* yyval */ 39264790Sbapt 40264790Sbapt#ifndef yylval 41264790Sbapt#define yylval quote_calc3_lval 42264790Sbapt#endif /* yylval */ 43264790Sbapt 44264790Sbapt#ifndef yydebug 45264790Sbapt#define yydebug quote_calc3_debug 46264790Sbapt#endif /* yydebug */ 47264790Sbapt 48264790Sbapt#ifndef yynerrs 49264790Sbapt#define yynerrs quote_calc3_nerrs 50264790Sbapt#endif /* yynerrs */ 51264790Sbapt 52264790Sbapt#ifndef yyerrflag 53264790Sbapt#define yyerrflag quote_calc3_errflag 54264790Sbapt#endif /* yyerrflag */ 55264790Sbapt 56264790Sbapt#ifndef yylhs 57264790Sbapt#define yylhs quote_calc3_lhs 58264790Sbapt#endif /* yylhs */ 59264790Sbapt 60264790Sbapt#ifndef yylen 61264790Sbapt#define yylen quote_calc3_len 62264790Sbapt#endif /* yylen */ 63264790Sbapt 64264790Sbapt#ifndef yydefred 65264790Sbapt#define yydefred quote_calc3_defred 66264790Sbapt#endif /* yydefred */ 67264790Sbapt 68264790Sbapt#ifndef yystos 69264790Sbapt#define yystos quote_calc3_stos 70264790Sbapt#endif /* yystos */ 71264790Sbapt 72264790Sbapt#ifndef yydgoto 73264790Sbapt#define yydgoto quote_calc3_dgoto 74264790Sbapt#endif /* yydgoto */ 75264790Sbapt 76264790Sbapt#ifndef yysindex 77264790Sbapt#define yysindex quote_calc3_sindex 78264790Sbapt#endif /* yysindex */ 79264790Sbapt 80264790Sbapt#ifndef yyrindex 81264790Sbapt#define yyrindex quote_calc3_rindex 82264790Sbapt#endif /* yyrindex */ 83264790Sbapt 84264790Sbapt#ifndef yygindex 85264790Sbapt#define yygindex quote_calc3_gindex 86264790Sbapt#endif /* yygindex */ 87264790Sbapt 88264790Sbapt#ifndef yytable 89264790Sbapt#define yytable quote_calc3_table 90264790Sbapt#endif /* yytable */ 91264790Sbapt 92264790Sbapt#ifndef yycheck 93264790Sbapt#define yycheck quote_calc3_check 94264790Sbapt#endif /* yycheck */ 95264790Sbapt 96264790Sbapt#ifndef yyname 97264790Sbapt#define yyname quote_calc3_name 98264790Sbapt#endif /* yyname */ 99264790Sbapt 100264790Sbapt#ifndef yyrule 101264790Sbapt#define yyrule quote_calc3_rule 102264790Sbapt#endif /* yyrule */ 103264790Sbapt 104264790Sbapt#if YYBTYACC 105264790Sbapt 106264790Sbapt#ifndef yycindex 107264790Sbapt#define yycindex quote_calc3_cindex 108264790Sbapt#endif /* yycindex */ 109264790Sbapt 110264790Sbapt#ifndef yyctable 111264790Sbapt#define yyctable quote_calc3_ctable 112264790Sbapt#endif /* yyctable */ 113264790Sbapt 114264790Sbapt#endif /* YYBTYACC */ 115264790Sbapt 116264790Sbapt#define YYPREFIX "quote_calc3_" 117264790Sbapt 118264790Sbapt#define YYPURE 0 119264790Sbapt 120264790Sbapt#line 2 "quote_calc3.y" 121264790Sbapt# include <stdio.h> 122264790Sbapt# include <ctype.h> 123264790Sbapt 124264790Sbaptint regs[26]; 125264790Sbaptint base; 126264790Sbapt 127264790Sbaptint yylex(void); 128264790Sbaptstatic void yyerror(const char *s); 129264790Sbapt 130264790Sbapt#line 131 "quote_calc3-s.tab.c" 131264790Sbapt 132264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 133264790Sbapt/* Default: YYSTYPE is the semantic value type. */ 134264790Sbapttypedef int YYSTYPE; 135264790Sbapt# define YYSTYPE_IS_DECLARED 1 136264790Sbapt#endif 137264790Sbapt 138264790Sbapt/* compatibility with bison */ 139264790Sbapt#ifdef YYPARSE_PARAM 140264790Sbapt/* compatibility with FreeBSD */ 141264790Sbapt# ifdef YYPARSE_PARAM_TYPE 142264790Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 143264790Sbapt# else 144264790Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 145264790Sbapt# endif 146264790Sbapt#else 147264790Sbapt# define YYPARSE_DECL() yyparse(void) 148264790Sbapt#endif 149264790Sbapt 150264790Sbapt/* Parameters sent to lex. */ 151264790Sbapt#ifdef YYLEX_PARAM 152264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 153264790Sbapt# define YYLEX yylex(YYLEX_PARAM) 154264790Sbapt#else 155264790Sbapt# define YYLEX_DECL() yylex(void) 156264790Sbapt# define YYLEX yylex() 157264790Sbapt#endif 158264790Sbapt 159264790Sbapt/* Parameters sent to yyerror. */ 160264790Sbapt#ifndef YYERROR_DECL 161264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 162264790Sbapt#endif 163264790Sbapt#ifndef YYERROR_CALL 164264790Sbapt#define YYERROR_CALL(msg) yyerror(msg) 165264790Sbapt#endif 166264790Sbapt 167264790Sbaptextern int YYPARSE_DECL(); 168264790Sbapt 169264790Sbapt#define OP_ADD 257 170264790Sbapt#define OP_SUB 259 171264790Sbapt#define OP_MUL 261 172264790Sbapt#define OP_DIV 263 173264790Sbapt#define OP_MOD 265 174264790Sbapt#define OP_AND 267 175264790Sbapt#define DIGIT 269 176264790Sbapt#define LETTER 270 177264790Sbapt#define UMINUS 271 178264790Sbapt#define YYERRCODE 256 179264790Sbapttypedef short YYINT; 180264790Sbaptstatic const YYINT quote_calc3_lhs[] = { -1, 181264790Sbapt 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 182264790Sbapt 2, 2, 2, 2, 2, 2, 3, 3, 183264790Sbapt}; 184264790Sbaptstatic const YYINT quote_calc3_len[] = { 2, 185264790Sbapt 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 186264790Sbapt 3, 3, 3, 2, 1, 1, 1, 2, 187264790Sbapt}; 188264790Sbaptstatic const YYINT quote_calc3_defred[] = { 1, 189264790Sbapt 0, 0, 0, 17, 0, 0, 0, 0, 0, 3, 190264790Sbapt 15, 0, 0, 0, 2, 0, 0, 0, 0, 0, 191264790Sbapt 0, 0, 18, 0, 6, 0, 0, 0, 0, 0, 192264790Sbapt 0, 0, 193264790Sbapt}; 194319297Sdelphij#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 195264790Sbaptstatic const YYINT quote_calc3_stos[] = { 0, 196264790Sbapt 273, 256, 259, 269, 270, 40, 274, 275, 276, 10, 197264790Sbapt 270, 275, 61, 275, 10, 257, 259, 261, 263, 265, 198264790Sbapt 267, 124, 269, 275, 41, 275, 275, 275, 275, 275, 199264790Sbapt 275, 275, 200264790Sbapt}; 201319297Sdelphij#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 202264790Sbaptstatic const YYINT quote_calc3_dgoto[] = { 1, 203264790Sbapt 7, 8, 9, 204264790Sbapt}; 205264790Sbaptstatic const YYINT quote_calc3_sindex[] = { 0, 206264790Sbapt -38, 5, -36, 0, -51, -36, 7, -121, -248, 0, 207264790Sbapt 0, -243, -36, -22, 0, -36, -36, -36, -36, -36, 208264790Sbapt -36, -36, 0, -121, 0, -121, -121, -121, -121, -121, 209264790Sbapt -121, -243, 210264790Sbapt}; 211264790Sbaptstatic const YYINT quote_calc3_rindex[] = { 0, 212264790Sbapt 0, 0, 0, 0, -9, 0, 0, 13, -10, 0, 213264790Sbapt 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 214264790Sbapt 0, 0, 0, 15, 0, -3, -2, -1, 1, 2, 215264790Sbapt 3, -4, 216264790Sbapt}; 217264790Sbapt#if YYBTYACC 218264790Sbaptstatic const YYINT quote_calc3_cindex[] = { 0, 219264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222264790Sbapt 0, 0, 223264790Sbapt}; 224264790Sbapt#endif 225264790Sbaptstatic const YYINT quote_calc3_gindex[] = { 0, 226264790Sbapt 0, 42, 0, 227264790Sbapt}; 228264790Sbapt#define YYTABLESIZE 258 229264790Sbaptstatic const YYINT quote_calc3_table[] = { 16, 230264790Sbapt 15, 6, 22, 6, 14, 13, 7, 8, 9, 13, 231264790Sbapt 10, 11, 12, 16, 10, 17, 15, 18, 25, 19, 232264790Sbapt 23, 20, 4, 21, 5, 0, 0, 0, 0, 0, 233264790Sbapt 16, 0, 0, 0, 0, 14, 13, 7, 8, 9, 234264790Sbapt 0, 10, 11, 12, 12, 0, 0, 14, 0, 0, 235264790Sbapt 0, 0, 0, 0, 24, 0, 0, 26, 27, 28, 236264790Sbapt 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 237264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240264790Sbapt 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 241264790Sbapt 0, 0, 0, 16, 15, 0, 0, 0, 14, 13, 242264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243264790Sbapt 0, 0, 0, 0, 0, 16, 0, 17, 0, 18, 244264790Sbapt 0, 19, 0, 20, 0, 21, 0, 0, 0, 0, 245264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251264790Sbapt 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 252264790Sbapt 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 253264790Sbapt 4, 5, 4, 11, 16, 0, 17, 0, 18, 0, 254264790Sbapt 19, 0, 20, 0, 21, 0, 16, 15, 16, 15, 255264790Sbapt 16, 15, 16, 15, 16, 15, 16, 15, 256264790Sbapt}; 257264790Sbaptstatic const YYINT quote_calc3_check[] = { 10, 258264790Sbapt 10, 40, 124, 40, 10, 10, 10, 10, 10, 61, 259264790Sbapt 10, 10, 10, 257, 10, 259, 10, 261, 41, 263, 260264790Sbapt 269, 265, 10, 267, 10, -1, -1, -1, -1, -1, 261264790Sbapt 41, -1, -1, -1, -1, 41, 41, 41, 41, 41, 262264790Sbapt -1, 41, 41, 41, 3, -1, -1, 6, -1, -1, 263264790Sbapt -1, -1, -1, -1, 13, -1, -1, 16, 17, 18, 264264790Sbapt 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, 265264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268264790Sbapt -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 269264790Sbapt -1, -1, -1, 124, 124, -1, -1, -1, 124, 124, 270264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 271264790Sbapt -1, -1, -1, -1, -1, 257, -1, 259, -1, 261, 272264790Sbapt -1, 263, -1, 265, -1, 267, -1, -1, -1, -1, 273264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 274264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 277264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 278264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279264790Sbapt -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, 280264790Sbapt 259, -1, 259, -1, -1, -1, -1, -1, -1, -1, 281264790Sbapt 269, 270, 269, 270, 257, -1, 259, -1, 261, -1, 282264790Sbapt 263, -1, 265, -1, 267, -1, 257, 257, 259, 259, 283264790Sbapt 261, 261, 263, 263, 265, 265, 267, 267, 284264790Sbapt}; 285272655Sbapt#if YYBTYACC 286272655Sbaptstatic const YYINT quote_calc3_ctable[] = { -1, 287272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 311272655Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312272655Sbapt -1, -1, -1, -1, -1, -1, -1, 313272655Sbapt}; 314272655Sbapt#endif 315264790Sbapt#define YYFINAL 1 316264790Sbapt#ifndef YYDEBUG 317264790Sbapt#define YYDEBUG 0 318264790Sbapt#endif 319264790Sbapt#define YYMAXTOKEN 271 320264790Sbapt#define YYUNDFTOKEN 277 321264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 322264790Sbapt#if YYDEBUG 323264790Sbaptstatic const char *const quote_calc3_name[] = { 324264790Sbapt 325264790Sbapt"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 326264790Sbapt0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0, 327264790Sbapt0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 328264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0, 329264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 330264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 331264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 332264790Sbapt0,0,"error","OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MUL", 333264790Sbapt"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"", 334264790Sbapt"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS","$accept","list","stat", 335264790Sbapt"expr","number","illegal-symbol", 336264790Sbapt}; 337264790Sbaptstatic const char *const quote_calc3_rule[] = { 338264790Sbapt"$accept : list", 339264790Sbapt"list :", 340264790Sbapt"list : list stat '\\n'", 341264790Sbapt"list : list error '\\n'", 342264790Sbapt"stat : expr", 343264790Sbapt"stat : LETTER '=' expr", 344264790Sbapt"expr : '(' expr ')'", 345264790Sbapt"expr : expr OP_ADD expr", 346264790Sbapt"expr : expr OP_SUB expr", 347264790Sbapt"expr : expr OP_MUL expr", 348264790Sbapt"expr : expr OP_DIV expr", 349264790Sbapt"expr : expr OP_MOD expr", 350264790Sbapt"expr : expr OP_AND expr", 351264790Sbapt"expr : expr '|' expr", 352264790Sbapt"expr : OP_SUB expr", 353264790Sbapt"expr : LETTER", 354264790Sbapt"expr : number", 355264790Sbapt"number : DIGIT", 356264790Sbapt"number : number DIGIT", 357264790Sbapt 358264790Sbapt}; 359264790Sbapt#endif 360264790Sbapt 361264790Sbaptint yydebug; 362264790Sbaptint yynerrs; 363264790Sbapt 364264790Sbaptint yyerrflag; 365264790Sbaptint yychar; 366264790SbaptYYSTYPE yyval; 367264790SbaptYYSTYPE yylval; 368264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 369264790SbaptYYLTYPE yyloc; /* position returned by actions */ 370264790SbaptYYLTYPE yylloc; /* position from the lexer */ 371264790Sbapt#endif 372264790Sbapt 373264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 374264790Sbapt#ifndef YYLLOC_DEFAULT 375264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \ 376264790Sbaptdo \ 377264790Sbapt{ \ 378264790Sbapt if (n == 0) \ 379264790Sbapt { \ 380264790Sbapt (loc).first_line = ((rhs)[-1]).last_line; \ 381264790Sbapt (loc).first_column = ((rhs)[-1]).last_column; \ 382264790Sbapt (loc).last_line = ((rhs)[-1]).last_line; \ 383264790Sbapt (loc).last_column = ((rhs)[-1]).last_column; \ 384264790Sbapt } \ 385264790Sbapt else \ 386264790Sbapt { \ 387264790Sbapt (loc).first_line = ((rhs)[ 0 ]).first_line; \ 388264790Sbapt (loc).first_column = ((rhs)[ 0 ]).first_column; \ 389264790Sbapt (loc).last_line = ((rhs)[n-1]).last_line; \ 390264790Sbapt (loc).last_column = ((rhs)[n-1]).last_column; \ 391264790Sbapt } \ 392264790Sbapt} while (0) 393264790Sbapt#endif /* YYLLOC_DEFAULT */ 394264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 395264790Sbapt#if YYBTYACC 396264790Sbapt 397264790Sbapt#ifndef YYLVQUEUEGROWTH 398264790Sbapt#define YYLVQUEUEGROWTH 32 399264790Sbapt#endif 400264790Sbapt#endif /* YYBTYACC */ 401264790Sbapt 402264790Sbapt/* define the initial stack-sizes */ 403264790Sbapt#ifdef YYSTACKSIZE 404264790Sbapt#undef YYMAXDEPTH 405264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 406264790Sbapt#else 407264790Sbapt#ifdef YYMAXDEPTH 408264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 409264790Sbapt#else 410264790Sbapt#define YYSTACKSIZE 10000 411264790Sbapt#define YYMAXDEPTH 10000 412264790Sbapt#endif 413264790Sbapt#endif 414264790Sbapt 415264790Sbapt#ifndef YYINITSTACKSIZE 416264790Sbapt#define YYINITSTACKSIZE 200 417264790Sbapt#endif 418264790Sbapt 419264790Sbapttypedef struct { 420264790Sbapt unsigned stacksize; 421319297Sdelphij YYINT *s_base; 422319297Sdelphij YYINT *s_mark; 423319297Sdelphij YYINT *s_last; 424264790Sbapt YYSTYPE *l_base; 425264790Sbapt YYSTYPE *l_mark; 426264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 427264790Sbapt YYLTYPE *p_base; 428264790Sbapt YYLTYPE *p_mark; 429264790Sbapt#endif 430264790Sbapt} YYSTACKDATA; 431264790Sbapt#if YYBTYACC 432264790Sbapt 433264790Sbaptstruct YYParseState_s 434264790Sbapt{ 435264790Sbapt struct YYParseState_s *save; /* Previously saved parser state */ 436264790Sbapt YYSTACKDATA yystack; /* saved parser stack */ 437264790Sbapt int state; /* saved parser state */ 438264790Sbapt int errflag; /* saved error recovery status */ 439264790Sbapt int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 440264790Sbapt YYINT ctry; /* saved index in yyctable[] for this conflict */ 441264790Sbapt}; 442264790Sbapttypedef struct YYParseState_s YYParseState; 443264790Sbapt#endif /* YYBTYACC */ 444264790Sbapt/* variables for the parser stack */ 445264790Sbaptstatic YYSTACKDATA yystack; 446264790Sbapt#if YYBTYACC 447264790Sbapt 448264790Sbapt/* Current parser state */ 449264790Sbaptstatic YYParseState *yyps = 0; 450264790Sbapt 451264790Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */ 452264790Sbaptstatic YYParseState *yypath = 0; 453264790Sbapt 454264790Sbapt/* Base of the lexical value queue */ 455264790Sbaptstatic YYSTYPE *yylvals = 0; 456264790Sbapt 457264790Sbapt/* Current position at lexical value queue */ 458264790Sbaptstatic YYSTYPE *yylvp = 0; 459264790Sbapt 460264790Sbapt/* End position of lexical value queue */ 461264790Sbaptstatic YYSTYPE *yylve = 0; 462264790Sbapt 463264790Sbapt/* The last allocated position at the lexical value queue */ 464264790Sbaptstatic YYSTYPE *yylvlim = 0; 465264790Sbapt 466264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 467264790Sbapt/* Base of the lexical position queue */ 468264790Sbaptstatic YYLTYPE *yylpsns = 0; 469264790Sbapt 470264790Sbapt/* Current position at lexical position queue */ 471264790Sbaptstatic YYLTYPE *yylpp = 0; 472264790Sbapt 473264790Sbapt/* End position of lexical position queue */ 474264790Sbaptstatic YYLTYPE *yylpe = 0; 475264790Sbapt 476264790Sbapt/* The last allocated position at the lexical position queue */ 477264790Sbaptstatic YYLTYPE *yylplim = 0; 478264790Sbapt#endif 479264790Sbapt 480264790Sbapt/* Current position at lexical token queue */ 481319297Sdelphijstatic YYINT *yylexp = 0; 482264790Sbapt 483319297Sdelphijstatic YYINT *yylexemes = 0; 484264790Sbapt#endif /* YYBTYACC */ 485264790Sbapt#line 73 "quote_calc3.y" 486264790Sbapt /* start of programs */ 487264790Sbapt 488264790Sbaptint 489264790Sbaptmain (void) 490264790Sbapt{ 491264790Sbapt while(!feof(stdin)) { 492264790Sbapt yyparse(); 493264790Sbapt } 494264790Sbapt return 0; 495264790Sbapt} 496264790Sbapt 497264790Sbaptstatic void 498264790Sbaptyyerror(const char *s) 499264790Sbapt{ 500264790Sbapt fprintf(stderr, "%s\n", s); 501264790Sbapt} 502264790Sbapt 503264790Sbaptint 504264790Sbaptyylex(void) { 505264790Sbapt /* lexical analysis routine */ 506264790Sbapt /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 507264790Sbapt /* return DIGIT for a digit, yylval = 0 through 9 */ 508264790Sbapt /* all other characters are returned immediately */ 509264790Sbapt 510264790Sbapt int c; 511264790Sbapt 512264790Sbapt while( (c=getchar()) == ' ' ) { /* skip blanks */ } 513264790Sbapt 514264790Sbapt /* c is now nonblank */ 515264790Sbapt 516264790Sbapt if( islower( c )) { 517264790Sbapt yylval = c - 'a'; 518264790Sbapt return ( LETTER ); 519264790Sbapt } 520264790Sbapt if( isdigit( c )) { 521264790Sbapt yylval = c - '0'; 522264790Sbapt return ( DIGIT ); 523264790Sbapt } 524264790Sbapt return( c ); 525264790Sbapt} 526319297Sdelphij#line 527 "quote_calc3-s.tab.c" 527264790Sbapt 528264790Sbapt/* For use in generated program */ 529264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base) 530264790Sbapt#if YYBTYACC 531264790Sbapt#define yytrial (yyps->save) 532264790Sbapt#endif /* YYBTYACC */ 533264790Sbapt 534264790Sbapt#if YYDEBUG 535319297Sdelphij#include <stdio.h> /* needed for printf */ 536264790Sbapt#endif 537264790Sbapt 538319297Sdelphij#include <stdlib.h> /* needed for malloc, etc */ 539319297Sdelphij#include <string.h> /* needed for memset */ 540264790Sbapt 541264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 542264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 543264790Sbapt{ 544264790Sbapt int i; 545264790Sbapt unsigned newsize; 546319297Sdelphij YYINT *newss; 547264790Sbapt YYSTYPE *newvs; 548264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 549264790Sbapt YYLTYPE *newps; 550264790Sbapt#endif 551264790Sbapt 552264790Sbapt if ((newsize = data->stacksize) == 0) 553264790Sbapt newsize = YYINITSTACKSIZE; 554264790Sbapt else if (newsize >= YYMAXDEPTH) 555264790Sbapt return YYENOMEM; 556264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 557264790Sbapt newsize = YYMAXDEPTH; 558264790Sbapt 559264790Sbapt i = (int) (data->s_mark - data->s_base); 560319297Sdelphij newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 561264790Sbapt if (newss == 0) 562264790Sbapt return YYENOMEM; 563264790Sbapt 564264790Sbapt data->s_base = newss; 565264790Sbapt data->s_mark = newss + i; 566264790Sbapt 567264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 568264790Sbapt if (newvs == 0) 569264790Sbapt return YYENOMEM; 570264790Sbapt 571264790Sbapt data->l_base = newvs; 572264790Sbapt data->l_mark = newvs + i; 573264790Sbapt 574264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 575264790Sbapt newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 576264790Sbapt if (newps == 0) 577264790Sbapt return YYENOMEM; 578264790Sbapt 579264790Sbapt data->p_base = newps; 580264790Sbapt data->p_mark = newps + i; 581264790Sbapt#endif 582264790Sbapt 583264790Sbapt data->stacksize = newsize; 584264790Sbapt data->s_last = data->s_base + newsize - 1; 585264790Sbapt 586264790Sbapt#if YYDEBUG 587264790Sbapt if (yydebug) 588264790Sbapt fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 589264790Sbapt#endif 590264790Sbapt return 0; 591264790Sbapt} 592264790Sbapt 593264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 594264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 595264790Sbapt{ 596264790Sbapt free(data->s_base); 597264790Sbapt free(data->l_base); 598264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 599264790Sbapt free(data->p_base); 600264790Sbapt#endif 601264790Sbapt memset(data, 0, sizeof(*data)); 602264790Sbapt} 603264790Sbapt#else 604264790Sbapt#define yyfreestack(data) /* nothing */ 605264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */ 606264790Sbapt#if YYBTYACC 607264790Sbapt 608264790Sbaptstatic YYParseState * 609264790SbaptyyNewState(unsigned size) 610264790Sbapt{ 611264790Sbapt YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 612264790Sbapt if (p == NULL) return NULL; 613264790Sbapt 614264790Sbapt p->yystack.stacksize = size; 615264790Sbapt if (size == 0) 616264790Sbapt { 617264790Sbapt p->yystack.s_base = NULL; 618264790Sbapt p->yystack.l_base = NULL; 619264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 620264790Sbapt p->yystack.p_base = NULL; 621264790Sbapt#endif 622264790Sbapt return p; 623264790Sbapt } 624319297Sdelphij p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 625264790Sbapt if (p->yystack.s_base == NULL) return NULL; 626264790Sbapt p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 627264790Sbapt if (p->yystack.l_base == NULL) return NULL; 628264790Sbapt memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 629264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 630264790Sbapt p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 631264790Sbapt if (p->yystack.p_base == NULL) return NULL; 632264790Sbapt memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 633264790Sbapt#endif 634264790Sbapt 635264790Sbapt return p; 636264790Sbapt} 637264790Sbapt 638264790Sbaptstatic void 639264790SbaptyyFreeState(YYParseState *p) 640264790Sbapt{ 641264790Sbapt yyfreestack(&p->yystack); 642264790Sbapt free(p); 643264790Sbapt} 644264790Sbapt#endif /* YYBTYACC */ 645264790Sbapt 646264790Sbapt#define YYABORT goto yyabort 647264790Sbapt#define YYREJECT goto yyabort 648264790Sbapt#define YYACCEPT goto yyaccept 649264790Sbapt#define YYERROR goto yyerrlab 650264790Sbapt#if YYBTYACC 651264790Sbapt#define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 652264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \ 653264790Sbapt yyps->save->save == 0) goto yyvalid; } while(0) 654264790Sbapt#endif /* YYBTYACC */ 655264790Sbapt 656264790Sbaptint 657264790SbaptYYPARSE_DECL() 658264790Sbapt{ 659264790Sbapt int yym, yyn, yystate, yyresult; 660264790Sbapt#if YYBTYACC 661264790Sbapt int yynewerrflag; 662264790Sbapt YYParseState *yyerrctx = NULL; 663264790Sbapt#endif /* YYBTYACC */ 664264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 665264790Sbapt YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 666264790Sbapt#endif 667264790Sbapt#if YYDEBUG 668264790Sbapt const char *yys; 669264790Sbapt 670264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 671264790Sbapt { 672264790Sbapt yyn = *yys; 673264790Sbapt if (yyn >= '0' && yyn <= '9') 674264790Sbapt yydebug = yyn - '0'; 675264790Sbapt } 676264790Sbapt if (yydebug) 677264790Sbapt fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 678264790Sbapt#endif 679264790Sbapt 680264790Sbapt#if YYBTYACC 681264790Sbapt yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 682264790Sbapt yyps->save = 0; 683264790Sbapt#endif /* YYBTYACC */ 684319297Sdelphij yym = 0; 685319297Sdelphij yyn = 0; 686264790Sbapt yynerrs = 0; 687264790Sbapt yyerrflag = 0; 688264790Sbapt yychar = YYEMPTY; 689264790Sbapt yystate = 0; 690264790Sbapt 691264790Sbapt#if YYPURE 692264790Sbapt memset(&yystack, 0, sizeof(yystack)); 693264790Sbapt#endif 694264790Sbapt 695264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 696264790Sbapt yystack.s_mark = yystack.s_base; 697264790Sbapt yystack.l_mark = yystack.l_base; 698264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 699264790Sbapt yystack.p_mark = yystack.p_base; 700264790Sbapt#endif 701264790Sbapt yystate = 0; 702264790Sbapt *yystack.s_mark = 0; 703264790Sbapt 704264790Sbaptyyloop: 705264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 706264790Sbapt if (yychar < 0) 707264790Sbapt { 708264790Sbapt#if YYBTYACC 709264790Sbapt do { 710264790Sbapt if (yylvp < yylve) 711264790Sbapt { 712264790Sbapt /* we're currently re-reading tokens */ 713264790Sbapt yylval = *yylvp++; 714264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 715264790Sbapt yylloc = *yylpp++; 716264790Sbapt#endif 717264790Sbapt yychar = *yylexp++; 718264790Sbapt break; 719264790Sbapt } 720264790Sbapt if (yyps->save) 721264790Sbapt { 722264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 723264790Sbapt if (yylvp == yylvlim) 724264790Sbapt { /* Enlarge lexical value queue */ 725272655Sbapt size_t p = (size_t) (yylvp - yylvals); 726272655Sbapt size_t s = (size_t) (yylvlim - yylvals); 727264790Sbapt 728264790Sbapt s += YYLVQUEUEGROWTH; 729319297Sdelphij if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 730319297Sdelphij if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 731264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 732319297Sdelphij if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 733264790Sbapt#endif 734264790Sbapt yylvp = yylve = yylvals + p; 735264790Sbapt yylvlim = yylvals + s; 736264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 737264790Sbapt yylpp = yylpe = yylpsns + p; 738264790Sbapt yylplim = yylpsns + s; 739264790Sbapt#endif 740264790Sbapt yylexp = yylexemes + p; 741264790Sbapt } 742319297Sdelphij *yylexp = (YYINT) YYLEX; 743264790Sbapt *yylvp++ = yylval; 744264790Sbapt yylve++; 745264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 746264790Sbapt *yylpp++ = yylloc; 747264790Sbapt yylpe++; 748264790Sbapt#endif 749264790Sbapt yychar = *yylexp++; 750264790Sbapt break; 751264790Sbapt } 752264790Sbapt /* normal operation, no conflict encountered */ 753264790Sbapt#endif /* YYBTYACC */ 754264790Sbapt yychar = YYLEX; 755264790Sbapt#if YYBTYACC 756264790Sbapt } while (0); 757264790Sbapt#endif /* YYBTYACC */ 758264790Sbapt if (yychar < 0) yychar = YYEOF; 759264790Sbapt#if YYDEBUG 760264790Sbapt if (yydebug) 761264790Sbapt { 762319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 763264790Sbapt fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 764264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 765264790Sbapt#ifdef YYSTYPE_TOSTRING 766264790Sbapt#if YYBTYACC 767264790Sbapt if (!yytrial) 768264790Sbapt#endif /* YYBTYACC */ 769264790Sbapt fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 770264790Sbapt#endif 771264790Sbapt fputc('\n', stderr); 772264790Sbapt } 773264790Sbapt#endif 774264790Sbapt } 775264790Sbapt#if YYBTYACC 776264790Sbapt 777264790Sbapt /* Do we have a conflict? */ 778264790Sbapt if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 779264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 780264790Sbapt { 781264790Sbapt YYINT ctry; 782264790Sbapt 783264790Sbapt if (yypath) 784264790Sbapt { 785264790Sbapt YYParseState *save; 786264790Sbapt#if YYDEBUG 787264790Sbapt if (yydebug) 788264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 789264790Sbapt YYDEBUGSTR, yydepth, yystate); 790264790Sbapt#endif 791264790Sbapt /* Switch to the next conflict context */ 792264790Sbapt save = yypath; 793264790Sbapt yypath = save->save; 794264790Sbapt save->save = NULL; 795264790Sbapt ctry = save->ctry; 796264790Sbapt if (save->state != yystate) YYABORT; 797264790Sbapt yyFreeState(save); 798264790Sbapt 799264790Sbapt } 800264790Sbapt else 801264790Sbapt { 802264790Sbapt 803264790Sbapt /* Unresolved conflict - start/continue trial parse */ 804264790Sbapt YYParseState *save; 805264790Sbapt#if YYDEBUG 806264790Sbapt if (yydebug) 807264790Sbapt { 808264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 809264790Sbapt if (yyps->save) 810264790Sbapt fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 811264790Sbapt else 812264790Sbapt fputs("Starting trial parse.\n", stderr); 813264790Sbapt } 814264790Sbapt#endif 815264790Sbapt save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 816264790Sbapt if (save == NULL) goto yyenomem; 817264790Sbapt save->save = yyps->save; 818264790Sbapt save->state = yystate; 819264790Sbapt save->errflag = yyerrflag; 820264790Sbapt save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 821319297Sdelphij memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 822264790Sbapt save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 823272655Sbapt memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 824264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 825264790Sbapt save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 826272655Sbapt memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 827264790Sbapt#endif 828264790Sbapt ctry = yytable[yyn]; 829264790Sbapt if (yyctable[ctry] == -1) 830264790Sbapt { 831264790Sbapt#if YYDEBUG 832264790Sbapt if (yydebug && yychar >= YYEOF) 833264790Sbapt fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 834264790Sbapt#endif 835264790Sbapt ctry++; 836264790Sbapt } 837264790Sbapt save->ctry = ctry; 838264790Sbapt if (yyps->save == NULL) 839264790Sbapt { 840264790Sbapt /* If this is a first conflict in the stack, start saving lexemes */ 841264790Sbapt if (!yylexemes) 842264790Sbapt { 843319297Sdelphij yylexemes = malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 844264790Sbapt if (yylexemes == NULL) goto yyenomem; 845264790Sbapt yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 846264790Sbapt if (yylvals == NULL) goto yyenomem; 847264790Sbapt yylvlim = yylvals + YYLVQUEUEGROWTH; 848264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 849264790Sbapt yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 850264790Sbapt if (yylpsns == NULL) goto yyenomem; 851264790Sbapt yylplim = yylpsns + YYLVQUEUEGROWTH; 852264790Sbapt#endif 853264790Sbapt } 854264790Sbapt if (yylvp == yylve) 855264790Sbapt { 856264790Sbapt yylvp = yylve = yylvals; 857264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 858264790Sbapt yylpp = yylpe = yylpsns; 859264790Sbapt#endif 860264790Sbapt yylexp = yylexemes; 861264790Sbapt if (yychar >= YYEOF) 862264790Sbapt { 863264790Sbapt *yylve++ = yylval; 864264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 865264790Sbapt *yylpe++ = yylloc; 866264790Sbapt#endif 867319297Sdelphij *yylexp = (YYINT) yychar; 868264790Sbapt yychar = YYEMPTY; 869264790Sbapt } 870264790Sbapt } 871264790Sbapt } 872264790Sbapt if (yychar >= YYEOF) 873264790Sbapt { 874264790Sbapt yylvp--; 875264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 876264790Sbapt yylpp--; 877264790Sbapt#endif 878264790Sbapt yylexp--; 879264790Sbapt yychar = YYEMPTY; 880264790Sbapt } 881272655Sbapt save->lexeme = (int) (yylvp - yylvals); 882264790Sbapt yyps->save = save; 883264790Sbapt } 884264790Sbapt if (yytable[yyn] == ctry) 885264790Sbapt { 886264790Sbapt#if YYDEBUG 887264790Sbapt if (yydebug) 888264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 889264790Sbapt YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 890264790Sbapt#endif 891264790Sbapt if (yychar < 0) 892264790Sbapt { 893264790Sbapt yylvp++; 894264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 895264790Sbapt yylpp++; 896264790Sbapt#endif 897264790Sbapt yylexp++; 898264790Sbapt } 899264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 900264790Sbapt goto yyoverflow; 901264790Sbapt yystate = yyctable[ctry]; 902319297Sdelphij *++yystack.s_mark = (YYINT) yystate; 903264790Sbapt *++yystack.l_mark = yylval; 904264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 905264790Sbapt *++yystack.p_mark = yylloc; 906264790Sbapt#endif 907264790Sbapt yychar = YYEMPTY; 908264790Sbapt if (yyerrflag > 0) --yyerrflag; 909264790Sbapt goto yyloop; 910264790Sbapt } 911264790Sbapt else 912264790Sbapt { 913264790Sbapt yyn = yyctable[ctry]; 914264790Sbapt goto yyreduce; 915264790Sbapt } 916264790Sbapt } /* End of code dealing with conflicts */ 917264790Sbapt#endif /* YYBTYACC */ 918264790Sbapt if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 919264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 920264790Sbapt { 921264790Sbapt#if YYDEBUG 922264790Sbapt if (yydebug) 923264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 924264790Sbapt YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 925264790Sbapt#endif 926264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 927264790Sbapt yystate = yytable[yyn]; 928264790Sbapt *++yystack.s_mark = yytable[yyn]; 929264790Sbapt *++yystack.l_mark = yylval; 930264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 931264790Sbapt *++yystack.p_mark = yylloc; 932264790Sbapt#endif 933264790Sbapt yychar = YYEMPTY; 934264790Sbapt if (yyerrflag > 0) --yyerrflag; 935264790Sbapt goto yyloop; 936264790Sbapt } 937264790Sbapt if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 938264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 939264790Sbapt { 940264790Sbapt yyn = yytable[yyn]; 941264790Sbapt goto yyreduce; 942264790Sbapt } 943264790Sbapt if (yyerrflag != 0) goto yyinrecovery; 944264790Sbapt#if YYBTYACC 945264790Sbapt 946264790Sbapt yynewerrflag = 1; 947264790Sbapt goto yyerrhandler; 948319297Sdelphij goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 949264790Sbapt 950264790Sbaptyyerrlab: 951319297Sdelphij /* explicit YYERROR from an action -- pop the rhs of the rule reduced 952319297Sdelphij * before looking for error recovery */ 953319297Sdelphij yystack.s_mark -= yym; 954319297Sdelphij yystate = *yystack.s_mark; 955319297Sdelphij yystack.l_mark -= yym; 956319297Sdelphij#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 957319297Sdelphij yystack.p_mark -= yym; 958319297Sdelphij#endif 959319297Sdelphij 960264790Sbapt yynewerrflag = 0; 961264790Sbaptyyerrhandler: 962264790Sbapt while (yyps->save) 963264790Sbapt { 964264790Sbapt int ctry; 965264790Sbapt YYParseState *save = yyps->save; 966264790Sbapt#if YYDEBUG 967264790Sbapt if (yydebug) 968264790Sbapt fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 969264790Sbapt YYDEBUGSTR, yydepth, yystate, yyps->save->state, 970264790Sbapt (int)(yylvp - yylvals - yyps->save->lexeme)); 971264790Sbapt#endif 972264790Sbapt /* Memorize most forward-looking error state in case it's really an error. */ 973264790Sbapt if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 974264790Sbapt { 975264790Sbapt /* Free old saved error context state */ 976264790Sbapt if (yyerrctx) yyFreeState(yyerrctx); 977264790Sbapt /* Create and fill out new saved error context state */ 978264790Sbapt yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 979264790Sbapt if (yyerrctx == NULL) goto yyenomem; 980264790Sbapt yyerrctx->save = yyps->save; 981264790Sbapt yyerrctx->state = yystate; 982264790Sbapt yyerrctx->errflag = yyerrflag; 983264790Sbapt yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 984319297Sdelphij memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 985264790Sbapt yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 986272655Sbapt memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 987264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 988264790Sbapt yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 989272655Sbapt memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 990264790Sbapt#endif 991272655Sbapt yyerrctx->lexeme = (int) (yylvp - yylvals); 992264790Sbapt } 993264790Sbapt yylvp = yylvals + save->lexeme; 994264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 995264790Sbapt yylpp = yylpsns + save->lexeme; 996264790Sbapt#endif 997264790Sbapt yylexp = yylexemes + save->lexeme; 998264790Sbapt yychar = YYEMPTY; 999264790Sbapt yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 1000319297Sdelphij memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1001264790Sbapt yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 1002272655Sbapt memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1003264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1004264790Sbapt yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 1005272655Sbapt memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1006264790Sbapt#endif 1007264790Sbapt ctry = ++save->ctry; 1008264790Sbapt yystate = save->state; 1009264790Sbapt /* We tried shift, try reduce now */ 1010264790Sbapt if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 1011264790Sbapt yyps->save = save->save; 1012264790Sbapt save->save = NULL; 1013264790Sbapt yyFreeState(save); 1014264790Sbapt 1015264790Sbapt /* Nothing left on the stack -- error */ 1016264790Sbapt if (!yyps->save) 1017264790Sbapt { 1018264790Sbapt#if YYDEBUG 1019264790Sbapt if (yydebug) 1020264790Sbapt fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1021264790Sbapt YYPREFIX, yydepth); 1022264790Sbapt#endif 1023264790Sbapt /* Restore state as it was in the most forward-advanced error */ 1024264790Sbapt yylvp = yylvals + yyerrctx->lexeme; 1025264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1026264790Sbapt yylpp = yylpsns + yyerrctx->lexeme; 1027264790Sbapt#endif 1028264790Sbapt yylexp = yylexemes + yyerrctx->lexeme; 1029264790Sbapt yychar = yylexp[-1]; 1030264790Sbapt yylval = yylvp[-1]; 1031264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1032264790Sbapt yylloc = yylpp[-1]; 1033264790Sbapt#endif 1034264790Sbapt yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1035319297Sdelphij memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1036264790Sbapt yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1037272655Sbapt memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1038264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1039264790Sbapt yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1040272655Sbapt memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1041264790Sbapt#endif 1042264790Sbapt yystate = yyerrctx->state; 1043264790Sbapt yyFreeState(yyerrctx); 1044264790Sbapt yyerrctx = NULL; 1045264790Sbapt } 1046264790Sbapt yynewerrflag = 1; 1047264790Sbapt } 1048264790Sbapt if (yynewerrflag == 0) goto yyinrecovery; 1049264790Sbapt#endif /* YYBTYACC */ 1050264790Sbapt 1051264790Sbapt YYERROR_CALL("syntax error"); 1052264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1053264790Sbapt yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 1054264790Sbapt#endif 1055264790Sbapt 1056264790Sbapt#if !YYBTYACC 1057319297Sdelphij goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 1058264790Sbaptyyerrlab: 1059264790Sbapt#endif 1060264790Sbapt ++yynerrs; 1061264790Sbapt 1062264790Sbaptyyinrecovery: 1063264790Sbapt if (yyerrflag < 3) 1064264790Sbapt { 1065264790Sbapt yyerrflag = 3; 1066264790Sbapt for (;;) 1067264790Sbapt { 1068264790Sbapt if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1069264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1070264790Sbapt { 1071264790Sbapt#if YYDEBUG 1072264790Sbapt if (yydebug) 1073264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1074264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1075264790Sbapt#endif 1076264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1077264790Sbapt yystate = yytable[yyn]; 1078264790Sbapt *++yystack.s_mark = yytable[yyn]; 1079264790Sbapt *++yystack.l_mark = yylval; 1080264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1081264790Sbapt /* lookahead position is error end position */ 1082264790Sbapt yyerror_loc_range[1] = yylloc; 1083264790Sbapt YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1084264790Sbapt *++yystack.p_mark = yyloc; 1085264790Sbapt#endif 1086264790Sbapt goto yyloop; 1087264790Sbapt } 1088264790Sbapt else 1089264790Sbapt { 1090264790Sbapt#if YYDEBUG 1091264790Sbapt if (yydebug) 1092264790Sbapt fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1093264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark); 1094264790Sbapt#endif 1095264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 1096264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1097264790Sbapt /* the current TOS position is the error start position */ 1098264790Sbapt yyerror_loc_range[0] = *yystack.p_mark; 1099264790Sbapt#endif 1100264790Sbapt#if defined(YYDESTRUCT_CALL) 1101264790Sbapt#if YYBTYACC 1102264790Sbapt if (!yytrial) 1103264790Sbapt#endif /* YYBTYACC */ 1104264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1105264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1106264790Sbapt yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1107264790Sbapt#else 1108264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1109264790Sbapt yystos[*yystack.s_mark], yystack.l_mark); 1110264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1111264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1112264790Sbapt --yystack.s_mark; 1113264790Sbapt --yystack.l_mark; 1114264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1115264790Sbapt --yystack.p_mark; 1116264790Sbapt#endif 1117264790Sbapt } 1118264790Sbapt } 1119264790Sbapt } 1120264790Sbapt else 1121264790Sbapt { 1122264790Sbapt if (yychar == YYEOF) goto yyabort; 1123264790Sbapt#if YYDEBUG 1124264790Sbapt if (yydebug) 1125264790Sbapt { 1126319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1127264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1128264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 1129264790Sbapt } 1130264790Sbapt#endif 1131264790Sbapt#if defined(YYDESTRUCT_CALL) 1132264790Sbapt#if YYBTYACC 1133264790Sbapt if (!yytrial) 1134264790Sbapt#endif /* YYBTYACC */ 1135264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1136264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1137264790Sbapt#else 1138264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1139264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1140264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1141264790Sbapt yychar = YYEMPTY; 1142264790Sbapt goto yyloop; 1143264790Sbapt } 1144264790Sbapt 1145264790Sbaptyyreduce: 1146264790Sbapt yym = yylen[yyn]; 1147264790Sbapt#if YYDEBUG 1148264790Sbapt if (yydebug) 1149264790Sbapt { 1150264790Sbapt fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1151264790Sbapt YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1152264790Sbapt#ifdef YYSTYPE_TOSTRING 1153264790Sbapt#if YYBTYACC 1154264790Sbapt if (!yytrial) 1155264790Sbapt#endif /* YYBTYACC */ 1156264790Sbapt if (yym > 0) 1157264790Sbapt { 1158264790Sbapt int i; 1159264790Sbapt fputc('<', stderr); 1160264790Sbapt for (i = yym; i > 0; i--) 1161264790Sbapt { 1162264790Sbapt if (i != yym) fputs(", ", stderr); 1163264790Sbapt fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1164264790Sbapt yystack.l_mark[1-i]), stderr); 1165264790Sbapt } 1166264790Sbapt fputc('>', stderr); 1167264790Sbapt } 1168264790Sbapt#endif 1169264790Sbapt fputc('\n', stderr); 1170264790Sbapt } 1171264790Sbapt#endif 1172264790Sbapt if (yym > 0) 1173264790Sbapt yyval = yystack.l_mark[1-yym]; 1174264790Sbapt else 1175264790Sbapt memset(&yyval, 0, sizeof yyval); 1176264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1177264790Sbapt 1178264790Sbapt /* Perform position reduction */ 1179264790Sbapt memset(&yyloc, 0, sizeof(yyloc)); 1180264790Sbapt#if YYBTYACC 1181264790Sbapt if (!yytrial) 1182264790Sbapt#endif /* YYBTYACC */ 1183264790Sbapt { 1184264790Sbapt YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1185264790Sbapt /* just in case YYERROR is invoked within the action, save 1186264790Sbapt the start of the rhs as the error start position */ 1187264790Sbapt yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1188264790Sbapt } 1189264790Sbapt#endif 1190264790Sbapt 1191264790Sbapt switch (yyn) 1192264790Sbapt { 1193264790Sbaptcase 3: 1194264790Sbapt#line 35 "quote_calc3.y" 1195264790Sbapt { yyerrok ; } 1196264790Sbaptbreak; 1197264790Sbaptcase 4: 1198264790Sbapt#line 39 "quote_calc3.y" 1199264790Sbapt { printf("%d\n",yystack.l_mark[0]);} 1200264790Sbaptbreak; 1201264790Sbaptcase 5: 1202264790Sbapt#line 41 "quote_calc3.y" 1203264790Sbapt { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 1204264790Sbaptbreak; 1205264790Sbaptcase 6: 1206264790Sbapt#line 45 "quote_calc3.y" 1207264790Sbapt { yyval = yystack.l_mark[-1]; } 1208264790Sbaptbreak; 1209264790Sbaptcase 7: 1210264790Sbapt#line 47 "quote_calc3.y" 1211264790Sbapt { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 1212264790Sbaptbreak; 1213264790Sbaptcase 8: 1214264790Sbapt#line 49 "quote_calc3.y" 1215264790Sbapt { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 1216264790Sbaptbreak; 1217264790Sbaptcase 9: 1218264790Sbapt#line 51 "quote_calc3.y" 1219264790Sbapt { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 1220264790Sbaptbreak; 1221264790Sbaptcase 10: 1222264790Sbapt#line 53 "quote_calc3.y" 1223264790Sbapt { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 1224264790Sbaptbreak; 1225264790Sbaptcase 11: 1226264790Sbapt#line 55 "quote_calc3.y" 1227264790Sbapt { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 1228264790Sbaptbreak; 1229264790Sbaptcase 12: 1230264790Sbapt#line 57 "quote_calc3.y" 1231264790Sbapt { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 1232264790Sbaptbreak; 1233264790Sbaptcase 13: 1234264790Sbapt#line 59 "quote_calc3.y" 1235264790Sbapt { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 1236264790Sbaptbreak; 1237264790Sbaptcase 14: 1238264790Sbapt#line 61 "quote_calc3.y" 1239264790Sbapt { yyval = - yystack.l_mark[0]; } 1240264790Sbaptbreak; 1241264790Sbaptcase 15: 1242264790Sbapt#line 63 "quote_calc3.y" 1243264790Sbapt { yyval = regs[yystack.l_mark[0]]; } 1244264790Sbaptbreak; 1245264790Sbaptcase 17: 1246264790Sbapt#line 68 "quote_calc3.y" 1247264790Sbapt { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 1248264790Sbaptbreak; 1249264790Sbaptcase 18: 1250264790Sbapt#line 70 "quote_calc3.y" 1251264790Sbapt { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 1252264790Sbaptbreak; 1253319297Sdelphij#line 1254 "quote_calc3-s.tab.c" 1254264790Sbapt default: 1255264790Sbapt break; 1256264790Sbapt } 1257264790Sbapt yystack.s_mark -= yym; 1258264790Sbapt yystate = *yystack.s_mark; 1259264790Sbapt yystack.l_mark -= yym; 1260264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1261264790Sbapt yystack.p_mark -= yym; 1262264790Sbapt#endif 1263264790Sbapt yym = yylhs[yyn]; 1264264790Sbapt if (yystate == 0 && yym == 0) 1265264790Sbapt { 1266264790Sbapt#if YYDEBUG 1267264790Sbapt if (yydebug) 1268264790Sbapt { 1269264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1270264790Sbapt#ifdef YYSTYPE_TOSTRING 1271264790Sbapt#if YYBTYACC 1272264790Sbapt if (!yytrial) 1273264790Sbapt#endif /* YYBTYACC */ 1274264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1275264790Sbapt#endif 1276264790Sbapt fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1277264790Sbapt } 1278264790Sbapt#endif 1279264790Sbapt yystate = YYFINAL; 1280264790Sbapt *++yystack.s_mark = YYFINAL; 1281264790Sbapt *++yystack.l_mark = yyval; 1282264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1283264790Sbapt *++yystack.p_mark = yyloc; 1284264790Sbapt#endif 1285264790Sbapt if (yychar < 0) 1286264790Sbapt { 1287264790Sbapt#if YYBTYACC 1288264790Sbapt do { 1289264790Sbapt if (yylvp < yylve) 1290264790Sbapt { 1291264790Sbapt /* we're currently re-reading tokens */ 1292264790Sbapt yylval = *yylvp++; 1293264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1294264790Sbapt yylloc = *yylpp++; 1295264790Sbapt#endif 1296264790Sbapt yychar = *yylexp++; 1297264790Sbapt break; 1298264790Sbapt } 1299264790Sbapt if (yyps->save) 1300264790Sbapt { 1301264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 1302264790Sbapt if (yylvp == yylvlim) 1303264790Sbapt { /* Enlarge lexical value queue */ 1304272655Sbapt size_t p = (size_t) (yylvp - yylvals); 1305272655Sbapt size_t s = (size_t) (yylvlim - yylvals); 1306264790Sbapt 1307264790Sbapt s += YYLVQUEUEGROWTH; 1308319297Sdelphij if ((yylexemes = realloc(yylexemes, s * sizeof(YYINT))) == NULL) 1309264790Sbapt goto yyenomem; 1310319297Sdelphij if ((yylvals = realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1311264790Sbapt goto yyenomem; 1312264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1313319297Sdelphij if ((yylpsns = realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1314264790Sbapt goto yyenomem; 1315264790Sbapt#endif 1316264790Sbapt yylvp = yylve = yylvals + p; 1317264790Sbapt yylvlim = yylvals + s; 1318264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1319264790Sbapt yylpp = yylpe = yylpsns + p; 1320264790Sbapt yylplim = yylpsns + s; 1321264790Sbapt#endif 1322264790Sbapt yylexp = yylexemes + p; 1323264790Sbapt } 1324319297Sdelphij *yylexp = (YYINT) YYLEX; 1325264790Sbapt *yylvp++ = yylval; 1326264790Sbapt yylve++; 1327264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1328264790Sbapt *yylpp++ = yylloc; 1329264790Sbapt yylpe++; 1330264790Sbapt#endif 1331264790Sbapt yychar = *yylexp++; 1332264790Sbapt break; 1333264790Sbapt } 1334264790Sbapt /* normal operation, no conflict encountered */ 1335264790Sbapt#endif /* YYBTYACC */ 1336264790Sbapt yychar = YYLEX; 1337264790Sbapt#if YYBTYACC 1338264790Sbapt } while (0); 1339264790Sbapt#endif /* YYBTYACC */ 1340264790Sbapt if (yychar < 0) yychar = YYEOF; 1341264790Sbapt#if YYDEBUG 1342264790Sbapt if (yydebug) 1343264790Sbapt { 1344319297Sdelphij if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1345319297Sdelphij fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 1346264790Sbapt YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1347264790Sbapt } 1348264790Sbapt#endif 1349264790Sbapt } 1350264790Sbapt if (yychar == YYEOF) goto yyaccept; 1351264790Sbapt goto yyloop; 1352264790Sbapt } 1353264790Sbapt if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1354264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1355264790Sbapt yystate = yytable[yyn]; 1356264790Sbapt else 1357264790Sbapt yystate = yydgoto[yym]; 1358264790Sbapt#if YYDEBUG 1359264790Sbapt if (yydebug) 1360264790Sbapt { 1361264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1362264790Sbapt#ifdef YYSTYPE_TOSTRING 1363264790Sbapt#if YYBTYACC 1364264790Sbapt if (!yytrial) 1365264790Sbapt#endif /* YYBTYACC */ 1366264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1367264790Sbapt#endif 1368264790Sbapt fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1369264790Sbapt } 1370264790Sbapt#endif 1371264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1372319297Sdelphij *++yystack.s_mark = (YYINT) yystate; 1373264790Sbapt *++yystack.l_mark = yyval; 1374264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1375264790Sbapt *++yystack.p_mark = yyloc; 1376264790Sbapt#endif 1377264790Sbapt goto yyloop; 1378264790Sbapt#if YYBTYACC 1379264790Sbapt 1380264790Sbapt /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1381264790Sbaptyyvalid: 1382264790Sbapt if (yypath) YYABORT; 1383264790Sbapt while (yyps->save) 1384264790Sbapt { 1385264790Sbapt YYParseState *save = yyps->save; 1386264790Sbapt yyps->save = save->save; 1387264790Sbapt save->save = yypath; 1388264790Sbapt yypath = save; 1389264790Sbapt } 1390264790Sbapt#if YYDEBUG 1391264790Sbapt if (yydebug) 1392264790Sbapt fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1393264790Sbapt YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1394264790Sbapt#endif 1395264790Sbapt if (yyerrctx) 1396264790Sbapt { 1397264790Sbapt yyFreeState(yyerrctx); 1398264790Sbapt yyerrctx = NULL; 1399264790Sbapt } 1400264790Sbapt yylvp = yylvals + yypath->lexeme; 1401264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1402264790Sbapt yylpp = yylpsns + yypath->lexeme; 1403264790Sbapt#endif 1404264790Sbapt yylexp = yylexemes + yypath->lexeme; 1405264790Sbapt yychar = YYEMPTY; 1406264790Sbapt yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1407319297Sdelphij memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1408264790Sbapt yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1409272655Sbapt memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1410264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1411264790Sbapt yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1412272655Sbapt memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1413264790Sbapt#endif 1414264790Sbapt yystate = yypath->state; 1415264790Sbapt goto yyloop; 1416264790Sbapt#endif /* YYBTYACC */ 1417264790Sbapt 1418264790Sbaptyyoverflow: 1419264790Sbapt YYERROR_CALL("yacc stack overflow"); 1420264790Sbapt#if YYBTYACC 1421264790Sbapt goto yyabort_nomem; 1422264790Sbaptyyenomem: 1423264790Sbapt YYERROR_CALL("memory exhausted"); 1424264790Sbaptyyabort_nomem: 1425264790Sbapt#endif /* YYBTYACC */ 1426264790Sbapt yyresult = 2; 1427264790Sbapt goto yyreturn; 1428264790Sbapt 1429264790Sbaptyyabort: 1430264790Sbapt yyresult = 1; 1431264790Sbapt goto yyreturn; 1432264790Sbapt 1433264790Sbaptyyaccept: 1434264790Sbapt#if YYBTYACC 1435264790Sbapt if (yyps->save) goto yyvalid; 1436264790Sbapt#endif /* YYBTYACC */ 1437264790Sbapt yyresult = 0; 1438264790Sbapt 1439264790Sbaptyyreturn: 1440264790Sbapt#if defined(YYDESTRUCT_CALL) 1441264790Sbapt if (yychar != YYEOF && yychar != YYEMPTY) 1442264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1443264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1444264790Sbapt#else 1445264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1446264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1447264790Sbapt 1448264790Sbapt { 1449264790Sbapt YYSTYPE *pv; 1450264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1451264790Sbapt YYLTYPE *pp; 1452264790Sbapt 1453264790Sbapt for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1454264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1455264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1456264790Sbapt#else 1457264790Sbapt for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1458264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1459264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1460264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1461264790Sbapt } 1462264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1463264790Sbapt 1464264790Sbapt#if YYBTYACC 1465264790Sbapt if (yyerrctx) 1466264790Sbapt { 1467264790Sbapt yyFreeState(yyerrctx); 1468264790Sbapt yyerrctx = NULL; 1469264790Sbapt } 1470264790Sbapt while (yyps) 1471264790Sbapt { 1472264790Sbapt YYParseState *save = yyps; 1473264790Sbapt yyps = save->save; 1474264790Sbapt save->save = NULL; 1475264790Sbapt yyFreeState(save); 1476264790Sbapt } 1477264790Sbapt while (yypath) 1478264790Sbapt { 1479264790Sbapt YYParseState *save = yypath; 1480264790Sbapt yypath = save->save; 1481264790Sbapt save->save = NULL; 1482264790Sbapt yyFreeState(save); 1483264790Sbapt } 1484264790Sbapt#endif /* YYBTYACC */ 1485264790Sbapt yyfreestack(&yystack); 1486264790Sbapt return (yyresult); 1487264790Sbapt} 1488