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 1 18264790Sbapt#define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug") 19264790Sbapt 20264790Sbapt#ifndef yyparse 21264790Sbapt#define yyparse calc1_parse 22264790Sbapt#endif /* yyparse */ 23264790Sbapt 24264790Sbapt#ifndef yylex 25264790Sbapt#define yylex calc1_lex 26264790Sbapt#endif /* yylex */ 27264790Sbapt 28264790Sbapt#ifndef yyerror 29264790Sbapt#define yyerror calc1_error 30264790Sbapt#endif /* yyerror */ 31264790Sbapt 32264790Sbapt#ifndef yychar 33264790Sbapt#define yychar calc1_char 34264790Sbapt#endif /* yychar */ 35264790Sbapt 36264790Sbapt#ifndef yyval 37264790Sbapt#define yyval calc1_val 38264790Sbapt#endif /* yyval */ 39264790Sbapt 40264790Sbapt#ifndef yylval 41264790Sbapt#define yylval calc1_lval 42264790Sbapt#endif /* yylval */ 43264790Sbapt 44264790Sbapt#ifndef yydebug 45264790Sbapt#define yydebug calc1_debug 46264790Sbapt#endif /* yydebug */ 47264790Sbapt 48264790Sbapt#ifndef yynerrs 49264790Sbapt#define yynerrs calc1_nerrs 50264790Sbapt#endif /* yynerrs */ 51264790Sbapt 52264790Sbapt#ifndef yyerrflag 53264790Sbapt#define yyerrflag calc1_errflag 54264790Sbapt#endif /* yyerrflag */ 55264790Sbapt 56264790Sbapt#ifndef yylhs 57264790Sbapt#define yylhs calc1_lhs 58264790Sbapt#endif /* yylhs */ 59264790Sbapt 60264790Sbapt#ifndef yylen 61264790Sbapt#define yylen calc1_len 62264790Sbapt#endif /* yylen */ 63264790Sbapt 64264790Sbapt#ifndef yydefred 65264790Sbapt#define yydefred calc1_defred 66264790Sbapt#endif /* yydefred */ 67264790Sbapt 68264790Sbapt#ifndef yystos 69264790Sbapt#define yystos calc1_stos 70264790Sbapt#endif /* yystos */ 71264790Sbapt 72264790Sbapt#ifndef yydgoto 73264790Sbapt#define yydgoto calc1_dgoto 74264790Sbapt#endif /* yydgoto */ 75264790Sbapt 76264790Sbapt#ifndef yysindex 77264790Sbapt#define yysindex calc1_sindex 78264790Sbapt#endif /* yysindex */ 79264790Sbapt 80264790Sbapt#ifndef yyrindex 81264790Sbapt#define yyrindex calc1_rindex 82264790Sbapt#endif /* yyrindex */ 83264790Sbapt 84264790Sbapt#ifndef yygindex 85264790Sbapt#define yygindex calc1_gindex 86264790Sbapt#endif /* yygindex */ 87264790Sbapt 88264790Sbapt#ifndef yytable 89264790Sbapt#define yytable calc1_table 90264790Sbapt#endif /* yytable */ 91264790Sbapt 92264790Sbapt#ifndef yycheck 93264790Sbapt#define yycheck calc1_check 94264790Sbapt#endif /* yycheck */ 95264790Sbapt 96264790Sbapt#ifndef yyname 97264790Sbapt#define yyname calc1_name 98264790Sbapt#endif /* yyname */ 99264790Sbapt 100264790Sbapt#ifndef yyrule 101264790Sbapt#define yyrule calc1_rule 102264790Sbapt#endif /* yyrule */ 103264790Sbapt 104264790Sbapt#if YYBTYACC 105264790Sbapt 106264790Sbapt#ifndef yycindex 107264790Sbapt#define yycindex calc1_cindex 108264790Sbapt#endif /* yycindex */ 109264790Sbapt 110264790Sbapt#ifndef yyctable 111264790Sbapt#define yyctable calc1_ctable 112264790Sbapt#endif /* yyctable */ 113264790Sbapt 114264790Sbapt#endif /* YYBTYACC */ 115264790Sbapt 116264790Sbapt#define YYPREFIX "calc1_" 117264790Sbapt 118264790Sbapt#define YYPURE 1 119264790Sbapt 120264790Sbapt#line 3 "btyacc_calc1.y" 121264790Sbapt 122264790Sbapt/* http://dinosaur.compilertools.net/yacc/index.html */ 123264790Sbapt 124264790Sbapt#include <stdlib.h> 125264790Sbapt#include <stdio.h> 126264790Sbapt#include <ctype.h> 127264790Sbapt#include <math.h> 128264790Sbapt 129264790Sbapttypedef struct interval 130264790Sbapt{ 131264790Sbapt double lo, hi; 132264790Sbapt} 133264790SbaptINTERVAL; 134264790Sbapt 135264790SbaptINTERVAL vmul(double, double, INTERVAL); 136264790SbaptINTERVAL vdiv(double, double, INTERVAL); 137264790Sbapt 138264790Sbaptint dcheck(INTERVAL); 139264790Sbapt 140264790Sbaptdouble dreg[26]; 141264790SbaptINTERVAL vreg[26]; 142264790Sbapt 143264790Sbapt#line 29 "btyacc_calc1.y" 144264790Sbapt#ifdef YYSTYPE 145264790Sbapt#undef YYSTYPE_IS_DECLARED 146264790Sbapt#define YYSTYPE_IS_DECLARED 1 147264790Sbapt#endif 148264790Sbapt#ifndef YYSTYPE_IS_DECLARED 149264790Sbapt#define YYSTYPE_IS_DECLARED 1 150264790Sbapttypedef union 151264790Sbapt{ 152264790Sbapt int ival; 153264790Sbapt double dval; 154264790Sbapt INTERVAL vval; 155264790Sbapt} YYSTYPE; 156264790Sbapt#endif /* !YYSTYPE_IS_DECLARED */ 157264790Sbapt#line 158 "btyacc_calc1.tab.c" 158264790Sbapt 159264790Sbapt/* compatibility with bison */ 160264790Sbapt#ifdef YYPARSE_PARAM 161264790Sbapt/* compatibility with FreeBSD */ 162264790Sbapt# ifdef YYPARSE_PARAM_TYPE 163264790Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 164264790Sbapt# else 165264790Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 166264790Sbapt# endif 167264790Sbapt#else 168264790Sbapt# define YYPARSE_DECL() yyparse(void) 169264790Sbapt#endif 170264790Sbapt 171264790Sbapt/* Parameters sent to lex. */ 172264790Sbapt#ifdef YYLEX_PARAM 173264790Sbapt# ifdef YYLEX_PARAM_TYPE 174264790Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM) 175264790Sbapt# else 176264790Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM) 177264790Sbapt# endif 178264790Sbapt# define YYLEX yylex(&yylval, YYLEX_PARAM) 179264790Sbapt#else 180264790Sbapt# define YYLEX_DECL() yylex(YYSTYPE *yylval) 181264790Sbapt# define YYLEX yylex(&yylval) 182264790Sbapt#endif 183264790Sbapt 184264790Sbapt/* Parameters sent to yyerror. */ 185264790Sbapt#ifndef YYERROR_DECL 186264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 187264790Sbapt#endif 188264790Sbapt#ifndef YYERROR_CALL 189264790Sbapt#define YYERROR_CALL(msg) yyerror(msg) 190264790Sbapt#endif 191264790Sbapt 192264790Sbaptextern int YYPARSE_DECL(); 193264790Sbapt 194264790Sbapt#define DREG 257 195264790Sbapt#define VREG 258 196264790Sbapt#define CONST 259 197264790Sbapt#define UMINUS 260 198264790Sbapt#define YYERRCODE 256 199264790Sbapttypedef short YYINT; 200264790Sbaptstatic const YYINT calc1_lhs[] = { -1, 201264790Sbapt 0, 0, 0, 3, 3, 3, 3, 1, 1, 1, 202264790Sbapt 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 203264790Sbapt 2, 2, 2, 2, 2, 2, 2, 2, 204264790Sbapt}; 205264790Sbaptstatic const YYINT calc1_len[] = { 2, 206264790Sbapt 0, 3, 3, 1, 1, 3, 3, 1, 1, 3, 207264790Sbapt 3, 3, 3, 2, 3, 1, 5, 1, 3, 3, 208264790Sbapt 3, 3, 3, 3, 3, 3, 2, 3, 209264790Sbapt}; 210264790Sbaptstatic const YYINT calc1_defred[] = { 1, 211264790Sbapt 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 212264790Sbapt 3, 0, 0, 9, 18, 0, 27, 0, 0, 0, 213264790Sbapt 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 214264790Sbapt 0, 0, 0, 15, 0, 28, 0, 0, 0, 0, 215264790Sbapt 0, 24, 0, 26, 0, 0, 23, 25, 14, 0, 216264790Sbapt 0, 0, 0, 0, 0, 0, 0, 12, 13, 17, 217264790Sbapt}; 218264790Sbaptstatic const YYINT calc1_stos[] = { 0, 219264790Sbapt 262, 256, 257, 258, 259, 45, 40, 263, 264, 265, 220264790Sbapt 10, 61, 61, 257, 258, 263, 264, 263, 264, 43, 221264790Sbapt 45, 42, 47, 43, 45, 42, 47, 10, 45, 40, 222264790Sbapt 263, 263, 264, 41, 44, 41, 263, 264, 263, 264, 223264790Sbapt 263, 264, 263, 264, 264, 264, 264, 264, 263, 263, 224264790Sbapt 43, 45, 42, 47, 263, 263, 263, 263, 263, 41, 225264790Sbapt}; 226264790Sbaptstatic const YYINT calc1_dgoto[] = { 1, 227264790Sbapt 32, 9, 10, 228264790Sbapt}; 229264790Sbaptstatic const YYINT calc1_sindex[] = { 0, 230264790Sbapt -40, -9, -59, -54, 0, -37, -37, 0, 82, 4, 231264790Sbapt 0, -34, -37, 0, 0, 0, 0, -31, -25, -37, 232264790Sbapt -37, -37, -37, -37, -37, -37, -37, 0, -34, -34, 233264790Sbapt 132, 0, 82, 0, -34, 0, 0, -12, 0, -12, 234264790Sbapt 0, 0, 0, 0, -12, -12, 0, 0, 0, 112, 235264790Sbapt -34, -34, -34, -34, 119, -11, -11, 0, 0, 0, 236264790Sbapt}; 237264790Sbaptstatic const YYINT calc1_rindex[] = { 0, 238264790Sbapt 0, 0, 51, 58, 0, 0, 0, 0, 11, 0, 239264790Sbapt 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 240264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241264790Sbapt 19, 9, 27, 0, 0, 0, -5, 41, -4, 77, 242264790Sbapt -2, 0, 8, 0, 78, 85, 0, 0, 0, 0, 243264790Sbapt 0, 0, 0, 0, 0, 92, 99, 0, 0, 0, 244264790Sbapt}; 245264790Sbapt#if YYBTYACC 246264790Sbaptstatic const YYINT calc1_cindex[] = { 0, 247264790Sbapt 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 248264790Sbapt 0, 0, 0, 0, 0, 2, 0, 126, 0, 0, 249264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250264790Sbapt 0, 138, 0, 0, 0, 0, 17, 0, 24, 0, 251264790Sbapt 31, 0, 38, 0, 0, 0, 0, 0, 0, 0, 252264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253264790Sbapt}; 254264790Sbapt#endif 255264790Sbaptstatic const YYINT calc1_gindex[] = { 0, 256264790Sbapt 3, 125, 0, 257264790Sbapt}; 258264790Sbapt#define YYTABLESIZE 225 259264790Sbaptstatic const YYINT calc1_table[] = { 7, 260264790Sbapt 11, 12, 7, 8, 6, 30, 13, 6, 16, 18, 261264790Sbapt 29, 14, 35, 28, 31, 36, 26, 24, 16, 25, 262264790Sbapt 5, 27, 37, 39, 41, 43, 20, 14, 6, 26, 263264790Sbapt 53, 49, 50, 23, 27, 54, 7, 55, 10, 11, 264264790Sbapt 26, 12, 14, 14, 14, 0, 14, 29, 14, 16, 265264790Sbapt 20, 13, 0, 56, 57, 58, 59, 20, 6, 20, 266264790Sbapt 9, 20, 0, 9, 23, 6, 23, 18, 23, 0, 267264790Sbapt 9, 26, 26, 26, 11, 26, 0, 26, 29, 29, 268264790Sbapt 29, 20, 29, 20, 29, 20, 22, 19, 0, 0, 269264790Sbapt 0, 0, 9, 9, 21, 9, 0, 9, 0, 18, 270264790Sbapt 18, 10, 18, 0, 18, 0, 6, 0, 11, 3, 271264790Sbapt 0, 9, 0, 0, 0, 0, 0, 22, 19, 22, 272264790Sbapt 19, 22, 19, 26, 24, 21, 25, 21, 27, 21, 273264790Sbapt 17, 19, 10, 0, 10, 0, 10, 33, 0, 11, 274264790Sbapt 0, 11, 0, 11, 38, 40, 42, 44, 45, 46, 275264790Sbapt 47, 48, 34, 53, 51, 0, 52, 0, 54, 60, 276264790Sbapt 53, 51, 0, 52, 0, 54, 18, 6, 0, 0, 277264790Sbapt 3, 0, 9, 53, 51, 0, 52, 0, 54, 6, 278264790Sbapt 0, 0, 3, 0, 9, 0, 0, 0, 0, 0, 279264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280264790Sbapt 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281264790Sbapt 0, 0, 0, 0, 0, 2, 3, 4, 5, 14, 282264790Sbapt 15, 5, 14, 0, 5, 283264790Sbapt}; 284264790Sbaptstatic const YYINT calc1_check[] = { 40, 285264790Sbapt 10, 61, 40, 1, 45, 40, 61, 45, 6, 7, 286264790Sbapt 45, 10, 44, 10, 12, 41, 42, 43, 10, 45, 287264790Sbapt 10, 47, 20, 21, 22, 23, 10, 44, 10, 42, 288264790Sbapt 42, 29, 30, 10, 47, 47, 10, 35, 44, 44, 289264790Sbapt 10, 44, 41, 42, 43, -1, 45, 10, 47, 41, 290264790Sbapt 10, 44, -1, 51, 52, 53, 54, 41, 42, 43, 291264790Sbapt 10, 45, -1, 47, 41, 42, 43, 10, 45, -1, 292264790Sbapt 47, 41, 42, 43, 10, 45, -1, 47, 41, 42, 293264790Sbapt 43, 41, 45, 43, 47, 45, 10, 10, -1, -1, 294264790Sbapt -1, -1, 42, 43, 10, 45, -1, 47, -1, 42, 295264790Sbapt 43, 10, 45, -1, 47, -1, 42, 43, 10, 45, 296264790Sbapt -1, 47, -1, -1, -1, -1, -1, 41, 41, 43, 297264790Sbapt 43, 45, 45, 42, 43, 41, 45, 43, 47, 45, 298264790Sbapt 6, 7, 41, -1, 43, -1, 45, 13, -1, 41, 299264790Sbapt -1, 43, -1, 45, 20, 21, 22, 23, 24, 25, 300264790Sbapt 26, 27, 41, 42, 43, -1, 45, -1, 47, 41, 301264790Sbapt 42, 43, -1, 45, -1, 47, 41, 42, 43, -1, 302264790Sbapt 45, -1, 47, 42, 43, -1, 45, -1, 47, 42, 303264790Sbapt 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, 304264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305264790Sbapt -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306264790Sbapt -1, -1, -1, -1, -1, 256, 257, 258, 259, 257, 307264790Sbapt 258, 259, 257, -1, 259, 308264790Sbapt}; 309264790Sbapt#if YYBTYACC 310264790Sbaptstatic const YYINT calc1_ctable[] = { 20, 311264790Sbapt 16, -1, 21, 16, -1, 22, 16, -1, 23, 16, 312264790Sbapt -1, 4, 16, -1, 14, 16, -1, 34, 16, -1, 313264790Sbapt 10, 16, -1, 11, 16, -1, 12, 16, -1, 13, 314272955Srodrigc 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, 315272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 318272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 321272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 322272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 325272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 326272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 327272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 328272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 329272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 330272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 331272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 332272955Srodrigc -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 333272955Srodrigc -1, -1, -1, -1, 334264790Sbapt}; 335264790Sbapt#endif 336264790Sbapt#define YYFINAL 1 337264790Sbapt#ifndef YYDEBUG 338264790Sbapt#define YYDEBUG 0 339264790Sbapt#endif 340264790Sbapt#define YYMAXTOKEN 260 341264790Sbapt#define YYUNDFTOKEN 266 342264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 343264790Sbapt#if YYDEBUG 344264790Sbaptstatic const char *const calc1_name[] = { 345264790Sbapt 346264790Sbapt"$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, 347264790Sbapt0,0,0,0,0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0, 348264790Sbapt0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 349264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 350264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 351264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 352264790Sbapt0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 353264790Sbapt"error","DREG","VREG","CONST","UMINUS","$accept","lines","dexp","vexp","line", 354264790Sbapt"illegal-symbol", 355264790Sbapt}; 356264790Sbaptstatic const char *const calc1_rule[] = { 357264790Sbapt"$accept : lines", 358264790Sbapt"lines :", 359264790Sbapt"lines : lines line '\\n'", 360264790Sbapt"lines : lines error '\\n'", 361264790Sbapt"line : dexp", 362264790Sbapt"line : vexp", 363264790Sbapt"line : DREG '=' dexp", 364264790Sbapt"line : VREG '=' vexp", 365264790Sbapt"dexp : CONST", 366264790Sbapt"dexp : DREG", 367264790Sbapt"dexp : dexp '+' dexp", 368264790Sbapt"dexp : dexp '-' dexp", 369264790Sbapt"dexp : dexp '*' dexp", 370264790Sbapt"dexp : dexp '/' dexp", 371264790Sbapt"dexp : '-' dexp", 372264790Sbapt"dexp : '(' dexp ')'", 373264790Sbapt"vexp : dexp", 374264790Sbapt"vexp : '(' dexp ',' dexp ')'", 375264790Sbapt"vexp : VREG", 376264790Sbapt"vexp : vexp '+' vexp", 377264790Sbapt"vexp : dexp '+' vexp", 378264790Sbapt"vexp : vexp '-' vexp", 379264790Sbapt"vexp : dexp '-' vexp", 380264790Sbapt"vexp : vexp '*' vexp", 381264790Sbapt"vexp : dexp '*' vexp", 382264790Sbapt"vexp : vexp '/' vexp", 383264790Sbapt"vexp : dexp '/' vexp", 384264790Sbapt"vexp : '-' vexp", 385264790Sbapt"vexp : '(' vexp ')'", 386264790Sbapt 387264790Sbapt}; 388264790Sbapt#endif 389264790Sbapt 390264790Sbaptint yydebug; 391264790Sbaptint yynerrs; 392264790Sbapt 393264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 394264790Sbapt#ifndef YYLLOC_DEFAULT 395264790Sbapt#define YYLLOC_DEFAULT(loc, rhs, n) \ 396264790Sbaptdo \ 397264790Sbapt{ \ 398264790Sbapt if (n == 0) \ 399264790Sbapt { \ 400264790Sbapt (loc).first_line = ((rhs)[-1]).last_line; \ 401264790Sbapt (loc).first_column = ((rhs)[-1]).last_column; \ 402264790Sbapt (loc).last_line = ((rhs)[-1]).last_line; \ 403264790Sbapt (loc).last_column = ((rhs)[-1]).last_column; \ 404264790Sbapt } \ 405264790Sbapt else \ 406264790Sbapt { \ 407264790Sbapt (loc).first_line = ((rhs)[ 0 ]).first_line; \ 408264790Sbapt (loc).first_column = ((rhs)[ 0 ]).first_column; \ 409264790Sbapt (loc).last_line = ((rhs)[n-1]).last_line; \ 410264790Sbapt (loc).last_column = ((rhs)[n-1]).last_column; \ 411264790Sbapt } \ 412264790Sbapt} while (0) 413264790Sbapt#endif /* YYLLOC_DEFAULT */ 414264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 415264790Sbapt#if YYBTYACC 416264790Sbapt 417264790Sbapt#ifndef YYLVQUEUEGROWTH 418264790Sbapt#define YYLVQUEUEGROWTH 32 419264790Sbapt#endif 420264790Sbapt#endif /* YYBTYACC */ 421264790Sbapt 422264790Sbapt/* define the initial stack-sizes */ 423264790Sbapt#ifdef YYSTACKSIZE 424264790Sbapt#undef YYMAXDEPTH 425264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 426264790Sbapt#else 427264790Sbapt#ifdef YYMAXDEPTH 428264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 429264790Sbapt#else 430264790Sbapt#define YYSTACKSIZE 10000 431264790Sbapt#define YYMAXDEPTH 10000 432264790Sbapt#endif 433264790Sbapt#endif 434264790Sbapt 435264790Sbapt#ifndef YYINITSTACKSIZE 436264790Sbapt#define YYINITSTACKSIZE 200 437264790Sbapt#endif 438264790Sbapt 439264790Sbapttypedef struct { 440264790Sbapt unsigned stacksize; 441264790Sbapt short *s_base; 442264790Sbapt short *s_mark; 443264790Sbapt short *s_last; 444264790Sbapt YYSTYPE *l_base; 445264790Sbapt YYSTYPE *l_mark; 446264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 447264790Sbapt YYLTYPE *p_base; 448264790Sbapt YYLTYPE *p_mark; 449264790Sbapt#endif 450264790Sbapt} YYSTACKDATA; 451264790Sbapt#if YYBTYACC 452264790Sbapt 453264790Sbaptstruct YYParseState_s 454264790Sbapt{ 455264790Sbapt struct YYParseState_s *save; /* Previously saved parser state */ 456264790Sbapt YYSTACKDATA yystack; /* saved parser stack */ 457264790Sbapt int state; /* saved parser state */ 458264790Sbapt int errflag; /* saved error recovery status */ 459264790Sbapt int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 460264790Sbapt YYINT ctry; /* saved index in yyctable[] for this conflict */ 461264790Sbapt}; 462264790Sbapttypedef struct YYParseState_s YYParseState; 463264790Sbapt#endif /* YYBTYACC */ 464264790Sbapt#line 174 "btyacc_calc1.y" 465264790Sbapt /* beginning of subroutines section */ 466264790Sbapt 467264790Sbaptint 468264790Sbaptmain (void) 469264790Sbapt{ 470264790Sbapt while(!feof(stdin)) { 471264790Sbapt yyparse(); 472264790Sbapt } 473264790Sbapt return 0; 474264790Sbapt} 475264790Sbapt 476264790Sbapt#define BSZ 50 /* buffer size for floating point numbers */ 477264790Sbapt 478264790Sbaptstatic void 479264790SbaptYYERROR_DECL() 480264790Sbapt{ 481264790Sbapt fprintf(stderr, "%s\n", s); 482264790Sbapt} 483264790Sbapt 484264790Sbapt /* lexical analysis */ 485264790Sbapt 486264790Sbaptstatic int 487264790SbaptYYLEX_DECL() 488264790Sbapt{ 489264790Sbapt int c; 490264790Sbapt 491264790Sbapt while ((c = getchar()) == ' ') 492264790Sbapt { /* skip over blanks */ 493264790Sbapt } 494264790Sbapt 495264790Sbapt if (isupper(c)) 496264790Sbapt { 497264790Sbapt#if YYPURE 498264790Sbapt (*yylval).ival = c - 'A'; 499264790Sbapt#else 500264790Sbapt yylval.ival = c - 'A'; 501264790Sbapt#endif 502264790Sbapt return (VREG); 503264790Sbapt } 504264790Sbapt if (islower(c)) 505264790Sbapt { 506264790Sbapt#if YYPURE 507264790Sbapt (*yylval).ival = c - 'a'; 508264790Sbapt#else 509264790Sbapt yylval.ival = c - 'a'; 510264790Sbapt#endif 511264790Sbapt return (DREG); 512264790Sbapt } 513264790Sbapt 514264790Sbapt if (isdigit(c) || c == '.') 515264790Sbapt { 516264790Sbapt /* gobble up digits, points, exponents */ 517264790Sbapt char buf[BSZ + 1], *cp = buf; 518264790Sbapt int dot = 0, expr = 0; 519264790Sbapt 520264790Sbapt for (; (cp - buf) < BSZ; ++cp, c = getchar()) 521264790Sbapt { 522264790Sbapt 523264790Sbapt *cp = (char) c; 524264790Sbapt if (isdigit(c)) 525264790Sbapt continue; 526264790Sbapt if (c == '.') 527264790Sbapt { 528264790Sbapt if (dot++ || expr) 529264790Sbapt return ('.'); /* will cause syntax error */ 530264790Sbapt continue; 531264790Sbapt } 532264790Sbapt 533264790Sbapt if (c == 'e') 534264790Sbapt { 535264790Sbapt if (expr++) 536264790Sbapt return ('e'); /* will cause syntax error */ 537264790Sbapt continue; 538264790Sbapt } 539264790Sbapt 540264790Sbapt /* end of number */ 541264790Sbapt break; 542264790Sbapt } 543264790Sbapt *cp = '\0'; 544264790Sbapt 545264790Sbapt if ((cp - buf) >= BSZ) 546264790Sbapt printf("constant too long: truncated\n"); 547264790Sbapt else 548264790Sbapt ungetc(c, stdin); /* push back last char read */ 549264790Sbapt#if YYPURE 550264790Sbapt (*yylval).dval = atof(buf); 551264790Sbapt#else 552264790Sbapt yylval.dval = atof(buf); 553264790Sbapt#endif 554264790Sbapt return (CONST); 555264790Sbapt } 556264790Sbapt return (c); 557264790Sbapt} 558264790Sbapt 559264790Sbaptstatic INTERVAL 560264790Sbapthilo(double a, double b, double c, double d) 561264790Sbapt{ 562264790Sbapt /* returns the smallest interval containing a, b, c, and d */ 563264790Sbapt /* used by *, / routines */ 564264790Sbapt INTERVAL v; 565264790Sbapt 566264790Sbapt if (a > b) 567264790Sbapt { 568264790Sbapt v.hi = a; 569264790Sbapt v.lo = b; 570264790Sbapt } 571264790Sbapt else 572264790Sbapt { 573264790Sbapt v.hi = b; 574264790Sbapt v.lo = a; 575264790Sbapt } 576264790Sbapt 577264790Sbapt if (c > d) 578264790Sbapt { 579264790Sbapt if (c > v.hi) 580264790Sbapt v.hi = c; 581264790Sbapt if (d < v.lo) 582264790Sbapt v.lo = d; 583264790Sbapt } 584264790Sbapt else 585264790Sbapt { 586264790Sbapt if (d > v.hi) 587264790Sbapt v.hi = d; 588264790Sbapt if (c < v.lo) 589264790Sbapt v.lo = c; 590264790Sbapt } 591264790Sbapt return (v); 592264790Sbapt} 593264790Sbapt 594264790SbaptINTERVAL 595264790Sbaptvmul(double a, double b, INTERVAL v) 596264790Sbapt{ 597264790Sbapt return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo)); 598264790Sbapt} 599264790Sbapt 600264790Sbaptint 601264790Sbaptdcheck(INTERVAL v) 602264790Sbapt{ 603264790Sbapt if (v.hi >= 0. && v.lo <= 0.) 604264790Sbapt { 605264790Sbapt printf("divisor interval contains 0.\n"); 606264790Sbapt return (1); 607264790Sbapt } 608264790Sbapt return (0); 609264790Sbapt} 610264790Sbapt 611264790SbaptINTERVAL 612264790Sbaptvdiv(double a, double b, INTERVAL v) 613264790Sbapt{ 614264790Sbapt return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo)); 615264790Sbapt} 616272955Srodrigc#line 617 "btyacc_calc1.tab.c" 617264790Sbapt 618264790Sbapt/* For use in generated program */ 619264790Sbapt#define yydepth (int)(yystack.s_mark - yystack.s_base) 620264790Sbapt#if YYBTYACC 621264790Sbapt#define yytrial (yyps->save) 622264790Sbapt#endif /* YYBTYACC */ 623264790Sbapt 624264790Sbapt#if YYDEBUG 625272955Srodrigc#include <stdio.h> /* needed for printf */ 626264790Sbapt#endif 627264790Sbapt 628272955Srodrigc#include <stdlib.h> /* needed for malloc, etc */ 629272955Srodrigc#include <string.h> /* needed for memset */ 630264790Sbapt 631264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 632264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 633264790Sbapt{ 634264790Sbapt int i; 635264790Sbapt unsigned newsize; 636264790Sbapt short *newss; 637264790Sbapt YYSTYPE *newvs; 638264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 639264790Sbapt YYLTYPE *newps; 640264790Sbapt#endif 641264790Sbapt 642264790Sbapt if ((newsize = data->stacksize) == 0) 643264790Sbapt newsize = YYINITSTACKSIZE; 644264790Sbapt else if (newsize >= YYMAXDEPTH) 645264790Sbapt return YYENOMEM; 646264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 647264790Sbapt newsize = YYMAXDEPTH; 648264790Sbapt 649264790Sbapt i = (int) (data->s_mark - data->s_base); 650264790Sbapt newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 651264790Sbapt if (newss == 0) 652264790Sbapt return YYENOMEM; 653264790Sbapt 654264790Sbapt data->s_base = newss; 655264790Sbapt data->s_mark = newss + i; 656264790Sbapt 657264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 658264790Sbapt if (newvs == 0) 659264790Sbapt return YYENOMEM; 660264790Sbapt 661264790Sbapt data->l_base = newvs; 662264790Sbapt data->l_mark = newvs + i; 663264790Sbapt 664264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 665264790Sbapt newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 666264790Sbapt if (newps == 0) 667264790Sbapt return YYENOMEM; 668264790Sbapt 669264790Sbapt data->p_base = newps; 670264790Sbapt data->p_mark = newps + i; 671264790Sbapt#endif 672264790Sbapt 673264790Sbapt data->stacksize = newsize; 674264790Sbapt data->s_last = data->s_base + newsize - 1; 675264790Sbapt 676264790Sbapt#if YYDEBUG 677264790Sbapt if (yydebug) 678264790Sbapt fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 679264790Sbapt#endif 680264790Sbapt return 0; 681264790Sbapt} 682264790Sbapt 683264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 684264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 685264790Sbapt{ 686264790Sbapt free(data->s_base); 687264790Sbapt free(data->l_base); 688264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 689264790Sbapt free(data->p_base); 690264790Sbapt#endif 691264790Sbapt memset(data, 0, sizeof(*data)); 692264790Sbapt} 693264790Sbapt#else 694264790Sbapt#define yyfreestack(data) /* nothing */ 695264790Sbapt#endif /* YYPURE || defined(YY_NO_LEAKS) */ 696264790Sbapt#if YYBTYACC 697264790Sbapt 698264790Sbaptstatic YYParseState * 699264790SbaptyyNewState(unsigned size) 700264790Sbapt{ 701264790Sbapt YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 702264790Sbapt if (p == NULL) return NULL; 703264790Sbapt 704264790Sbapt p->yystack.stacksize = size; 705264790Sbapt if (size == 0) 706264790Sbapt { 707264790Sbapt p->yystack.s_base = NULL; 708264790Sbapt p->yystack.l_base = NULL; 709264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 710264790Sbapt p->yystack.p_base = NULL; 711264790Sbapt#endif 712264790Sbapt return p; 713264790Sbapt } 714264790Sbapt p->yystack.s_base = (short *) malloc(size * sizeof(short)); 715264790Sbapt if (p->yystack.s_base == NULL) return NULL; 716264790Sbapt p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 717264790Sbapt if (p->yystack.l_base == NULL) return NULL; 718264790Sbapt memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 719264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 720264790Sbapt p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 721264790Sbapt if (p->yystack.p_base == NULL) return NULL; 722264790Sbapt memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 723264790Sbapt#endif 724264790Sbapt 725264790Sbapt return p; 726264790Sbapt} 727264790Sbapt 728264790Sbaptstatic void 729264790SbaptyyFreeState(YYParseState *p) 730264790Sbapt{ 731264790Sbapt yyfreestack(&p->yystack); 732264790Sbapt free(p); 733264790Sbapt} 734264790Sbapt#endif /* YYBTYACC */ 735264790Sbapt 736264790Sbapt#define YYABORT goto yyabort 737264790Sbapt#define YYREJECT goto yyabort 738264790Sbapt#define YYACCEPT goto yyaccept 739264790Sbapt#define YYERROR goto yyerrlab 740264790Sbapt#if YYBTYACC 741264790Sbapt#define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 742264790Sbapt#define YYVALID_NESTED do { if (yyps->save && \ 743264790Sbapt yyps->save->save == 0) goto yyvalid; } while(0) 744264790Sbapt#endif /* YYBTYACC */ 745264790Sbapt 746264790Sbaptint 747264790SbaptYYPARSE_DECL() 748264790Sbapt{ 749264790Sbapt int yyerrflag; 750264790Sbapt int yychar; 751264790Sbapt YYSTYPE yyval; 752264790Sbapt YYSTYPE yylval; 753264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 754264790Sbapt YYLTYPE yyloc; /* position returned by actions */ 755264790Sbapt YYLTYPE yylloc; /* position from the lexer */ 756264790Sbapt#endif 757264790Sbapt 758264790Sbapt /* variables for the parser stack */ 759264790Sbapt YYSTACKDATA yystack; 760264790Sbapt#if YYBTYACC 761264790Sbapt 762264790Sbapt /* Current parser state */ 763264790Sbapt static YYParseState *yyps = 0; 764264790Sbapt 765264790Sbapt /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 766264790Sbapt static YYParseState *yypath = 0; 767264790Sbapt 768264790Sbapt /* Base of the lexical value queue */ 769264790Sbapt static YYSTYPE *yylvals = 0; 770264790Sbapt 771264790Sbapt /* Current position at lexical value queue */ 772264790Sbapt static YYSTYPE *yylvp = 0; 773264790Sbapt 774264790Sbapt /* End position of lexical value queue */ 775264790Sbapt static YYSTYPE *yylve = 0; 776264790Sbapt 777264790Sbapt /* The last allocated position at the lexical value queue */ 778264790Sbapt static YYSTYPE *yylvlim = 0; 779264790Sbapt 780264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 781264790Sbapt /* Base of the lexical position queue */ 782264790Sbapt static YYLTYPE *yylpsns = 0; 783264790Sbapt 784264790Sbapt /* Current position at lexical position queue */ 785264790Sbapt static YYLTYPE *yylpp = 0; 786264790Sbapt 787264790Sbapt /* End position of lexical position queue */ 788264790Sbapt static YYLTYPE *yylpe = 0; 789264790Sbapt 790264790Sbapt /* The last allocated position at the lexical position queue */ 791264790Sbapt static YYLTYPE *yylplim = 0; 792264790Sbapt#endif 793264790Sbapt 794264790Sbapt /* Current position at lexical token queue */ 795264790Sbapt static short *yylexp = 0; 796264790Sbapt 797264790Sbapt static short *yylexemes = 0; 798264790Sbapt#endif /* YYBTYACC */ 799264790Sbapt int yym, yyn, yystate, yyresult; 800264790Sbapt#if YYBTYACC 801264790Sbapt int yynewerrflag; 802264790Sbapt YYParseState *yyerrctx = NULL; 803264790Sbapt#endif /* YYBTYACC */ 804264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 805264790Sbapt YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 806264790Sbapt#endif 807264790Sbapt#if YYDEBUG 808264790Sbapt const char *yys; 809264790Sbapt 810264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 811264790Sbapt { 812264790Sbapt yyn = *yys; 813264790Sbapt if (yyn >= '0' && yyn <= '9') 814264790Sbapt yydebug = yyn - '0'; 815264790Sbapt } 816264790Sbapt if (yydebug) 817264790Sbapt fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 818264790Sbapt#endif 819264790Sbapt 820264790Sbapt#if YYBTYACC 821264790Sbapt yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 822264790Sbapt yyps->save = 0; 823264790Sbapt#endif /* YYBTYACC */ 824264790Sbapt yynerrs = 0; 825264790Sbapt yyerrflag = 0; 826264790Sbapt yychar = YYEMPTY; 827264790Sbapt yystate = 0; 828264790Sbapt 829264790Sbapt#if YYPURE 830264790Sbapt memset(&yystack, 0, sizeof(yystack)); 831264790Sbapt#endif 832264790Sbapt 833264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 834264790Sbapt yystack.s_mark = yystack.s_base; 835264790Sbapt yystack.l_mark = yystack.l_base; 836264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 837264790Sbapt yystack.p_mark = yystack.p_base; 838264790Sbapt#endif 839264790Sbapt yystate = 0; 840264790Sbapt *yystack.s_mark = 0; 841264790Sbapt 842264790Sbaptyyloop: 843264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 844264790Sbapt if (yychar < 0) 845264790Sbapt { 846264790Sbapt#if YYBTYACC 847264790Sbapt do { 848264790Sbapt if (yylvp < yylve) 849264790Sbapt { 850264790Sbapt /* we're currently re-reading tokens */ 851264790Sbapt yylval = *yylvp++; 852264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 853264790Sbapt yylloc = *yylpp++; 854264790Sbapt#endif 855264790Sbapt yychar = *yylexp++; 856264790Sbapt break; 857264790Sbapt } 858264790Sbapt if (yyps->save) 859264790Sbapt { 860264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 861264790Sbapt if (yylvp == yylvlim) 862264790Sbapt { /* Enlarge lexical value queue */ 863272955Srodrigc size_t p = (size_t) (yylvp - yylvals); 864272955Srodrigc size_t s = (size_t) (yylvlim - yylvals); 865264790Sbapt 866264790Sbapt s += YYLVQUEUEGROWTH; 867264790Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem; 868264790Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 869264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 870264790Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 871264790Sbapt#endif 872264790Sbapt yylvp = yylve = yylvals + p; 873264790Sbapt yylvlim = yylvals + s; 874264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 875264790Sbapt yylpp = yylpe = yylpsns + p; 876264790Sbapt yylplim = yylpsns + s; 877264790Sbapt#endif 878264790Sbapt yylexp = yylexemes + p; 879264790Sbapt } 880264790Sbapt *yylexp = (short) YYLEX; 881264790Sbapt *yylvp++ = yylval; 882264790Sbapt yylve++; 883264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 884264790Sbapt *yylpp++ = yylloc; 885264790Sbapt yylpe++; 886264790Sbapt#endif 887264790Sbapt yychar = *yylexp++; 888264790Sbapt break; 889264790Sbapt } 890264790Sbapt /* normal operation, no conflict encountered */ 891264790Sbapt#endif /* YYBTYACC */ 892264790Sbapt yychar = YYLEX; 893264790Sbapt#if YYBTYACC 894264790Sbapt } while (0); 895264790Sbapt#endif /* YYBTYACC */ 896264790Sbapt if (yychar < 0) yychar = YYEOF; 897264790Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 898264790Sbapt#if YYDEBUG 899264790Sbapt if (yydebug) 900264790Sbapt { 901264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 902264790Sbapt fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 903264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 904264790Sbapt#ifdef YYSTYPE_TOSTRING 905264790Sbapt#if YYBTYACC 906264790Sbapt if (!yytrial) 907264790Sbapt#endif /* YYBTYACC */ 908264790Sbapt fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 909264790Sbapt#endif 910264790Sbapt fputc('\n', stderr); 911264790Sbapt } 912264790Sbapt#endif 913264790Sbapt } 914264790Sbapt#if YYBTYACC 915264790Sbapt 916264790Sbapt /* Do we have a conflict? */ 917264790Sbapt if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 918264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 919264790Sbapt { 920264790Sbapt YYINT ctry; 921264790Sbapt 922264790Sbapt if (yypath) 923264790Sbapt { 924264790Sbapt YYParseState *save; 925264790Sbapt#if YYDEBUG 926264790Sbapt if (yydebug) 927264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 928264790Sbapt YYDEBUGSTR, yydepth, yystate); 929264790Sbapt#endif 930264790Sbapt /* Switch to the next conflict context */ 931264790Sbapt save = yypath; 932264790Sbapt yypath = save->save; 933264790Sbapt save->save = NULL; 934264790Sbapt ctry = save->ctry; 935264790Sbapt if (save->state != yystate) YYABORT; 936264790Sbapt yyFreeState(save); 937264790Sbapt 938264790Sbapt } 939264790Sbapt else 940264790Sbapt { 941264790Sbapt 942264790Sbapt /* Unresolved conflict - start/continue trial parse */ 943264790Sbapt YYParseState *save; 944264790Sbapt#if YYDEBUG 945264790Sbapt if (yydebug) 946264790Sbapt { 947264790Sbapt fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 948264790Sbapt if (yyps->save) 949264790Sbapt fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 950264790Sbapt else 951264790Sbapt fputs("Starting trial parse.\n", stderr); 952264790Sbapt } 953264790Sbapt#endif 954264790Sbapt save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 955264790Sbapt if (save == NULL) goto yyenomem; 956264790Sbapt save->save = yyps->save; 957264790Sbapt save->state = yystate; 958264790Sbapt save->errflag = yyerrflag; 959264790Sbapt save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 960272955Srodrigc memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 961264790Sbapt save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 962272955Srodrigc memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 963264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 964264790Sbapt save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 965272955Srodrigc memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 966264790Sbapt#endif 967264790Sbapt ctry = yytable[yyn]; 968264790Sbapt if (yyctable[ctry] == -1) 969264790Sbapt { 970264790Sbapt#if YYDEBUG 971264790Sbapt if (yydebug && yychar >= YYEOF) 972264790Sbapt fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 973264790Sbapt#endif 974264790Sbapt ctry++; 975264790Sbapt } 976264790Sbapt save->ctry = ctry; 977264790Sbapt if (yyps->save == NULL) 978264790Sbapt { 979264790Sbapt /* If this is a first conflict in the stack, start saving lexemes */ 980264790Sbapt if (!yylexemes) 981264790Sbapt { 982264790Sbapt yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short)); 983264790Sbapt if (yylexemes == NULL) goto yyenomem; 984264790Sbapt yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 985264790Sbapt if (yylvals == NULL) goto yyenomem; 986264790Sbapt yylvlim = yylvals + YYLVQUEUEGROWTH; 987264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 988264790Sbapt yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 989264790Sbapt if (yylpsns == NULL) goto yyenomem; 990264790Sbapt yylplim = yylpsns + YYLVQUEUEGROWTH; 991264790Sbapt#endif 992264790Sbapt } 993264790Sbapt if (yylvp == yylve) 994264790Sbapt { 995264790Sbapt yylvp = yylve = yylvals; 996264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 997264790Sbapt yylpp = yylpe = yylpsns; 998264790Sbapt#endif 999264790Sbapt yylexp = yylexemes; 1000264790Sbapt if (yychar >= YYEOF) 1001264790Sbapt { 1002264790Sbapt *yylve++ = yylval; 1003264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1004264790Sbapt *yylpe++ = yylloc; 1005264790Sbapt#endif 1006264790Sbapt *yylexp = (short) yychar; 1007264790Sbapt yychar = YYEMPTY; 1008264790Sbapt } 1009264790Sbapt } 1010264790Sbapt } 1011264790Sbapt if (yychar >= YYEOF) 1012264790Sbapt { 1013264790Sbapt yylvp--; 1014264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1015264790Sbapt yylpp--; 1016264790Sbapt#endif 1017264790Sbapt yylexp--; 1018264790Sbapt yychar = YYEMPTY; 1019264790Sbapt } 1020272955Srodrigc save->lexeme = (int) (yylvp - yylvals); 1021264790Sbapt yyps->save = save; 1022264790Sbapt } 1023264790Sbapt if (yytable[yyn] == ctry) 1024264790Sbapt { 1025264790Sbapt#if YYDEBUG 1026264790Sbapt if (yydebug) 1027264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 1028264790Sbapt YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 1029264790Sbapt#endif 1030264790Sbapt if (yychar < 0) 1031264790Sbapt { 1032264790Sbapt yylvp++; 1033264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1034264790Sbapt yylpp++; 1035264790Sbapt#endif 1036264790Sbapt yylexp++; 1037264790Sbapt } 1038264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 1039264790Sbapt goto yyoverflow; 1040264790Sbapt yystate = yyctable[ctry]; 1041264790Sbapt *++yystack.s_mark = (short) yystate; 1042264790Sbapt *++yystack.l_mark = yylval; 1043264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1044264790Sbapt *++yystack.p_mark = yylloc; 1045264790Sbapt#endif 1046264790Sbapt yychar = YYEMPTY; 1047264790Sbapt if (yyerrflag > 0) --yyerrflag; 1048264790Sbapt goto yyloop; 1049264790Sbapt } 1050264790Sbapt else 1051264790Sbapt { 1052264790Sbapt yyn = yyctable[ctry]; 1053264790Sbapt goto yyreduce; 1054264790Sbapt } 1055264790Sbapt } /* End of code dealing with conflicts */ 1056264790Sbapt#endif /* YYBTYACC */ 1057264790Sbapt if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 1058264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 1059264790Sbapt { 1060264790Sbapt#if YYDEBUG 1061264790Sbapt if (yydebug) 1062264790Sbapt fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 1063264790Sbapt YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 1064264790Sbapt#endif 1065264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1066264790Sbapt yystate = yytable[yyn]; 1067264790Sbapt *++yystack.s_mark = yytable[yyn]; 1068264790Sbapt *++yystack.l_mark = yylval; 1069264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1070264790Sbapt *++yystack.p_mark = yylloc; 1071264790Sbapt#endif 1072264790Sbapt yychar = YYEMPTY; 1073264790Sbapt if (yyerrflag > 0) --yyerrflag; 1074264790Sbapt goto yyloop; 1075264790Sbapt } 1076264790Sbapt if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 1077264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 1078264790Sbapt { 1079264790Sbapt yyn = yytable[yyn]; 1080264790Sbapt goto yyreduce; 1081264790Sbapt } 1082264790Sbapt if (yyerrflag != 0) goto yyinrecovery; 1083264790Sbapt#if YYBTYACC 1084264790Sbapt 1085264790Sbapt yynewerrflag = 1; 1086264790Sbapt goto yyerrhandler; 1087264790Sbapt goto yyerrlab; 1088264790Sbapt 1089264790Sbaptyyerrlab: 1090264790Sbapt yynewerrflag = 0; 1091264790Sbaptyyerrhandler: 1092264790Sbapt while (yyps->save) 1093264790Sbapt { 1094264790Sbapt int ctry; 1095264790Sbapt YYParseState *save = yyps->save; 1096264790Sbapt#if YYDEBUG 1097264790Sbapt if (yydebug) 1098264790Sbapt fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 1099264790Sbapt YYDEBUGSTR, yydepth, yystate, yyps->save->state, 1100264790Sbapt (int)(yylvp - yylvals - yyps->save->lexeme)); 1101264790Sbapt#endif 1102264790Sbapt /* Memorize most forward-looking error state in case it's really an error. */ 1103264790Sbapt if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 1104264790Sbapt { 1105264790Sbapt /* Free old saved error context state */ 1106264790Sbapt if (yyerrctx) yyFreeState(yyerrctx); 1107264790Sbapt /* Create and fill out new saved error context state */ 1108264790Sbapt yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 1109264790Sbapt if (yyerrctx == NULL) goto yyenomem; 1110264790Sbapt yyerrctx->save = yyps->save; 1111264790Sbapt yyerrctx->state = yystate; 1112264790Sbapt yyerrctx->errflag = yyerrflag; 1113264790Sbapt yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 1114272955Srodrigc memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1115264790Sbapt yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 1116272955Srodrigc memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1117264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1118264790Sbapt yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 1119272955Srodrigc memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1120264790Sbapt#endif 1121272955Srodrigc yyerrctx->lexeme = (int) (yylvp - yylvals); 1122264790Sbapt } 1123264790Sbapt yylvp = yylvals + save->lexeme; 1124264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1125264790Sbapt yylpp = yylpsns + save->lexeme; 1126264790Sbapt#endif 1127264790Sbapt yylexp = yylexemes + save->lexeme; 1128264790Sbapt yychar = YYEMPTY; 1129264790Sbapt yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 1130272955Srodrigc memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1131264790Sbapt yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 1132272955Srodrigc memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1133264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1134264790Sbapt yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 1135272955Srodrigc memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1136264790Sbapt#endif 1137264790Sbapt ctry = ++save->ctry; 1138264790Sbapt yystate = save->state; 1139264790Sbapt /* We tried shift, try reduce now */ 1140264790Sbapt if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 1141264790Sbapt yyps->save = save->save; 1142264790Sbapt save->save = NULL; 1143264790Sbapt yyFreeState(save); 1144264790Sbapt 1145264790Sbapt /* Nothing left on the stack -- error */ 1146264790Sbapt if (!yyps->save) 1147264790Sbapt { 1148264790Sbapt#if YYDEBUG 1149264790Sbapt if (yydebug) 1150264790Sbapt fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1151264790Sbapt YYPREFIX, yydepth); 1152264790Sbapt#endif 1153264790Sbapt /* Restore state as it was in the most forward-advanced error */ 1154264790Sbapt yylvp = yylvals + yyerrctx->lexeme; 1155264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1156264790Sbapt yylpp = yylpsns + yyerrctx->lexeme; 1157264790Sbapt#endif 1158264790Sbapt yylexp = yylexemes + yyerrctx->lexeme; 1159264790Sbapt yychar = yylexp[-1]; 1160264790Sbapt yylval = yylvp[-1]; 1161264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1162264790Sbapt yylloc = yylpp[-1]; 1163264790Sbapt#endif 1164264790Sbapt yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1165272955Srodrigc memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1166264790Sbapt yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1167272955Srodrigc memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1168264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1169264790Sbapt yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1170272955Srodrigc memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1171264790Sbapt#endif 1172264790Sbapt yystate = yyerrctx->state; 1173264790Sbapt yyFreeState(yyerrctx); 1174264790Sbapt yyerrctx = NULL; 1175264790Sbapt } 1176264790Sbapt yynewerrflag = 1; 1177264790Sbapt } 1178264790Sbapt if (yynewerrflag == 0) goto yyinrecovery; 1179264790Sbapt#endif /* YYBTYACC */ 1180264790Sbapt 1181264790Sbapt YYERROR_CALL("syntax error"); 1182264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1183264790Sbapt yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 1184264790Sbapt#endif 1185264790Sbapt 1186264790Sbapt#if !YYBTYACC 1187264790Sbapt goto yyerrlab; 1188264790Sbaptyyerrlab: 1189264790Sbapt#endif 1190264790Sbapt ++yynerrs; 1191264790Sbapt 1192264790Sbaptyyinrecovery: 1193264790Sbapt if (yyerrflag < 3) 1194264790Sbapt { 1195264790Sbapt yyerrflag = 3; 1196264790Sbapt for (;;) 1197264790Sbapt { 1198264790Sbapt if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1199264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1200264790Sbapt { 1201264790Sbapt#if YYDEBUG 1202264790Sbapt if (yydebug) 1203264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1204264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1205264790Sbapt#endif 1206264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1207264790Sbapt yystate = yytable[yyn]; 1208264790Sbapt *++yystack.s_mark = yytable[yyn]; 1209264790Sbapt *++yystack.l_mark = yylval; 1210264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1211264790Sbapt /* lookahead position is error end position */ 1212264790Sbapt yyerror_loc_range[1] = yylloc; 1213264790Sbapt YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1214264790Sbapt *++yystack.p_mark = yyloc; 1215264790Sbapt#endif 1216264790Sbapt goto yyloop; 1217264790Sbapt } 1218264790Sbapt else 1219264790Sbapt { 1220264790Sbapt#if YYDEBUG 1221264790Sbapt if (yydebug) 1222264790Sbapt fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1223264790Sbapt YYDEBUGSTR, yydepth, *yystack.s_mark); 1224264790Sbapt#endif 1225264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 1226264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1227264790Sbapt /* the current TOS position is the error start position */ 1228264790Sbapt yyerror_loc_range[0] = *yystack.p_mark; 1229264790Sbapt#endif 1230264790Sbapt#if defined(YYDESTRUCT_CALL) 1231264790Sbapt#if YYBTYACC 1232264790Sbapt if (!yytrial) 1233264790Sbapt#endif /* YYBTYACC */ 1234264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1235264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1236264790Sbapt yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1237264790Sbapt#else 1238264790Sbapt YYDESTRUCT_CALL("error: discarding state", 1239264790Sbapt yystos[*yystack.s_mark], yystack.l_mark); 1240264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1241264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1242264790Sbapt --yystack.s_mark; 1243264790Sbapt --yystack.l_mark; 1244264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1245264790Sbapt --yystack.p_mark; 1246264790Sbapt#endif 1247264790Sbapt } 1248264790Sbapt } 1249264790Sbapt } 1250264790Sbapt else 1251264790Sbapt { 1252264790Sbapt if (yychar == YYEOF) goto yyabort; 1253264790Sbapt#if YYDEBUG 1254264790Sbapt if (yydebug) 1255264790Sbapt { 1256264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1257264790Sbapt fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1258264790Sbapt YYDEBUGSTR, yydepth, yystate, yychar, yys); 1259264790Sbapt } 1260264790Sbapt#endif 1261264790Sbapt#if defined(YYDESTRUCT_CALL) 1262264790Sbapt#if YYBTYACC 1263264790Sbapt if (!yytrial) 1264264790Sbapt#endif /* YYBTYACC */ 1265264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1266264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1267264790Sbapt#else 1268264790Sbapt YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1269264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1270264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1271264790Sbapt yychar = YYEMPTY; 1272264790Sbapt goto yyloop; 1273264790Sbapt } 1274264790Sbapt 1275264790Sbaptyyreduce: 1276264790Sbapt yym = yylen[yyn]; 1277264790Sbapt#if YYDEBUG 1278264790Sbapt if (yydebug) 1279264790Sbapt { 1280264790Sbapt fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1281264790Sbapt YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1282264790Sbapt#ifdef YYSTYPE_TOSTRING 1283264790Sbapt#if YYBTYACC 1284264790Sbapt if (!yytrial) 1285264790Sbapt#endif /* YYBTYACC */ 1286264790Sbapt if (yym > 0) 1287264790Sbapt { 1288264790Sbapt int i; 1289264790Sbapt fputc('<', stderr); 1290264790Sbapt for (i = yym; i > 0; i--) 1291264790Sbapt { 1292264790Sbapt if (i != yym) fputs(", ", stderr); 1293264790Sbapt fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1294264790Sbapt yystack.l_mark[1-i]), stderr); 1295264790Sbapt } 1296264790Sbapt fputc('>', stderr); 1297264790Sbapt } 1298264790Sbapt#endif 1299264790Sbapt fputc('\n', stderr); 1300264790Sbapt } 1301264790Sbapt#endif 1302264790Sbapt if (yym > 0) 1303264790Sbapt yyval = yystack.l_mark[1-yym]; 1304264790Sbapt else 1305264790Sbapt memset(&yyval, 0, sizeof yyval); 1306264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1307264790Sbapt 1308264790Sbapt /* Perform position reduction */ 1309264790Sbapt memset(&yyloc, 0, sizeof(yyloc)); 1310264790Sbapt#if YYBTYACC 1311264790Sbapt if (!yytrial) 1312264790Sbapt#endif /* YYBTYACC */ 1313264790Sbapt { 1314264790Sbapt YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1315264790Sbapt /* just in case YYERROR is invoked within the action, save 1316264790Sbapt the start of the rhs as the error start position */ 1317264790Sbapt yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1318264790Sbapt } 1319264790Sbapt#endif 1320264790Sbapt 1321264790Sbapt switch (yyn) 1322264790Sbapt { 1323264790Sbaptcase 2: 1324264790Sbapt#line 51 "btyacc_calc1.y" 1325264790Sbapt{YYVALID;} 1326264790Sbaptbreak; 1327264790Sbaptcase 3: 1328264790Sbapt#line 52 "btyacc_calc1.y" 1329264790Sbapt{YYVALID;} if (!yytrial) 1330264790Sbapt#line 53 "btyacc_calc1.y" 1331264790Sbapt{ 1332264790Sbapt yyerrok; 1333264790Sbapt } 1334264790Sbaptbreak; 1335264790Sbaptcase 4: 1336264790Sbapt if (!yytrial) 1337264790Sbapt#line 59 "btyacc_calc1.y" 1338264790Sbapt { 1339264790Sbapt (void) printf("%15.8f\n", yystack.l_mark[0].dval); 1340264790Sbapt } 1341264790Sbaptbreak; 1342264790Sbaptcase 5: 1343264790Sbapt if (!yytrial) 1344264790Sbapt#line 63 "btyacc_calc1.y" 1345264790Sbapt { 1346264790Sbapt (void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[0].vval.lo, yystack.l_mark[0].vval.hi); 1347264790Sbapt } 1348264790Sbaptbreak; 1349264790Sbaptcase 6: 1350264790Sbapt if (!yytrial) 1351264790Sbapt#line 67 "btyacc_calc1.y" 1352264790Sbapt { 1353264790Sbapt dreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].dval; 1354264790Sbapt } 1355264790Sbaptbreak; 1356264790Sbaptcase 7: 1357264790Sbapt if (!yytrial) 1358264790Sbapt#line 71 "btyacc_calc1.y" 1359264790Sbapt { 1360264790Sbapt vreg[yystack.l_mark[-2].ival] = yystack.l_mark[0].vval; 1361264790Sbapt } 1362264790Sbaptbreak; 1363264790Sbaptcase 9: 1364264790Sbapt if (!yytrial) 1365264790Sbapt#line 78 "btyacc_calc1.y" 1366264790Sbapt { 1367264790Sbapt yyval.dval = dreg[yystack.l_mark[0].ival]; 1368264790Sbapt } 1369264790Sbaptbreak; 1370264790Sbaptcase 10: 1371264790Sbapt if (!yytrial) 1372264790Sbapt#line 82 "btyacc_calc1.y" 1373264790Sbapt { 1374264790Sbapt yyval.dval = yystack.l_mark[-2].dval + yystack.l_mark[0].dval; 1375264790Sbapt } 1376264790Sbaptbreak; 1377264790Sbaptcase 11: 1378264790Sbapt if (!yytrial) 1379264790Sbapt#line 86 "btyacc_calc1.y" 1380264790Sbapt { 1381264790Sbapt yyval.dval = yystack.l_mark[-2].dval - yystack.l_mark[0].dval; 1382264790Sbapt } 1383264790Sbaptbreak; 1384264790Sbaptcase 12: 1385264790Sbapt if (!yytrial) 1386264790Sbapt#line 90 "btyacc_calc1.y" 1387264790Sbapt { 1388264790Sbapt yyval.dval = yystack.l_mark[-2].dval * yystack.l_mark[0].dval; 1389264790Sbapt } 1390264790Sbaptbreak; 1391264790Sbaptcase 13: 1392264790Sbapt if (!yytrial) 1393264790Sbapt#line 94 "btyacc_calc1.y" 1394264790Sbapt { 1395264790Sbapt yyval.dval = yystack.l_mark[-2].dval / yystack.l_mark[0].dval; 1396264790Sbapt } 1397264790Sbaptbreak; 1398264790Sbaptcase 14: 1399264790Sbapt if (!yytrial) 1400264790Sbapt#line 98 "btyacc_calc1.y" 1401264790Sbapt { 1402264790Sbapt yyval.dval = -yystack.l_mark[0].dval; 1403264790Sbapt } 1404264790Sbaptbreak; 1405264790Sbaptcase 15: 1406264790Sbapt if (!yytrial) 1407264790Sbapt#line 102 "btyacc_calc1.y" 1408264790Sbapt { 1409264790Sbapt yyval.dval = yystack.l_mark[-1].dval; 1410264790Sbapt } 1411264790Sbaptbreak; 1412264790Sbaptcase 16: 1413264790Sbapt if (!yytrial) 1414264790Sbapt#line 108 "btyacc_calc1.y" 1415264790Sbapt { 1416264790Sbapt yyval.vval.hi = yyval.vval.lo = yystack.l_mark[0].dval; 1417264790Sbapt } 1418264790Sbaptbreak; 1419264790Sbaptcase 17: 1420264790Sbapt if (!yytrial) 1421264790Sbapt#line 112 "btyacc_calc1.y" 1422264790Sbapt { 1423264790Sbapt yyval.vval.lo = yystack.l_mark[-3].dval; 1424264790Sbapt yyval.vval.hi = yystack.l_mark[-1].dval; 1425264790Sbapt if ( yyval.vval.lo > yyval.vval.hi ) 1426264790Sbapt { 1427264790Sbapt (void) printf("interval out of order\n"); 1428264790Sbapt YYERROR; 1429264790Sbapt } 1430264790Sbapt } 1431264790Sbaptbreak; 1432264790Sbaptcase 18: 1433264790Sbapt if (!yytrial) 1434264790Sbapt#line 122 "btyacc_calc1.y" 1435264790Sbapt { 1436264790Sbapt yyval.vval = vreg[yystack.l_mark[0].ival]; 1437264790Sbapt } 1438264790Sbaptbreak; 1439264790Sbaptcase 19: 1440264790Sbapt if (!yytrial) 1441264790Sbapt#line 126 "btyacc_calc1.y" 1442264790Sbapt { 1443264790Sbapt yyval.vval.hi = yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi; 1444264790Sbapt yyval.vval.lo = yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo; 1445264790Sbapt } 1446264790Sbaptbreak; 1447264790Sbaptcase 20: 1448264790Sbapt if (!yytrial) 1449264790Sbapt#line 131 "btyacc_calc1.y" 1450264790Sbapt { 1451264790Sbapt yyval.vval.hi = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi; 1452264790Sbapt yyval.vval.lo = yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo; 1453264790Sbapt } 1454264790Sbaptbreak; 1455264790Sbaptcase 21: 1456264790Sbapt if (!yytrial) 1457264790Sbapt#line 136 "btyacc_calc1.y" 1458264790Sbapt { 1459264790Sbapt yyval.vval.hi = yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo; 1460264790Sbapt yyval.vval.lo = yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi; 1461264790Sbapt } 1462264790Sbaptbreak; 1463264790Sbaptcase 22: 1464264790Sbapt if (!yytrial) 1465264790Sbapt#line 141 "btyacc_calc1.y" 1466264790Sbapt { 1467264790Sbapt yyval.vval.hi = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo; 1468264790Sbapt yyval.vval.lo = yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi; 1469264790Sbapt } 1470264790Sbaptbreak; 1471264790Sbaptcase 23: 1472264790Sbapt if (!yytrial) 1473264790Sbapt#line 146 "btyacc_calc1.y" 1474264790Sbapt { 1475264790Sbapt yyval.vval = vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval ); 1476264790Sbapt } 1477264790Sbaptbreak; 1478264790Sbaptcase 24: 1479264790Sbapt if (!yytrial) 1480264790Sbapt#line 150 "btyacc_calc1.y" 1481264790Sbapt { 1482264790Sbapt yyval.vval = vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval ); 1483264790Sbapt } 1484264790Sbaptbreak; 1485264790Sbaptcase 25: 1486264790Sbapt if (!yytrial) 1487264790Sbapt#line 154 "btyacc_calc1.y" 1488264790Sbapt { 1489264790Sbapt if (dcheck(yystack.l_mark[0].vval)) YYERROR; 1490264790Sbapt yyval.vval = vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval.hi, yystack.l_mark[0].vval ); 1491264790Sbapt } 1492264790Sbaptbreak; 1493264790Sbaptcase 26: 1494264790Sbapt if (!yytrial) 1495264790Sbapt#line 159 "btyacc_calc1.y" 1496264790Sbapt { 1497264790Sbapt if (dcheck ( yystack.l_mark[0].vval )) YYERROR; 1498264790Sbapt yyval.vval = vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, yystack.l_mark[0].vval ); 1499264790Sbapt } 1500264790Sbaptbreak; 1501264790Sbaptcase 27: 1502264790Sbapt if (!yytrial) 1503264790Sbapt#line 164 "btyacc_calc1.y" 1504264790Sbapt { 1505264790Sbapt yyval.vval.hi = -yystack.l_mark[0].vval.lo; 1506264790Sbapt yyval.vval.lo = -yystack.l_mark[0].vval.hi; 1507264790Sbapt } 1508264790Sbaptbreak; 1509264790Sbaptcase 28: 1510264790Sbapt if (!yytrial) 1511264790Sbapt#line 169 "btyacc_calc1.y" 1512264790Sbapt { 1513264790Sbapt yyval.vval = yystack.l_mark[-1].vval; 1514264790Sbapt } 1515264790Sbaptbreak; 1516272955Srodrigc#line 1517 "btyacc_calc1.tab.c" 1517264790Sbapt default: 1518264790Sbapt break; 1519264790Sbapt } 1520264790Sbapt yystack.s_mark -= yym; 1521264790Sbapt yystate = *yystack.s_mark; 1522264790Sbapt yystack.l_mark -= yym; 1523264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1524264790Sbapt yystack.p_mark -= yym; 1525264790Sbapt#endif 1526264790Sbapt yym = yylhs[yyn]; 1527264790Sbapt if (yystate == 0 && yym == 0) 1528264790Sbapt { 1529264790Sbapt#if YYDEBUG 1530264790Sbapt if (yydebug) 1531264790Sbapt { 1532264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1533264790Sbapt#ifdef YYSTYPE_TOSTRING 1534264790Sbapt#if YYBTYACC 1535264790Sbapt if (!yytrial) 1536264790Sbapt#endif /* YYBTYACC */ 1537264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1538264790Sbapt#endif 1539264790Sbapt fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1540264790Sbapt } 1541264790Sbapt#endif 1542264790Sbapt yystate = YYFINAL; 1543264790Sbapt *++yystack.s_mark = YYFINAL; 1544264790Sbapt *++yystack.l_mark = yyval; 1545264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1546264790Sbapt *++yystack.p_mark = yyloc; 1547264790Sbapt#endif 1548264790Sbapt if (yychar < 0) 1549264790Sbapt { 1550264790Sbapt#if YYBTYACC 1551264790Sbapt do { 1552264790Sbapt if (yylvp < yylve) 1553264790Sbapt { 1554264790Sbapt /* we're currently re-reading tokens */ 1555264790Sbapt yylval = *yylvp++; 1556264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1557264790Sbapt yylloc = *yylpp++; 1558264790Sbapt#endif 1559264790Sbapt yychar = *yylexp++; 1560264790Sbapt break; 1561264790Sbapt } 1562264790Sbapt if (yyps->save) 1563264790Sbapt { 1564264790Sbapt /* in trial mode; save scanner results for future parse attempts */ 1565264790Sbapt if (yylvp == yylvlim) 1566264790Sbapt { /* Enlarge lexical value queue */ 1567272955Srodrigc size_t p = (size_t) (yylvp - yylvals); 1568272955Srodrigc size_t s = (size_t) (yylvlim - yylvals); 1569264790Sbapt 1570264790Sbapt s += YYLVQUEUEGROWTH; 1571264790Sbapt if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) 1572264790Sbapt goto yyenomem; 1573264790Sbapt if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1574264790Sbapt goto yyenomem; 1575264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1576264790Sbapt if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1577264790Sbapt goto yyenomem; 1578264790Sbapt#endif 1579264790Sbapt yylvp = yylve = yylvals + p; 1580264790Sbapt yylvlim = yylvals + s; 1581264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1582264790Sbapt yylpp = yylpe = yylpsns + p; 1583264790Sbapt yylplim = yylpsns + s; 1584264790Sbapt#endif 1585264790Sbapt yylexp = yylexemes + p; 1586264790Sbapt } 1587264790Sbapt *yylexp = (short) YYLEX; 1588264790Sbapt *yylvp++ = yylval; 1589264790Sbapt yylve++; 1590264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1591264790Sbapt *yylpp++ = yylloc; 1592264790Sbapt yylpe++; 1593264790Sbapt#endif 1594264790Sbapt yychar = *yylexp++; 1595264790Sbapt break; 1596264790Sbapt } 1597264790Sbapt /* normal operation, no conflict encountered */ 1598264790Sbapt#endif /* YYBTYACC */ 1599264790Sbapt yychar = YYLEX; 1600264790Sbapt#if YYBTYACC 1601264790Sbapt } while (0); 1602264790Sbapt#endif /* YYBTYACC */ 1603264790Sbapt if (yychar < 0) yychar = YYEOF; 1604264790Sbapt /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 1605264790Sbapt#if YYDEBUG 1606264790Sbapt if (yydebug) 1607264790Sbapt { 1608264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 1609264790Sbapt fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", 1610264790Sbapt YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1611264790Sbapt } 1612264790Sbapt#endif 1613264790Sbapt } 1614264790Sbapt if (yychar == YYEOF) goto yyaccept; 1615264790Sbapt goto yyloop; 1616264790Sbapt } 1617264790Sbapt if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1618264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1619264790Sbapt yystate = yytable[yyn]; 1620264790Sbapt else 1621264790Sbapt yystate = yydgoto[yym]; 1622264790Sbapt#if YYDEBUG 1623264790Sbapt if (yydebug) 1624264790Sbapt { 1625264790Sbapt fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1626264790Sbapt#ifdef YYSTYPE_TOSTRING 1627264790Sbapt#if YYBTYACC 1628264790Sbapt if (!yytrial) 1629264790Sbapt#endif /* YYBTYACC */ 1630264790Sbapt fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1631264790Sbapt#endif 1632264790Sbapt fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1633264790Sbapt } 1634264790Sbapt#endif 1635264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1636264790Sbapt *++yystack.s_mark = (short) yystate; 1637264790Sbapt *++yystack.l_mark = yyval; 1638264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1639264790Sbapt *++yystack.p_mark = yyloc; 1640264790Sbapt#endif 1641264790Sbapt goto yyloop; 1642264790Sbapt#if YYBTYACC 1643264790Sbapt 1644264790Sbapt /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1645264790Sbaptyyvalid: 1646264790Sbapt if (yypath) YYABORT; 1647264790Sbapt while (yyps->save) 1648264790Sbapt { 1649264790Sbapt YYParseState *save = yyps->save; 1650264790Sbapt yyps->save = save->save; 1651264790Sbapt save->save = yypath; 1652264790Sbapt yypath = save; 1653264790Sbapt } 1654264790Sbapt#if YYDEBUG 1655264790Sbapt if (yydebug) 1656264790Sbapt fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1657264790Sbapt YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1658264790Sbapt#endif 1659264790Sbapt if (yyerrctx) 1660264790Sbapt { 1661264790Sbapt yyFreeState(yyerrctx); 1662264790Sbapt yyerrctx = NULL; 1663264790Sbapt } 1664264790Sbapt yylvp = yylvals + yypath->lexeme; 1665264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1666264790Sbapt yylpp = yylpsns + yypath->lexeme; 1667264790Sbapt#endif 1668264790Sbapt yylexp = yylexemes + yypath->lexeme; 1669264790Sbapt yychar = YYEMPTY; 1670264790Sbapt yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1671272955Srodrigc memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1672264790Sbapt yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1673272955Srodrigc memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1674264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1675264790Sbapt yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1676272955Srodrigc memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1677264790Sbapt#endif 1678264790Sbapt yystate = yypath->state; 1679264790Sbapt goto yyloop; 1680264790Sbapt#endif /* YYBTYACC */ 1681264790Sbapt 1682264790Sbaptyyoverflow: 1683264790Sbapt YYERROR_CALL("yacc stack overflow"); 1684264790Sbapt#if YYBTYACC 1685264790Sbapt goto yyabort_nomem; 1686264790Sbaptyyenomem: 1687264790Sbapt YYERROR_CALL("memory exhausted"); 1688264790Sbaptyyabort_nomem: 1689264790Sbapt#endif /* YYBTYACC */ 1690264790Sbapt yyresult = 2; 1691264790Sbapt goto yyreturn; 1692264790Sbapt 1693264790Sbaptyyabort: 1694264790Sbapt yyresult = 1; 1695264790Sbapt goto yyreturn; 1696264790Sbapt 1697264790Sbaptyyaccept: 1698264790Sbapt#if YYBTYACC 1699264790Sbapt if (yyps->save) goto yyvalid; 1700264790Sbapt#endif /* YYBTYACC */ 1701264790Sbapt yyresult = 0; 1702264790Sbapt 1703264790Sbaptyyreturn: 1704264790Sbapt#if defined(YYDESTRUCT_CALL) 1705264790Sbapt if (yychar != YYEOF && yychar != YYEMPTY) 1706264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1707264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1708264790Sbapt#else 1709264790Sbapt YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1710264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1711264790Sbapt 1712264790Sbapt { 1713264790Sbapt YYSTYPE *pv; 1714264790Sbapt#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1715264790Sbapt YYLTYPE *pp; 1716264790Sbapt 1717264790Sbapt for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1718264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1719264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1720264790Sbapt#else 1721264790Sbapt for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1722264790Sbapt YYDESTRUCT_CALL("cleanup: discarding state", 1723264790Sbapt yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1724264790Sbapt#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1725264790Sbapt } 1726264790Sbapt#endif /* defined(YYDESTRUCT_CALL) */ 1727264790Sbapt 1728264790Sbapt#if YYBTYACC 1729264790Sbapt if (yyerrctx) 1730264790Sbapt { 1731264790Sbapt yyFreeState(yyerrctx); 1732264790Sbapt yyerrctx = NULL; 1733264790Sbapt } 1734264790Sbapt while (yyps) 1735264790Sbapt { 1736264790Sbapt YYParseState *save = yyps; 1737264790Sbapt yyps = save->save; 1738264790Sbapt save->save = NULL; 1739264790Sbapt yyFreeState(save); 1740264790Sbapt } 1741264790Sbapt while (yypath) 1742264790Sbapt { 1743264790Sbapt YYParseState *save = yypath; 1744264790Sbapt yypath = save->save; 1745264790Sbapt save->save = NULL; 1746264790Sbapt yyFreeState(save); 1747264790Sbapt } 1748264790Sbapt#endif /* YYBTYACC */ 1749264790Sbapt yyfreestack(&yystack); 1750264790Sbapt return (yyresult); 1751264790Sbapt} 1752