1264790Sbapt/* original parser id follows */ 2264790Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3272955Srodrigc/* (use YYMAJOR/YYMINOR for ifdefs dependent of 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_calc_parse 22264790Sbapt#endif /* yyparse */ 23264790Sbapt 24264790Sbapt#ifndef yylex 25264790Sbapt#define yylex quote_calc_lex 26264790Sbapt#endif /* yylex */ 27264790Sbapt 28264790Sbapt#ifndef yyerror 29264790Sbapt#define yyerror quote_calc_error 30264790Sbapt#endif /* yyerror */ 31264790Sbapt 32264790Sbapt#ifndef yychar 33264790Sbapt#define yychar quote_calc_char 34264790Sbapt#endif /* yychar */ 35264790Sbapt 36264790Sbapt#ifndef yyval 37264790Sbapt#define yyval quote_calc_val 38264790Sbapt#endif /* yyval */ 39264790Sbapt 40264790Sbapt#ifndef yylval 41264790Sbapt#define yylval quote_calc_lval 42264790Sbapt#endif /* yylval */ 43264790Sbapt 44264790Sbapt#ifndef yydebug 45264790Sbapt#define yydebug quote_calc_debug 46264790Sbapt#endif /* yydebug */ 47264790Sbapt 48264790Sbapt#ifndef yynerrs 49264790Sbapt#define yynerrs quote_calc_nerrs 50264790Sbapt#endif /* yynerrs */ 51264790Sbapt 52264790Sbapt#ifndef yyerrflag 53264790Sbapt#define yyerrflag quote_calc_errflag 54264790Sbapt#endif /* yyerrflag */ 55264790Sbapt 56264790Sbapt#ifndef yylhs 57264790Sbapt#define yylhs quote_calc_lhs 58264790Sbapt#endif /* yylhs */ 59264790Sbapt 60264790Sbapt#ifndef yylen 61264790Sbapt#define yylen quote_calc_len 62264790Sbapt#endif /* yylen */ 63264790Sbapt 64264790Sbapt#ifndef yydefred 65264790Sbapt#define yydefred quote_calc_defred 66264790Sbapt#endif /* yydefred */ 67264790Sbapt 68264790Sbapt#ifndef yystos 69264790Sbapt#define yystos quote_calc_stos 70264790Sbapt#endif /* yystos */ 71264790Sbapt 72264790Sbapt#ifndef yydgoto 73264790Sbapt#define yydgoto quote_calc_dgoto 74264790Sbapt#endif /* yydgoto */ 75264790Sbapt 76264790Sbapt#ifndef yysindex 77264790Sbapt#define yysindex quote_calc_sindex 78264790Sbapt#endif /* yysindex */ 79264790Sbapt 80264790Sbapt#ifndef yyrindex 81264790Sbapt#define yyrindex quote_calc_rindex 82264790Sbapt#endif /* yyrindex */ 83264790Sbapt 84264790Sbapt#ifndef yygindex 85264790Sbapt#define yygindex quote_calc_gindex 86264790Sbapt#endif /* yygindex */ 87264790Sbapt 88264790Sbapt#ifndef yytable 89264790Sbapt#define yytable quote_calc_table 90264790Sbapt#endif /* yytable */ 91264790Sbapt 92264790Sbapt#ifndef yycheck 93264790Sbapt#define yycheck quote_calc_check 94264790Sbapt#endif /* yycheck */ 95264790Sbapt 96264790Sbapt#ifndef yyname 97264790Sbapt#define yyname quote_calc_name 98264790Sbapt#endif /* yyname */ 99264790Sbapt 100264790Sbapt#ifndef yyrule 101264790Sbapt#define yyrule quote_calc_rule 102264790Sbapt#endif /* yyrule */ 103264790Sbapt 104264790Sbapt#if YYBTYACC 105264790Sbapt 106264790Sbapt#ifndef yycindex 107264790Sbapt#define yycindex quote_calc_cindex 108264790Sbapt#endif /* yycindex */ 109264790Sbapt 110264790Sbapt#ifndef yyctable 111264790Sbapt#define yyctable quote_calc_ctable 112264790Sbapt#endif /* yyctable */ 113264790Sbapt 114264790Sbapt#endif /* YYBTYACC */ 115264790Sbapt 116264790Sbapt#define YYPREFIX "quote_calc_" 117264790Sbapt 118264790Sbapt#define YYPURE 0 119264790Sbapt 120264790Sbapt#line 2 "quote_calc.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_calc-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_calc_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_calc_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_calc_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}; 194264790Sbaptstatic const YYINT quote_calc_stos[] = { 0, 195264790Sbapt 273, 256, 259, 269, 270, 40, 274, 275, 276, 10, 196264790Sbapt 270, 275, 61, 275, 10, 257, 259, 261, 263, 265, 197264790Sbapt 267, 124, 269, 275, 41, 275, 275, 275, 275, 275, 198264790Sbapt 275, 275, 199264790Sbapt}; 200264790Sbaptstatic const YYINT quote_calc_dgoto[] = { 1, 201264790Sbapt 7, 8, 9, 202264790Sbapt}; 203264790Sbaptstatic const YYINT quote_calc_sindex[] = { 0, 204264790Sbapt -38, 5, -36, 0, -51, -36, 7, -121, -248, 0, 205264790Sbapt 0, -243, -36, -22, 0, -36, -36, -36, -36, -36, 206264790Sbapt -36, -36, 0, -121, 0, -121, -121, -121, -121, -121, 207264790Sbapt -121, -243, 208264790Sbapt}; 209264790Sbaptstatic const YYINT quote_calc_rindex[] = { 0, 210264790Sbapt 0, 0, 0, 0, -9, 0, 0, 13, -10, 0, 211264790Sbapt 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 212264790Sbapt 0, 0, 0, 15, 0, -3, -2, -1, 1, 2, 213264790Sbapt 3, -4, 214264790Sbapt}; 215264790Sbapt#if YYBTYACC 216264790Sbaptstatic const YYINT quote_calc_cindex[] = { 0, 217264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220264790Sbapt 0, 0, 221264790Sbapt}; 222264790Sbapt#endif 223264790Sbaptstatic const YYINT quote_calc_gindex[] = { 0, 224264790Sbapt 0, 42, 0, 225264790Sbapt}; 226264790Sbapt#define YYTABLESIZE 258 227264790Sbaptstatic const YYINT quote_calc_table[] = { 16, 228264790Sbapt 15, 6, 22, 6, 14, 13, 7, 8, 9, 13, 229264790Sbapt 10, 11, 12, 16, 10, 17, 15, 18, 25, 19, 230264790Sbapt 23, 20, 4, 21, 5, 0, 0, 0, 0, 0, 231264790Sbapt 16, 0, 0, 0, 0, 14, 13, 7, 8, 9, 232264790Sbapt 0, 10, 11, 12, 12, 0, 0, 14, 0, 0, 233264790Sbapt 0, 0, 0, 0, 24, 0, 0, 26, 27, 28, 234264790Sbapt 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 235264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238264790Sbapt 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 239264790Sbapt 0, 0, 0, 16, 15, 0, 0, 0, 14, 13, 240264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241264790Sbapt 0, 0, 0, 0, 0, 16, 0, 17, 0, 18, 242264790Sbapt 0, 19, 0, 20, 0, 21, 0, 0, 0, 0, 243264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244264790Sbapt 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 250264790Sbapt 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 251264790Sbapt 4, 5, 4, 11, 16, 0, 17, 0, 18, 0, 252264790Sbapt 19, 0, 20, 0, 21, 0, 16, 15, 16, 15, 253264790Sbapt 16, 15, 16, 15, 16, 15, 16, 15, 254264790Sbapt}; 255264790Sbaptstatic const YYINT quote_calc_check[] = { 10, 256264790Sbapt 10, 40, 124, 40, 10, 10, 10, 10, 10, 61, 257264790Sbapt 10, 10, 10, 257, 10, 259, 10, 261, 41, 263, 258264790Sbapt 269, 265, 10, 267, 10, -1, -1, -1, -1, -1, 259264790Sbapt 41, -1, -1, -1, -1, 41, 41, 41, 41, 41, 260264790Sbapt -1, 41, 41, 41, 3, -1, -1, 6, -1, -1, 261264790Sbapt -1, -1, -1, -1, 13, -1, -1, 16, 17, 18, 262264790Sbapt 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, 263264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 264264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266264790Sbapt -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 267264790Sbapt -1, -1, -1, 124, 124, -1, -1, -1, 124, 124, 268264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269264790Sbapt -1, -1, -1, -1, -1, 257, -1, 259, -1, 261, 270264790Sbapt -1, 263, -1, 265, -1, 267, -1, -1, -1, -1, 271264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272264790Sbapt -1, -1, -1, -1, -1, -1, -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, 256, -1, -1, 278264790Sbapt 259, -1, 259, -1, -1, -1, -1, -1, -1, -1, 279264790Sbapt 269, 270, 269, 270, 257, -1, 259, -1, 261, -1, 280264790Sbapt 263, -1, 265, -1, 267, -1, 257, 257, 259, 259, 281264790Sbapt 261, 261, 263, 263, 265, 265, 267, 267, 282264790Sbapt}; 283272955Srodrigc#if YYBTYACC 284272955Srodrigcstatic const YYINT quote_calc_ctable[] = { -1, 285272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310272955Srodrigc -1, -1, -1, -1, -1, -1, -1, 311272955Srodrigc}; 312272955Srodrigc#endif 313264790Sbapt#define YYFINAL 1 314264790Sbapt#ifndef YYDEBUG 315264790Sbapt#define YYDEBUG 0 316264790Sbapt#endif 317264790Sbapt#define YYMAXTOKEN 271 318264790Sbapt#define YYUNDFTOKEN 277 319264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 320264790Sbapt#if YYDEBUG 321264790Sbaptstatic const char *const quote_calc_name[] = { 322264790Sbapt 323264790Sbapt"$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, 324264790Sbapt0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0, 325264790Sbapt0,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, 326264790Sbapt0,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, 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,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,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,"error","OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_DIV", 331264790Sbapt"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS", 332264790Sbapt"$accept","list","stat","expr","number","illegal-symbol", 333264790Sbapt}; 334264790Sbaptstatic const char *const quote_calc_rule[] = { 335264790Sbapt"$accept : list", 336264790Sbapt"list :", 337264790Sbapt"list : list stat '\\n'", 338264790Sbapt"list : list error '\\n'", 339264790Sbapt"stat : expr", 340264790Sbapt"stat : LETTER '=' expr", 341264790Sbapt"expr : '(' expr ')'", 342264790Sbapt"expr : expr OP_ADD expr", 343264790Sbapt"expr : expr OP_SUB expr", 344264790Sbapt"expr : expr OP_MUL expr", 345264790Sbapt"expr : expr OP_DIV expr", 346264790Sbapt"expr : expr OP_MOD expr", 347264790Sbapt"expr : expr OP_AND expr", 348264790Sbapt"expr : expr '|' expr", 349264790Sbapt"expr : OP_SUB expr", 350264790Sbapt"expr : LETTER", 351264790Sbapt"expr : number", 352264790Sbapt"number : DIGIT", 353264790Sbapt"number : number DIGIT", 354264790Sbapt 355264790Sbapt}; 356264790Sbapt#endif 357264790Sbapt 358264790Sbaptint yydebug; 359264790Sbaptint yynerrs; 360264790Sbapt 361264790Sbaptint yyerrflag; 362264790Sbaptint yychar; 363264790SbaptYYSTYPE yyval; 364264790SbaptYYSTYPE yylval; 365264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 366264790SbaptYYLTYPE yyloc; /* position returned by actions */ 367264790SbaptYYLTYPE yylloc; /* position from the lexer */ 368264790Sbapt#endif 369264790Sbapt 370264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 371264790Sbapt#ifndef YYLLOC_DEFAULT 372264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \ 373264790Sbaptdo \ 374264790Sbapt{ \ 375264790Sbapt if (n == 0) \ 376264790Sbapt { \ 377264790Sbapt (loc).first_line = ((rhs)[-1]).last_line; \ 378264790Sbapt (loc).first_column = ((rhs)[-1]).last_column; \ 379264790Sbapt (loc).last_line = ((rhs)[-1]).last_line; \ 380264790Sbapt (loc).last_column = ((rhs)[-1]).last_column; \ 381264790Sbapt } \ 382264790Sbapt else \ 383264790Sbapt { \ 384264790Sbapt (loc).first_line = ((rhs)[ 0 ]).first_line; \ 385264790Sbapt (loc).first_column = ((rhs)[ 0 ]).first_column; \ 386264790Sbapt (loc).last_line = ((rhs)[n-1]).last_line; \ 387264790Sbapt (loc).last_column = ((rhs)[n-1]).last_column; \ 388264790Sbapt } \ 389264790Sbapt} while (0) 390264790Sbapt#endif /* YYLLOC_DEFAULT */ 391264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 392264790Sbapt#if YYBTYACC 393264790Sbapt 394264790Sbapt#ifndef YYLVQUEUEGROWTH 395264790Sbapt#define YYLVQUEUEGROWTH 32 396264790Sbapt#endif 397264790Sbapt#endif /* YYBTYACC */ 398264790Sbapt 399264790Sbapt/* define the initial stack-sizes */ 400264790Sbapt#ifdef YYSTACKSIZE 401264790Sbapt#undef YYMAXDEPTH 402264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 403264790Sbapt#else 404264790Sbapt#ifdef YYMAXDEPTH 405264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 406264790Sbapt#else 407264790Sbapt#define YYSTACKSIZE 10000 408264790Sbapt#define YYMAXDEPTH 10000 409264790Sbapt#endif 410264790Sbapt#endif 411264790Sbapt 412264790Sbapt#ifndef YYINITSTACKSIZE 413264790Sbapt#define YYINITSTACKSIZE 200 414264790Sbapt#endif 415264790Sbapt 416264790Sbapttypedef struct { 417264790Sbapt unsigned stacksize; 418264790Sbapt short *s_base; 419264790Sbapt short *s_mark; 420264790Sbapt short *s_last; 421264790Sbapt YYSTYPE *l_base; 422264790Sbapt YYSTYPE *l_mark; 423264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 424264790Sbapt YYLTYPE *p_base; 425264790Sbapt YYLTYPE *p_mark; 426264790Sbapt#endif 427264790Sbapt} YYSTACKDATA; 428264790Sbapt#if YYBTYACC 429264790Sbapt 430264790Sbaptstruct YYParseState_s 431264790Sbapt{ 432264790Sbapt struct YYParseState_s *save; /* Previously saved parser state */ 433264790Sbapt YYSTACKDATA yystack; /* saved parser stack */ 434264790Sbapt int state; /* saved parser state */ 435264790Sbapt int errflag; /* saved error recovery status */ 436264790Sbapt int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 437264790Sbapt YYINT ctry; /* saved index in yyctable[] for this conflict */ 438264790Sbapt}; 439264790Sbapttypedef struct YYParseState_s YYParseState; 440264790Sbapt#endif /* YYBTYACC */ 441264790Sbapt/* variables for the parser stack */ 442264790Sbaptstatic YYSTACKDATA yystack; 443264790Sbapt#if YYBTYACC 444264790Sbapt 445264790Sbapt/* Current parser state */ 446264790Sbaptstatic YYParseState *yyps = 0; 447264790Sbapt 448264790Sbapt/* yypath != NULL: do the full parse, starting at *yypath parser state. */ 449264790Sbaptstatic YYParseState *yypath = 0; 450264790Sbapt 451264790Sbapt/* Base of the lexical value queue */ 452264790Sbaptstatic YYSTYPE *yylvals = 0; 453264790Sbapt 454264790Sbapt/* Current position at lexical value queue */ 455264790Sbaptstatic YYSTYPE *yylvp = 0; 456264790Sbapt 457264790Sbapt/* End position of lexical value queue */ 458264790Sbaptstatic YYSTYPE *yylve = 0; 459264790Sbapt 460264790Sbapt/* The last allocated position at the lexical value queue */ 461264790Sbaptstatic YYSTYPE *yylvlim = 0; 462264790Sbapt 463264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 464264790Sbapt/* Base of the lexical position queue */ 465264790Sbaptstatic YYLTYPE *yylpsns = 0; 466264790Sbapt 467264790Sbapt/* Current position at lexical position queue */ 468264790Sbaptstatic YYLTYPE *yylpp = 0; 469264790Sbapt 470264790Sbapt/* End position of lexical position queue */ 471264790Sbaptstatic YYLTYPE *yylpe = 0; 472264790Sbapt 473264790Sbapt/* The last allocated position at the lexical position queue */ 474264790Sbaptstatic YYLTYPE *yylplim = 0; 475264790Sbapt#endif 476264790Sbapt 477264790Sbapt/* Current position at lexical token queue */ 478264790Sbaptstatic short *yylexp = 0; 479264790Sbapt 480264790Sbaptstatic short *yylexemes = 0; 481264790Sbapt#endif /* YYBTYACC */ 482264790Sbapt#line 73 "quote_calc.y" 483264790Sbapt /* start of programs */ 484264790Sbapt 485264790Sbaptint 486264790Sbaptmain (void) 487264790Sbapt{ 488264790Sbapt while(!feof(stdin)) { 489264790Sbapt yyparse(); 490264790Sbapt } 491264790Sbapt return 0; 492264790Sbapt} 493264790Sbapt 494264790Sbaptstatic void 495264790Sbaptyyerror(const char *s) 496264790Sbapt{ 497264790Sbapt fprintf(stderr, "%s\n", s); 498264790Sbapt} 499264790Sbapt 500264790Sbaptint 501264790Sbaptyylex(void) { 502264790Sbapt /* lexical analysis routine */ 503264790Sbapt /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 504264790Sbapt /* return DIGIT for a digit, yylval = 0 through 9 */ 505264790Sbapt /* all other characters are returned immediately */ 506264790Sbapt 507264790Sbapt int c; 508264790Sbapt 509264790Sbapt while( (c=getchar()) == ' ' ) { /* skip blanks */ } 510264790Sbapt 511264790Sbapt /* c is now nonblank */ 512264790Sbapt 513264790Sbapt if( islower( c )) { 514264790Sbapt yylval = c - 'a'; 515264790Sbapt return ( LETTER ); 516264790Sbapt } 517264790Sbapt if( isdigit( c )) { 518264790Sbapt yylval = c - '0'; 519264790Sbapt return ( DIGIT ); 520264790Sbapt } 521264790Sbapt return( c ); 522264790Sbapt} 523272955Srodrigc#line 524 "quote_calc-s.tab.c" 524264790Sbapt 525264790Sbapt/* For use in generated program */ 526264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base) 527264790Sbapt#if YYBTYACC 528264790Sbapt#define yytrial (yyps->save) 529264790Sbapt#endif /* YYBTYACC */ 530264790Sbapt 531264790Sbapt#if YYDEBUG 532272955Srodrigc#include <stdio.h> /* needed for printf */ 533264790Sbapt#endif 534264790Sbapt 535272955Srodrigc#include <stdlib.h> /* needed for malloc, etc */ 536272955Srodrigc#include <string.h> /* needed for memset */ 537264790Sbapt 538264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 539264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 540264790Sbapt{ 541264790Sbapt int i; 542264790Sbapt unsigned newsize; 543264790Sbapt short *newss; 544264790Sbapt YYSTYPE *newvs; 545264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 546264790Sbapt YYLTYPE *newps; 547264790Sbapt#endif 548264790Sbapt 549264790Sbapt if ((newsize = data->stacksize) == 0) 550264790Sbapt newsize = YYINITSTACKSIZE; 551264790Sbapt else if (newsize >= YYMAXDEPTH) 552264790Sbapt return YYENOMEM; 553264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 554264790Sbapt newsize = YYMAXDEPTH; 555264790Sbapt 556264790Sbapt i = (int) (data->s_mark - data->s_base); 557264790Sbapt newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 558264790Sbapt if (newss == 0) 559264790Sbapt return YYENOMEM; 560264790Sbapt 561264790Sbapt data->s_base = newss; 562264790Sbapt data->s_mark = newss + i; 563264790Sbapt 564264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 565264790Sbapt if (newvs == 0) 566264790Sbapt return YYENOMEM; 567264790Sbapt 568264790Sbapt data->l_base = newvs; 569264790Sbapt data->l_mark = newvs + i; 570264790Sbapt 571264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 572264790Sbapt newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 573264790Sbapt if (newps == 0) 574264790Sbapt return YYENOMEM; 575264790Sbapt 576264790Sbapt data->p_base = newps; 577264790Sbapt data->p_mark = newps + i; 578264790Sbapt#endif 579264790Sbapt 580264790Sbapt data->stacksize = newsize; 581264790Sbapt data->s_last = data->s_base + newsize - 1; 582264790Sbapt 583264790Sbapt#if YYDEBUG 584264790Sbapt if (yydebug) 585264790Sbapt fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 586264790Sbapt#endif 587264790Sbapt return 0; 588264790Sbapt} 589264790Sbapt 590264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 591264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 592264790Sbapt{ 593264790Sbapt free(data->s_base); 594264790Sbapt free(data->l_base); 595264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 596264790Sbapt free(data->p_base); 597264790Sbapt#endif 598264790Sbapt memset(data, 0, sizeof(*data)); 599264790Sbapt} 600264790Sbapt#else 601264790Sbapt#define yyfreestack(data) /* nothing */ 602264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */ 603264790Sbapt#if YYBTYACC 604264790Sbapt 605264790Sbaptstatic YYParseState * 606264790SbaptyyNewState(unsigned size) 607264790Sbapt{ 608264790Sbapt YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 609264790Sbapt if (p == NULL) return NULL; 610264790Sbapt 611264790Sbapt p->yystack.stacksize = size; 612264790Sbapt if (size == 0) 613264790Sbapt { 614264790Sbapt p->yystack.s_base = NULL; 615264790Sbapt p->yystack.l_base = NULL; 616264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 617264790Sbapt p->yystack.p_base = NULL; 618264790Sbapt#endif 619264790Sbapt return p; 620264790Sbapt } 621264790Sbapt p->yystack.s_base = (short *) malloc(size * sizeof(short)); 622264790Sbapt if (p->yystack.s_base == NULL) return NULL; 623264790Sbapt p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 624264790Sbapt if (p->yystack.l_base == NULL) return NULL; 625264790Sbapt memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 626264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 627264790Sbapt p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 628264790Sbapt if (p->yystack.p_base == NULL) return NULL; 629264790Sbapt memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 630264790Sbapt#endif 631264790Sbapt 632264790Sbapt return p; 633264790Sbapt} 634264790Sbapt 635264790Sbaptstatic void 636264790SbaptyyFreeState(YYParseState *p) 637264790Sbapt{ 638264790Sbapt yyfreestack(&p->yystack); 639264790Sbapt free(p); 640264790Sbapt} 641264790Sbapt#endif /* YYBTYACC */ 642264790Sbapt 643264790Sbapt#define YYABORT goto yyabort 644264790Sbapt#define YYREJECT goto yyabort 645264790Sbapt#define YYACCEPT goto yyaccept 646264790Sbapt#define YYERROR goto yyerrlab 647264790Sbapt#if YYBTYACC 648264790Sbapt#define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 649264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \ 650264790Sbapt yyps->save->save == 0) goto yyvalid; } while(0) 651264790Sbapt#endif /* YYBTYACC */ 652264790Sbapt 653264790Sbaptint 654264790SbaptYYPARSE_DECL() 655264790Sbapt{ 656264790Sbapt int yym, yyn, yystate, yyresult; 657264790Sbapt#if YYBTYACC 658264790Sbapt int yynewerrflag; 659264790Sbapt YYParseState *yyerrctx = NULL; 660264790Sbapt#endif /* YYBTYACC */ 661264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 662264790Sbapt YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 663264790Sbapt#endif 664264790Sbapt#if YYDEBUG 665264790Sbapt const char *yys; 666264790Sbapt 667264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 668264790Sbapt { 669264790Sbapt yyn = *yys; 670264790Sbapt if (yyn >= '0' && yyn <= '9') 671264790Sbapt yydebug = yyn - '0'; 672264790Sbapt } 673264790Sbapt if (yydebug) 674264790Sbapt fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 675264790Sbapt#endif 676264790Sbapt 677264790Sbapt#if YYBTYACC 678264790Sbapt yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 679264790Sbapt yyps->save = 0; 680264790Sbapt#endif /* YYBTYACC */ 681264790Sbapt yynerrs = 0; 682264790Sbapt yyerrflag = 0; 683264790Sbapt yychar = YYEMPTY; 684264790Sbapt yystate = 0; 685264790Sbapt 686264790Sbapt#if YYPURE 687264790Sbapt memset(&yystack, 0, sizeof(yystack)); 688264790Sbapt#endif 689264790Sbapt 690264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 691264790Sbapt yystack.s_mark = yystack.s_base; 692264790Sbapt yystack.l_mark = yystack.l_base; 693264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 694264790Sbapt yystack.p_mark = yystack.p_base; 695264790Sbapt#endif 696264790Sbapt yystate = 0; 697264790Sbapt *yystack.s_mark = 0; 698264790Sbapt 699264790Sbaptyyloop: 700264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 701264790Sbapt if (yychar < 0) 702264790Sbapt { 703264790Sbapt#if YYBTYACC 704264790Sbapt do { 705264790Sbapt if (yylvp < yylve) 706264790Sbapt { 707264790Sbapt /* we're currently re-reading tokens */ 708264790Sbapt yylval = *yylvp++; 709264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 710264790Sbapt yylloc = *yylpp++; 711264790Sbapt#endif 712264790Sbapt yychar = *yylexp++; 713264790Sbapt break; 714264790Sbapt } 715264790Sbapt if (yyps->save) 716264790Sbapt { 717264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 718264790Sbapt if (yylvp == yylvlim) 719264790Sbapt { /* Enlarge lexical value queue */ 720272955Srodrigc size_t p = (size_t) (yylvp - yylvals); 721272955Srodrigc size_t s = (size_t) (yylvlim - yylvals); 722264790Sbapt 723264790Sbapt s += YYLVQUEUEGROWTH; 724264790Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem; 725264790Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 726264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 727264790Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 728264790Sbapt#endif 729264790Sbapt yylvp = yylve = yylvals + p; 730264790Sbapt yylvlim = yylvals + s; 731264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 732264790Sbapt yylpp = yylpe = yylpsns + p; 733264790Sbapt yylplim = yylpsns + s; 734264790Sbapt#endif 735264790Sbapt yylexp = yylexemes + p; 736264790Sbapt } 737264790Sbapt *yylexp = (short) YYLEX; 738264790Sbapt *yylvp++ = yylval; 739264790Sbapt yylve++; 740264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 741264790Sbapt *yylpp++ = yylloc; 742264790Sbapt yylpe++; 743264790Sbapt#endif 744264790Sbapt yychar = *yylexp++; 745264790Sbapt break; 746264790Sbapt } 747264790Sbapt /* normal operation, no conflict encountered */ 748264790Sbapt#endif /* YYBTYACC */ 749264790Sbapt yychar = YYLEX; 750264790Sbapt#if YYBTYACC 751264790Sbapt } while (0); 752264790Sbapt#endif /* YYBTYACC */ 753264790Sbapt if (yychar < 0) yychar = YYEOF; 754264790Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 755264790Sbapt#if YYDEBUG 756264790Sbapt if (yydebug) 757264790Sbapt { 758264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 759264790Sbapt fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 760264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 761264790Sbapt#ifdef YYSTYPE_TOSTRING 762264790Sbapt#if YYBTYACC 763264790Sbapt if (!yytrial) 764264790Sbapt#endif /* YYBTYACC */ 765264790Sbapt fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 766264790Sbapt#endif 767264790Sbapt fputc('\n', stderr); 768264790Sbapt } 769264790Sbapt#endif 770264790Sbapt } 771264790Sbapt#if YYBTYACC 772264790Sbapt 773264790Sbapt /* Do we have a conflict? */ 774264790Sbapt if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 775264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 776264790Sbapt { 777264790Sbapt YYINT ctry; 778264790Sbapt 779264790Sbapt if (yypath) 780264790Sbapt { 781264790Sbapt YYParseState *save; 782264790Sbapt#if YYDEBUG 783264790Sbapt if (yydebug) 784264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 785264790Sbapt YYDEBUGSTR, yydepth, yystate); 786264790Sbapt#endif 787264790Sbapt /* Switch to the next conflict context */ 788264790Sbapt save = yypath; 789264790Sbapt yypath = save->save; 790264790Sbapt save->save = NULL; 791264790Sbapt ctry = save->ctry; 792264790Sbapt if (save->state != yystate) YYABORT; 793264790Sbapt yyFreeState(save); 794264790Sbapt 795264790Sbapt } 796264790Sbapt else 797264790Sbapt { 798264790Sbapt 799264790Sbapt /* Unresolved conflict - start/continue trial parse */ 800264790Sbapt YYParseState *save; 801264790Sbapt#if YYDEBUG 802264790Sbapt if (yydebug) 803264790Sbapt { 804264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 805264790Sbapt if (yyps->save) 806264790Sbapt fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 807264790Sbapt else 808264790Sbapt fputs("Starting trial parse.\n", stderr); 809264790Sbapt } 810264790Sbapt#endif 811264790Sbapt save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 812264790Sbapt if (save == NULL) goto yyenomem; 813264790Sbapt save->save = yyps->save; 814264790Sbapt save->state = yystate; 815264790Sbapt save->errflag = yyerrflag; 816264790Sbapt save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 817272955Srodrigc memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 818264790Sbapt save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 819272955Srodrigc memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 820264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 821264790Sbapt save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 822272955Srodrigc memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 823264790Sbapt#endif 824264790Sbapt ctry = yytable[yyn]; 825264790Sbapt if (yyctable[ctry] == -1) 826264790Sbapt { 827264790Sbapt#if YYDEBUG 828264790Sbapt if (yydebug && yychar >= YYEOF) 829264790Sbapt fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 830264790Sbapt#endif 831264790Sbapt ctry++; 832264790Sbapt } 833264790Sbapt save->ctry = ctry; 834264790Sbapt if (yyps->save == NULL) 835264790Sbapt { 836264790Sbapt /* If this is a first conflict in the stack, start saving lexemes */ 837264790Sbapt if (!yylexemes) 838264790Sbapt { 839264790Sbapt yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short)); 840264790Sbapt if (yylexemes == NULL) goto yyenomem; 841264790Sbapt yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 842264790Sbapt if (yylvals == NULL) goto yyenomem; 843264790Sbapt yylvlim = yylvals + YYLVQUEUEGROWTH; 844264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 845264790Sbapt yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 846264790Sbapt if (yylpsns == NULL) goto yyenomem; 847264790Sbapt yylplim = yylpsns + YYLVQUEUEGROWTH; 848264790Sbapt#endif 849264790Sbapt } 850264790Sbapt if (yylvp == yylve) 851264790Sbapt { 852264790Sbapt yylvp = yylve = yylvals; 853264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 854264790Sbapt yylpp = yylpe = yylpsns; 855264790Sbapt#endif 856264790Sbapt yylexp = yylexemes; 857264790Sbapt if (yychar >= YYEOF) 858264790Sbapt { 859264790Sbapt *yylve++ = yylval; 860264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 861264790Sbapt *yylpe++ = yylloc; 862264790Sbapt#endif 863264790Sbapt *yylexp = (short) yychar; 864264790Sbapt yychar = YYEMPTY; 865264790Sbapt } 866264790Sbapt } 867264790Sbapt } 868264790Sbapt if (yychar >= YYEOF) 869264790Sbapt { 870264790Sbapt yylvp--; 871264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 872264790Sbapt yylpp--; 873264790Sbapt#endif 874264790Sbapt yylexp--; 875264790Sbapt yychar = YYEMPTY; 876264790Sbapt } 877272955Srodrigc save->lexeme = (int) (yylvp - yylvals); 878264790Sbapt yyps->save = save; 879264790Sbapt } 880264790Sbapt if (yytable[yyn] == ctry) 881264790Sbapt { 882264790Sbapt#if YYDEBUG 883264790Sbapt if (yydebug) 884264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 885264790Sbapt YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 886264790Sbapt#endif 887264790Sbapt if (yychar < 0) 888264790Sbapt { 889264790Sbapt yylvp++; 890264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 891264790Sbapt yylpp++; 892264790Sbapt#endif 893264790Sbapt yylexp++; 894264790Sbapt } 895264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 896264790Sbapt goto yyoverflow; 897264790Sbapt yystate = yyctable[ctry]; 898264790Sbapt *++yystack.s_mark = (short) yystate; 899264790Sbapt *++yystack.l_mark = yylval; 900264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 901264790Sbapt *++yystack.p_mark = yylloc; 902264790Sbapt#endif 903264790Sbapt yychar = YYEMPTY; 904264790Sbapt if (yyerrflag > 0) --yyerrflag; 905264790Sbapt goto yyloop; 906264790Sbapt } 907264790Sbapt else 908264790Sbapt { 909264790Sbapt yyn = yyctable[ctry]; 910264790Sbapt goto yyreduce; 911264790Sbapt } 912264790Sbapt } /* End of code dealing with conflicts */ 913264790Sbapt#endif /* YYBTYACC */ 914264790Sbapt if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 915264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 916264790Sbapt { 917264790Sbapt#if YYDEBUG 918264790Sbapt if (yydebug) 919264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 920264790Sbapt YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 921264790Sbapt#endif 922264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 923264790Sbapt yystate = yytable[yyn]; 924264790Sbapt *++yystack.s_mark = yytable[yyn]; 925264790Sbapt *++yystack.l_mark = yylval; 926264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 927264790Sbapt *++yystack.p_mark = yylloc; 928264790Sbapt#endif 929264790Sbapt yychar = YYEMPTY; 930264790Sbapt if (yyerrflag > 0) --yyerrflag; 931264790Sbapt goto yyloop; 932264790Sbapt } 933264790Sbapt if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 934264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 935264790Sbapt { 936264790Sbapt yyn = yytable[yyn]; 937264790Sbapt goto yyreduce; 938264790Sbapt } 939264790Sbapt if (yyerrflag != 0) goto yyinrecovery; 940264790Sbapt#if YYBTYACC 941264790Sbapt 942264790Sbapt yynewerrflag = 1; 943264790Sbapt goto yyerrhandler; 944264790Sbapt goto yyerrlab; 945264790Sbapt 946264790Sbaptyyerrlab: 947264790Sbapt yynewerrflag = 0; 948264790Sbaptyyerrhandler: 949264790Sbapt while (yyps->save) 950264790Sbapt { 951264790Sbapt int ctry; 952264790Sbapt YYParseState *save = yyps->save; 953264790Sbapt#if YYDEBUG 954264790Sbapt if (yydebug) 955264790Sbapt fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 956264790Sbapt YYDEBUGSTR, yydepth, yystate, yyps->save->state, 957264790Sbapt (int)(yylvp - yylvals - yyps->save->lexeme)); 958264790Sbapt#endif 959264790Sbapt /* Memorize most forward-looking error state in case it's really an error. */ 960264790Sbapt if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 961264790Sbapt { 962264790Sbapt /* Free old saved error context state */ 963264790Sbapt if (yyerrctx) yyFreeState(yyerrctx); 964264790Sbapt /* Create and fill out new saved error context state */ 965264790Sbapt yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 966264790Sbapt if (yyerrctx == NULL) goto yyenomem; 967264790Sbapt yyerrctx->save = yyps->save; 968264790Sbapt yyerrctx->state = yystate; 969264790Sbapt yyerrctx->errflag = yyerrflag; 970264790Sbapt yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 971272955Srodrigc memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 972264790Sbapt yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 973272955Srodrigc memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 974264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 975264790Sbapt yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 976272955Srodrigc memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 977264790Sbapt#endif 978272955Srodrigc yyerrctx->lexeme = (int) (yylvp - yylvals); 979264790Sbapt } 980264790Sbapt yylvp = yylvals + save->lexeme; 981264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 982264790Sbapt yylpp = yylpsns + save->lexeme; 983264790Sbapt#endif 984264790Sbapt yylexp = yylexemes + save->lexeme; 985264790Sbapt yychar = YYEMPTY; 986264790Sbapt yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 987272955Srodrigc memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 988264790Sbapt yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 989272955Srodrigc memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 990264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 991264790Sbapt yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 992272955Srodrigc memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 993264790Sbapt#endif 994264790Sbapt ctry = ++save->ctry; 995264790Sbapt yystate = save->state; 996264790Sbapt /* We tried shift, try reduce now */ 997264790Sbapt if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 998264790Sbapt yyps->save = save->save; 999264790Sbapt save->save = NULL; 1000264790Sbapt yyFreeState(save); 1001264790Sbapt 1002264790Sbapt /* Nothing left on the stack -- error */ 1003264790Sbapt if (!yyps->save) 1004264790Sbapt { 1005264790Sbapt#if YYDEBUG 1006264790Sbapt if (yydebug) 1007264790Sbapt fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1008264790Sbapt YYPREFIX, yydepth); 1009264790Sbapt#endif 1010264790Sbapt /* Restore state as it was in the most forward-advanced error */ 1011264790Sbapt yylvp = yylvals + yyerrctx->lexeme; 1012264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1013264790Sbapt yylpp = yylpsns + yyerrctx->lexeme; 1014264790Sbapt#endif 1015264790Sbapt yylexp = yylexemes + yyerrctx->lexeme; 1016264790Sbapt yychar = yylexp[-1]; 1017264790Sbapt yylval = yylvp[-1]; 1018264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1019264790Sbapt yylloc = yylpp[-1]; 1020264790Sbapt#endif 1021264790Sbapt yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1022272955Srodrigc memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1023264790Sbapt yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1024272955Srodrigc memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1025264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1026264790Sbapt yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1027272955Srodrigc memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1028264790Sbapt#endif 1029264790Sbapt yystate = yyerrctx->state; 1030264790Sbapt yyFreeState(yyerrctx); 1031264790Sbapt yyerrctx = NULL; 1032264790Sbapt } 1033264790Sbapt yynewerrflag = 1; 1034264790Sbapt } 1035264790Sbapt if (yynewerrflag == 0) goto yyinrecovery; 1036264790Sbapt#endif /* YYBTYACC */ 1037264790Sbapt 1038264790Sbapt YYERROR_CALL("syntax error"); 1039264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1040264790Sbapt yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 1041264790Sbapt#endif 1042264790Sbapt 1043264790Sbapt#if !YYBTYACC 1044264790Sbapt goto yyerrlab; 1045264790Sbaptyyerrlab: 1046264790Sbapt#endif 1047264790Sbapt ++yynerrs; 1048264790Sbapt 1049264790Sbaptyyinrecovery: 1050264790Sbapt if (yyerrflag < 3) 1051264790Sbapt { 1052264790Sbapt yyerrflag = 3; 1053264790Sbapt for (;;) 1054264790Sbapt { 1055264790Sbapt if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1056264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1057264790Sbapt { 1058264790Sbapt#if YYDEBUG 1059264790Sbapt if (yydebug) 1060264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1061264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1062264790Sbapt#endif 1063264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1064264790Sbapt yystate = yytable[yyn]; 1065264790Sbapt *++yystack.s_mark = yytable[yyn]; 1066264790Sbapt *++yystack.l_mark = yylval; 1067264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1068264790Sbapt /* lookahead position is error end position */ 1069264790Sbapt yyerror_loc_range[1] = yylloc; 1070264790Sbapt YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1071264790Sbapt *++yystack.p_mark = yyloc; 1072264790Sbapt#endif 1073264790Sbapt goto yyloop; 1074264790Sbapt } 1075264790Sbapt else 1076264790Sbapt { 1077264790Sbapt#if YYDEBUG 1078264790Sbapt if (yydebug) 1079264790Sbapt fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1080264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark); 1081264790Sbapt#endif 1082264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 1083264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1084264790Sbapt /* the current TOS position is the error start position */ 1085264790Sbapt yyerror_loc_range[0] = *yystack.p_mark; 1086264790Sbapt#endif 1087264790Sbapt#if defined(YYDESTRUCT_CALL) 1088264790Sbapt#if YYBTYACC 1089264790Sbapt if (!yytrial) 1090264790Sbapt#endif /* YYBTYACC */ 1091264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1092264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1093264790Sbapt yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1094264790Sbapt#else 1095264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1096264790Sbapt yystos[*yystack.s_mark], yystack.l_mark); 1097264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1098264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1099264790Sbapt --yystack.s_mark; 1100264790Sbapt --yystack.l_mark; 1101264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1102264790Sbapt --yystack.p_mark; 1103264790Sbapt#endif 1104264790Sbapt } 1105264790Sbapt } 1106264790Sbapt } 1107264790Sbapt else 1108264790Sbapt { 1109264790Sbapt if (yychar == YYEOF) goto yyabort; 1110264790Sbapt#if YYDEBUG 1111264790Sbapt if (yydebug) 1112264790Sbapt { 1113264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1114264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1115264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 1116264790Sbapt } 1117264790Sbapt#endif 1118264790Sbapt#if defined(YYDESTRUCT_CALL) 1119264790Sbapt#if YYBTYACC 1120264790Sbapt if (!yytrial) 1121264790Sbapt#endif /* YYBTYACC */ 1122264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1123264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1124264790Sbapt#else 1125264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1126264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1127264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1128264790Sbapt yychar = YYEMPTY; 1129264790Sbapt goto yyloop; 1130264790Sbapt } 1131264790Sbapt 1132264790Sbaptyyreduce: 1133264790Sbapt yym = yylen[yyn]; 1134264790Sbapt#if YYDEBUG 1135264790Sbapt if (yydebug) 1136264790Sbapt { 1137264790Sbapt fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1138264790Sbapt YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1139264790Sbapt#ifdef YYSTYPE_TOSTRING 1140264790Sbapt#if YYBTYACC 1141264790Sbapt if (!yytrial) 1142264790Sbapt#endif /* YYBTYACC */ 1143264790Sbapt if (yym > 0) 1144264790Sbapt { 1145264790Sbapt int i; 1146264790Sbapt fputc('<', stderr); 1147264790Sbapt for (i = yym; i > 0; i--) 1148264790Sbapt { 1149264790Sbapt if (i != yym) fputs(", ", stderr); 1150264790Sbapt fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1151264790Sbapt yystack.l_mark[1-i]), stderr); 1152264790Sbapt } 1153264790Sbapt fputc('>', stderr); 1154264790Sbapt } 1155264790Sbapt#endif 1156264790Sbapt fputc('\n', stderr); 1157264790Sbapt } 1158264790Sbapt#endif 1159264790Sbapt if (yym > 0) 1160264790Sbapt yyval = yystack.l_mark[1-yym]; 1161264790Sbapt else 1162264790Sbapt memset(&yyval, 0, sizeof yyval); 1163264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1164264790Sbapt 1165264790Sbapt /* Perform position reduction */ 1166264790Sbapt memset(&yyloc, 0, sizeof(yyloc)); 1167264790Sbapt#if YYBTYACC 1168264790Sbapt if (!yytrial) 1169264790Sbapt#endif /* YYBTYACC */ 1170264790Sbapt { 1171264790Sbapt YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1172264790Sbapt /* just in case YYERROR is invoked within the action, save 1173264790Sbapt the start of the rhs as the error start position */ 1174264790Sbapt yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1175264790Sbapt } 1176264790Sbapt#endif 1177264790Sbapt 1178264790Sbapt switch (yyn) 1179264790Sbapt { 1180264790Sbaptcase 3: 1181264790Sbapt#line 35 "quote_calc.y" 1182264790Sbapt { yyerrok ; } 1183264790Sbaptbreak; 1184264790Sbaptcase 4: 1185264790Sbapt#line 39 "quote_calc.y" 1186264790Sbapt { printf("%d\n",yystack.l_mark[0]);} 1187264790Sbaptbreak; 1188264790Sbaptcase 5: 1189264790Sbapt#line 41 "quote_calc.y" 1190264790Sbapt { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 1191264790Sbaptbreak; 1192264790Sbaptcase 6: 1193264790Sbapt#line 45 "quote_calc.y" 1194264790Sbapt { yyval = yystack.l_mark[-1]; } 1195264790Sbaptbreak; 1196264790Sbaptcase 7: 1197264790Sbapt#line 47 "quote_calc.y" 1198264790Sbapt { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 1199264790Sbaptbreak; 1200264790Sbaptcase 8: 1201264790Sbapt#line 49 "quote_calc.y" 1202264790Sbapt { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 1203264790Sbaptbreak; 1204264790Sbaptcase 9: 1205264790Sbapt#line 51 "quote_calc.y" 1206264790Sbapt { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 1207264790Sbaptbreak; 1208264790Sbaptcase 10: 1209264790Sbapt#line 53 "quote_calc.y" 1210264790Sbapt { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 1211264790Sbaptbreak; 1212264790Sbaptcase 11: 1213264790Sbapt#line 55 "quote_calc.y" 1214264790Sbapt { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 1215264790Sbaptbreak; 1216264790Sbaptcase 12: 1217264790Sbapt#line 57 "quote_calc.y" 1218264790Sbapt { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 1219264790Sbaptbreak; 1220264790Sbaptcase 13: 1221264790Sbapt#line 59 "quote_calc.y" 1222264790Sbapt { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 1223264790Sbaptbreak; 1224264790Sbaptcase 14: 1225264790Sbapt#line 61 "quote_calc.y" 1226264790Sbapt { yyval = - yystack.l_mark[0]; } 1227264790Sbaptbreak; 1228264790Sbaptcase 15: 1229264790Sbapt#line 63 "quote_calc.y" 1230264790Sbapt { yyval = regs[yystack.l_mark[0]]; } 1231264790Sbaptbreak; 1232264790Sbaptcase 17: 1233264790Sbapt#line 68 "quote_calc.y" 1234264790Sbapt { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 1235264790Sbaptbreak; 1236264790Sbaptcase 18: 1237264790Sbapt#line 70 "quote_calc.y" 1238264790Sbapt { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 1239264790Sbaptbreak; 1240272955Srodrigc#line 1241 "quote_calc-s.tab.c" 1241264790Sbapt default: 1242264790Sbapt break; 1243264790Sbapt } 1244264790Sbapt yystack.s_mark -= yym; 1245264790Sbapt yystate = *yystack.s_mark; 1246264790Sbapt yystack.l_mark -= yym; 1247264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1248264790Sbapt yystack.p_mark -= yym; 1249264790Sbapt#endif 1250264790Sbapt yym = yylhs[yyn]; 1251264790Sbapt if (yystate == 0 && yym == 0) 1252264790Sbapt { 1253264790Sbapt#if YYDEBUG 1254264790Sbapt if (yydebug) 1255264790Sbapt { 1256264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1257264790Sbapt#ifdef YYSTYPE_TOSTRING 1258264790Sbapt#if YYBTYACC 1259264790Sbapt if (!yytrial) 1260264790Sbapt#endif /* YYBTYACC */ 1261264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1262264790Sbapt#endif 1263264790Sbapt fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1264264790Sbapt } 1265264790Sbapt#endif 1266264790Sbapt yystate = YYFINAL; 1267264790Sbapt *++yystack.s_mark = YYFINAL; 1268264790Sbapt *++yystack.l_mark = yyval; 1269264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1270264790Sbapt *++yystack.p_mark = yyloc; 1271264790Sbapt#endif 1272264790Sbapt if (yychar < 0) 1273264790Sbapt { 1274264790Sbapt#if YYBTYACC 1275264790Sbapt do { 1276264790Sbapt if (yylvp < yylve) 1277264790Sbapt { 1278264790Sbapt /* we're currently re-reading tokens */ 1279264790Sbapt yylval = *yylvp++; 1280264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1281264790Sbapt yylloc = *yylpp++; 1282264790Sbapt#endif 1283264790Sbapt yychar = *yylexp++; 1284264790Sbapt break; 1285264790Sbapt } 1286264790Sbapt if (yyps->save) 1287264790Sbapt { 1288264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 1289264790Sbapt if (yylvp == yylvlim) 1290264790Sbapt { /* Enlarge lexical value queue */ 1291272955Srodrigc size_t p = (size_t) (yylvp - yylvals); 1292272955Srodrigc size_t s = (size_t) (yylvlim - yylvals); 1293264790Sbapt 1294264790Sbapt s += YYLVQUEUEGROWTH; 1295264790Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) 1296264790Sbapt goto yyenomem; 1297264790Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1298264790Sbapt goto yyenomem; 1299264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1300264790Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1301264790Sbapt goto yyenomem; 1302264790Sbapt#endif 1303264790Sbapt yylvp = yylve = yylvals + p; 1304264790Sbapt yylvlim = yylvals + s; 1305264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1306264790Sbapt yylpp = yylpe = yylpsns + p; 1307264790Sbapt yylplim = yylpsns + s; 1308264790Sbapt#endif 1309264790Sbapt yylexp = yylexemes + p; 1310264790Sbapt } 1311264790Sbapt *yylexp = (short) YYLEX; 1312264790Sbapt *yylvp++ = yylval; 1313264790Sbapt yylve++; 1314264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1315264790Sbapt *yylpp++ = yylloc; 1316264790Sbapt yylpe++; 1317264790Sbapt#endif 1318264790Sbapt yychar = *yylexp++; 1319264790Sbapt break; 1320264790Sbapt } 1321264790Sbapt /* normal operation, no conflict encountered */ 1322264790Sbapt#endif /* YYBTYACC */ 1323264790Sbapt yychar = YYLEX; 1324264790Sbapt#if YYBTYACC 1325264790Sbapt } while (0); 1326264790Sbapt#endif /* YYBTYACC */ 1327264790Sbapt if (yychar < 0) yychar = YYEOF; 1328264790Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 1329264790Sbapt#if YYDEBUG 1330264790Sbapt if (yydebug) 1331264790Sbapt { 1332264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1333264790Sbapt fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", 1334264790Sbapt YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1335264790Sbapt } 1336264790Sbapt#endif 1337264790Sbapt } 1338264790Sbapt if (yychar == YYEOF) goto yyaccept; 1339264790Sbapt goto yyloop; 1340264790Sbapt } 1341264790Sbapt if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1342264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1343264790Sbapt yystate = yytable[yyn]; 1344264790Sbapt else 1345264790Sbapt yystate = yydgoto[yym]; 1346264790Sbapt#if YYDEBUG 1347264790Sbapt if (yydebug) 1348264790Sbapt { 1349264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1350264790Sbapt#ifdef YYSTYPE_TOSTRING 1351264790Sbapt#if YYBTYACC 1352264790Sbapt if (!yytrial) 1353264790Sbapt#endif /* YYBTYACC */ 1354264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1355264790Sbapt#endif 1356264790Sbapt fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1357264790Sbapt } 1358264790Sbapt#endif 1359264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1360264790Sbapt *++yystack.s_mark = (short) yystate; 1361264790Sbapt *++yystack.l_mark = yyval; 1362264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1363264790Sbapt *++yystack.p_mark = yyloc; 1364264790Sbapt#endif 1365264790Sbapt goto yyloop; 1366264790Sbapt#if YYBTYACC 1367264790Sbapt 1368264790Sbapt /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1369264790Sbaptyyvalid: 1370264790Sbapt if (yypath) YYABORT; 1371264790Sbapt while (yyps->save) 1372264790Sbapt { 1373264790Sbapt YYParseState *save = yyps->save; 1374264790Sbapt yyps->save = save->save; 1375264790Sbapt save->save = yypath; 1376264790Sbapt yypath = save; 1377264790Sbapt } 1378264790Sbapt#if YYDEBUG 1379264790Sbapt if (yydebug) 1380264790Sbapt fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1381264790Sbapt YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1382264790Sbapt#endif 1383264790Sbapt if (yyerrctx) 1384264790Sbapt { 1385264790Sbapt yyFreeState(yyerrctx); 1386264790Sbapt yyerrctx = NULL; 1387264790Sbapt } 1388264790Sbapt yylvp = yylvals + yypath->lexeme; 1389264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1390264790Sbapt yylpp = yylpsns + yypath->lexeme; 1391264790Sbapt#endif 1392264790Sbapt yylexp = yylexemes + yypath->lexeme; 1393264790Sbapt yychar = YYEMPTY; 1394264790Sbapt yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1395272955Srodrigc memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1396264790Sbapt yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1397272955Srodrigc memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1398264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1399264790Sbapt yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1400272955Srodrigc memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1401264790Sbapt#endif 1402264790Sbapt yystate = yypath->state; 1403264790Sbapt goto yyloop; 1404264790Sbapt#endif /* YYBTYACC */ 1405264790Sbapt 1406264790Sbaptyyoverflow: 1407264790Sbapt YYERROR_CALL("yacc stack overflow"); 1408264790Sbapt#if YYBTYACC 1409264790Sbapt goto yyabort_nomem; 1410264790Sbaptyyenomem: 1411264790Sbapt YYERROR_CALL("memory exhausted"); 1412264790Sbaptyyabort_nomem: 1413264790Sbapt#endif /* YYBTYACC */ 1414264790Sbapt yyresult = 2; 1415264790Sbapt goto yyreturn; 1416264790Sbapt 1417264790Sbaptyyabort: 1418264790Sbapt yyresult = 1; 1419264790Sbapt goto yyreturn; 1420264790Sbapt 1421264790Sbaptyyaccept: 1422264790Sbapt#if YYBTYACC 1423264790Sbapt if (yyps->save) goto yyvalid; 1424264790Sbapt#endif /* YYBTYACC */ 1425264790Sbapt yyresult = 0; 1426264790Sbapt 1427264790Sbaptyyreturn: 1428264790Sbapt#if defined(YYDESTRUCT_CALL) 1429264790Sbapt if (yychar != YYEOF && yychar != YYEMPTY) 1430264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1431264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1432264790Sbapt#else 1433264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1434264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1435264790Sbapt 1436264790Sbapt { 1437264790Sbapt YYSTYPE *pv; 1438264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1439264790Sbapt YYLTYPE *pp; 1440264790Sbapt 1441264790Sbapt for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1442264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1443264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1444264790Sbapt#else 1445264790Sbapt for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1446264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1447264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1448264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1449264790Sbapt } 1450264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1451264790Sbapt 1452264790Sbapt#if YYBTYACC 1453264790Sbapt if (yyerrctx) 1454264790Sbapt { 1455264790Sbapt yyFreeState(yyerrctx); 1456264790Sbapt yyerrctx = NULL; 1457264790Sbapt } 1458264790Sbapt while (yyps) 1459264790Sbapt { 1460264790Sbapt YYParseState *save = yyps; 1461264790Sbapt yyps = save->save; 1462264790Sbapt save->save = NULL; 1463264790Sbapt yyFreeState(save); 1464264790Sbapt } 1465264790Sbapt while (yypath) 1466264790Sbapt { 1467264790Sbapt YYParseState *save = yypath; 1468264790Sbapt yypath = save->save; 1469264790Sbapt save->save = NULL; 1470264790Sbapt yyFreeState(save); 1471264790Sbapt } 1472264790Sbapt#endif /* YYBTYACC */ 1473264790Sbapt yyfreestack(&yystack); 1474264790Sbapt return (yyresult); 1475264790Sbapt} 1476