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