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