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