1b53bb29fSJung-uk Kim /* original parser id follows */ 2b53bb29fSJung-uk Kim /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3b53bb29fSJung-uk Kim /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4b53bb29fSJung-uk Kim 5b53bb29fSJung-uk Kim #define YYBYACC 1 6b53bb29fSJung-uk Kim #define YYMAJOR 1 7b53bb29fSJung-uk Kim #define YYMINOR 9 8b53bb29fSJung-uk Kim #define YYCHECK "yyyymmdd" 9b53bb29fSJung-uk Kim 10b53bb29fSJung-uk Kim #define YYEMPTY (-1) 11b53bb29fSJung-uk Kim #define yyclearin (yychar = YYEMPTY) 12b53bb29fSJung-uk Kim #define yyerrok (yyerrflag = 0) 13b53bb29fSJung-uk Kim #define YYRECOVERING() (yyerrflag != 0) 14b53bb29fSJung-uk Kim #define YYENOMEM (-2) 15b53bb29fSJung-uk Kim #define YYEOF 0 16b53bb29fSJung-uk Kim 17b53bb29fSJung-uk Kim /* %code "top" block start */ 18b53bb29fSJung-uk Kim #line 5 "calc_code_all.y" 19b53bb29fSJung-uk Kim /* CODE-TOP */ 20b53bb29fSJung-uk Kim /* %code "top" block end */ 21b53bb29fSJung-uk Kim #line 22 "calc_code_all.tab.c" 22b53bb29fSJung-uk Kim #undef YYBTYACC 23b53bb29fSJung-uk Kim #define YYBTYACC 0 24b53bb29fSJung-uk Kim #define YYDEBUGSTR YYPREFIX "debug" 25b53bb29fSJung-uk Kim 26b53bb29fSJung-uk Kim #ifndef yyparse 27b53bb29fSJung-uk Kim #define yyparse calc_code_all_parse 28b53bb29fSJung-uk Kim #endif /* yyparse */ 29b53bb29fSJung-uk Kim 30b53bb29fSJung-uk Kim #ifndef yylex 31b53bb29fSJung-uk Kim #define yylex calc_code_all_lex 32b53bb29fSJung-uk Kim #endif /* yylex */ 33b53bb29fSJung-uk Kim 34b53bb29fSJung-uk Kim #ifndef yyerror 35b53bb29fSJung-uk Kim #define yyerror calc_code_all_error 36b53bb29fSJung-uk Kim #endif /* yyerror */ 37b53bb29fSJung-uk Kim 38b53bb29fSJung-uk Kim #ifndef yychar 39b53bb29fSJung-uk Kim #define yychar calc_code_all_char 40b53bb29fSJung-uk Kim #endif /* yychar */ 41b53bb29fSJung-uk Kim 42b53bb29fSJung-uk Kim #ifndef yyval 43b53bb29fSJung-uk Kim #define yyval calc_code_all_val 44b53bb29fSJung-uk Kim #endif /* yyval */ 45b53bb29fSJung-uk Kim 46b53bb29fSJung-uk Kim #ifndef yylval 47b53bb29fSJung-uk Kim #define yylval calc_code_all_lval 48b53bb29fSJung-uk Kim #endif /* yylval */ 49b53bb29fSJung-uk Kim 50b53bb29fSJung-uk Kim #ifndef yydebug 51b53bb29fSJung-uk Kim #define yydebug calc_code_all_debug 52b53bb29fSJung-uk Kim #endif /* yydebug */ 53b53bb29fSJung-uk Kim 54b53bb29fSJung-uk Kim #ifndef yynerrs 55b53bb29fSJung-uk Kim #define yynerrs calc_code_all_nerrs 56b53bb29fSJung-uk Kim #endif /* yynerrs */ 57b53bb29fSJung-uk Kim 58b53bb29fSJung-uk Kim #ifndef yyerrflag 59b53bb29fSJung-uk Kim #define yyerrflag calc_code_all_errflag 60b53bb29fSJung-uk Kim #endif /* yyerrflag */ 61b53bb29fSJung-uk Kim 62b53bb29fSJung-uk Kim #ifndef yylhs 63b53bb29fSJung-uk Kim #define yylhs calc_code_all_lhs 64b53bb29fSJung-uk Kim #endif /* yylhs */ 65b53bb29fSJung-uk Kim 66b53bb29fSJung-uk Kim #ifndef yylen 67b53bb29fSJung-uk Kim #define yylen calc_code_all_len 68b53bb29fSJung-uk Kim #endif /* yylen */ 69b53bb29fSJung-uk Kim 70b53bb29fSJung-uk Kim #ifndef yydefred 71b53bb29fSJung-uk Kim #define yydefred calc_code_all_defred 72b53bb29fSJung-uk Kim #endif /* yydefred */ 73b53bb29fSJung-uk Kim 74b53bb29fSJung-uk Kim #ifndef yystos 75b53bb29fSJung-uk Kim #define yystos calc_code_all_stos 76b53bb29fSJung-uk Kim #endif /* yystos */ 77b53bb29fSJung-uk Kim 78b53bb29fSJung-uk Kim #ifndef yydgoto 79b53bb29fSJung-uk Kim #define yydgoto calc_code_all_dgoto 80b53bb29fSJung-uk Kim #endif /* yydgoto */ 81b53bb29fSJung-uk Kim 82b53bb29fSJung-uk Kim #ifndef yysindex 83b53bb29fSJung-uk Kim #define yysindex calc_code_all_sindex 84b53bb29fSJung-uk Kim #endif /* yysindex */ 85b53bb29fSJung-uk Kim 86b53bb29fSJung-uk Kim #ifndef yyrindex 87b53bb29fSJung-uk Kim #define yyrindex calc_code_all_rindex 88b53bb29fSJung-uk Kim #endif /* yyrindex */ 89b53bb29fSJung-uk Kim 90b53bb29fSJung-uk Kim #ifndef yygindex 91b53bb29fSJung-uk Kim #define yygindex calc_code_all_gindex 92b53bb29fSJung-uk Kim #endif /* yygindex */ 93b53bb29fSJung-uk Kim 94b53bb29fSJung-uk Kim #ifndef yytable 95b53bb29fSJung-uk Kim #define yytable calc_code_all_table 96b53bb29fSJung-uk Kim #endif /* yytable */ 97b53bb29fSJung-uk Kim 98b53bb29fSJung-uk Kim #ifndef yycheck 99b53bb29fSJung-uk Kim #define yycheck calc_code_all_check 100b53bb29fSJung-uk Kim #endif /* yycheck */ 101b53bb29fSJung-uk Kim 102b53bb29fSJung-uk Kim #ifndef yyname 103b53bb29fSJung-uk Kim #define yyname calc_code_all_name 104b53bb29fSJung-uk Kim #endif /* yyname */ 105b53bb29fSJung-uk Kim 106b53bb29fSJung-uk Kim #ifndef yyrule 107b53bb29fSJung-uk Kim #define yyrule calc_code_all_rule 108b53bb29fSJung-uk Kim #endif /* yyrule */ 109b53bb29fSJung-uk Kim 110b53bb29fSJung-uk Kim #if YYBTYACC 111b53bb29fSJung-uk Kim 112b53bb29fSJung-uk Kim #ifndef yycindex 113b53bb29fSJung-uk Kim #define yycindex calc_code_all_cindex 114b53bb29fSJung-uk Kim #endif /* yycindex */ 115b53bb29fSJung-uk Kim 116b53bb29fSJung-uk Kim #ifndef yyctable 117b53bb29fSJung-uk Kim #define yyctable calc_code_all_ctable 118b53bb29fSJung-uk Kim #endif /* yyctable */ 119b53bb29fSJung-uk Kim 120b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 121b53bb29fSJung-uk Kim 122b53bb29fSJung-uk Kim #define YYPREFIX "calc_code_all_" 123b53bb29fSJung-uk Kim 124b53bb29fSJung-uk Kim #define YYPURE 0 125b53bb29fSJung-uk Kim 126b53bb29fSJung-uk Kim #line 9 "calc_code_all.y" 127b53bb29fSJung-uk Kim # include <stdio.h> 128b53bb29fSJung-uk Kim # include <ctype.h> 129b53bb29fSJung-uk Kim 130b53bb29fSJung-uk Kim int regs[26]; 131b53bb29fSJung-uk Kim int base; 132b53bb29fSJung-uk Kim 133b53bb29fSJung-uk Kim extern int yylex(void); 134b53bb29fSJung-uk Kim static void yyerror(const char *s); 135b53bb29fSJung-uk Kim 136b53bb29fSJung-uk Kim #line 137 "calc_code_all.tab.c" 137b53bb29fSJung-uk Kim 138b53bb29fSJung-uk Kim #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 139b53bb29fSJung-uk Kim /* Default: YYSTYPE is the semantic value type. */ 140b53bb29fSJung-uk Kim typedef int YYSTYPE; 141b53bb29fSJung-uk Kim # define YYSTYPE_IS_DECLARED 1 142b53bb29fSJung-uk Kim #endif 143b53bb29fSJung-uk Kim 144b53bb29fSJung-uk Kim /* compatibility with bison */ 145b53bb29fSJung-uk Kim #ifdef YYPARSE_PARAM 146b53bb29fSJung-uk Kim /* compatibility with FreeBSD */ 147b53bb29fSJung-uk Kim # ifdef YYPARSE_PARAM_TYPE 148b53bb29fSJung-uk Kim # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 149b53bb29fSJung-uk Kim # else 150b53bb29fSJung-uk Kim # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 151b53bb29fSJung-uk Kim # endif 152b53bb29fSJung-uk Kim #else 153b53bb29fSJung-uk Kim # define YYPARSE_DECL() yyparse(void) 154b53bb29fSJung-uk Kim #endif 155b53bb29fSJung-uk Kim 156b53bb29fSJung-uk Kim /* Parameters sent to lex. */ 157b53bb29fSJung-uk Kim #ifdef YYLEX_PARAM 158b53bb29fSJung-uk Kim # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 159b53bb29fSJung-uk Kim # define YYLEX yylex(YYLEX_PARAM) 160b53bb29fSJung-uk Kim #else 161b53bb29fSJung-uk Kim # define YYLEX_DECL() yylex(void) 162b53bb29fSJung-uk Kim # define YYLEX yylex() 163b53bb29fSJung-uk Kim #endif 164b53bb29fSJung-uk Kim 165b53bb29fSJung-uk Kim /* Parameters sent to yyerror. */ 166b53bb29fSJung-uk Kim #ifndef YYERROR_DECL 167b53bb29fSJung-uk Kim #define YYERROR_DECL() yyerror(const char *s) 168b53bb29fSJung-uk Kim #endif 169b53bb29fSJung-uk Kim #ifndef YYERROR_CALL 170b53bb29fSJung-uk Kim #define YYERROR_CALL(msg) yyerror(msg) 171b53bb29fSJung-uk Kim #endif 172b53bb29fSJung-uk Kim 173b53bb29fSJung-uk Kim extern int YYPARSE_DECL(); 174b53bb29fSJung-uk Kim 175b53bb29fSJung-uk Kim #define DIGIT 257 176b53bb29fSJung-uk Kim #define LETTER 258 177b53bb29fSJung-uk Kim #define UMINUS 259 178b53bb29fSJung-uk Kim #define YYERRCODE 256 179b53bb29fSJung-uk Kim typedef int YYINT; 180b53bb29fSJung-uk Kim static const YYINT calc_code_all_lhs[] = { -1, 181b53bb29fSJung-uk Kim 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 182b53bb29fSJung-uk Kim 2, 2, 2, 2, 2, 2, 3, 3, 183b53bb29fSJung-uk Kim }; 184b53bb29fSJung-uk Kim static const YYINT calc_code_all_len[] = { 2, 185b53bb29fSJung-uk Kim 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 186b53bb29fSJung-uk Kim 3, 3, 3, 2, 1, 1, 1, 2, 187b53bb29fSJung-uk Kim }; 188b53bb29fSJung-uk Kim static const YYINT calc_code_all_defred[] = { 1, 189b53bb29fSJung-uk Kim 0, 0, 17, 0, 0, 0, 0, 0, 0, 3, 190b53bb29fSJung-uk Kim 0, 15, 14, 0, 2, 0, 0, 0, 0, 0, 191b53bb29fSJung-uk Kim 0, 0, 18, 0, 6, 0, 0, 0, 0, 9, 192b53bb29fSJung-uk Kim 10, 11, 193b53bb29fSJung-uk Kim }; 194b53bb29fSJung-uk Kim #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 195b53bb29fSJung-uk Kim static const YYINT calc_code_all_stos[] = { 0, 196b53bb29fSJung-uk Kim 261, 256, 257, 258, 45, 40, 262, 263, 264, 10, 197b53bb29fSJung-uk Kim 61, 258, 263, 263, 10, 124, 38, 43, 45, 42, 198b53bb29fSJung-uk Kim 47, 37, 257, 263, 41, 263, 263, 263, 263, 263, 199b53bb29fSJung-uk Kim 263, 263, 200b53bb29fSJung-uk Kim }; 201b53bb29fSJung-uk Kim #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 202b53bb29fSJung-uk Kim static const YYINT calc_code_all_dgoto[] = { 1, 203b53bb29fSJung-uk Kim 7, 8, 9, 204b53bb29fSJung-uk Kim }; 205b53bb29fSJung-uk Kim static const YYINT calc_code_all_sindex[] = { 0, 206b53bb29fSJung-uk Kim -40, -7, 0, -55, -38, -38, 1, -29, -247, 0, 207b53bb29fSJung-uk Kim -38, 0, 0, 22, 0, -38, -38, -38, -38, -38, 208b53bb29fSJung-uk Kim -38, -38, 0, -29, 0, 51, 60, -20, -20, 0, 209b53bb29fSJung-uk Kim 0, 0, 210b53bb29fSJung-uk Kim }; 211b53bb29fSJung-uk Kim static const YYINT calc_code_all_rindex[] = { 0, 212b53bb29fSJung-uk Kim 0, 0, 0, 2, 0, 0, 0, 9, -9, 0, 213b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214b53bb29fSJung-uk Kim 0, 0, 0, 10, 0, -6, 14, 5, 13, 0, 215b53bb29fSJung-uk Kim 0, 0, 216b53bb29fSJung-uk Kim }; 217b53bb29fSJung-uk Kim #if YYBTYACC 218b53bb29fSJung-uk Kim static const YYINT calc_code_all_cindex[] = { 0, 219b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222b53bb29fSJung-uk Kim 0, 0, 223b53bb29fSJung-uk Kim }; 224b53bb29fSJung-uk Kim #endif 225b53bb29fSJung-uk Kim static const YYINT calc_code_all_gindex[] = { 0, 226b53bb29fSJung-uk Kim 0, 65, 0, 227b53bb29fSJung-uk Kim }; 228b53bb29fSJung-uk Kim #define YYTABLESIZE 220 229b53bb29fSJung-uk Kim static const YYINT calc_code_all_table[] = { 6, 230b53bb29fSJung-uk Kim 16, 6, 10, 13, 5, 11, 5, 22, 17, 23, 231b53bb29fSJung-uk Kim 15, 15, 20, 18, 7, 19, 22, 21, 4, 5, 232b53bb29fSJung-uk Kim 0, 20, 8, 12, 0, 0, 21, 16, 16, 0, 233b53bb29fSJung-uk Kim 0, 16, 16, 16, 13, 16, 0, 16, 15, 15, 234b53bb29fSJung-uk Kim 0, 0, 7, 15, 15, 7, 15, 7, 15, 7, 235b53bb29fSJung-uk Kim 8, 12, 0, 8, 12, 8, 0, 8, 22, 17, 236b53bb29fSJung-uk Kim 0, 0, 25, 20, 18, 0, 19, 0, 21, 13, 237b53bb29fSJung-uk Kim 14, 0, 0, 0, 0, 24, 0, 0, 0, 0, 238b53bb29fSJung-uk Kim 26, 27, 28, 29, 30, 31, 32, 22, 17, 0, 239b53bb29fSJung-uk Kim 0, 0, 20, 18, 16, 19, 22, 21, 0, 0, 240b53bb29fSJung-uk Kim 0, 20, 18, 0, 19, 0, 21, 0, 0, 0, 241b53bb29fSJung-uk Kim 0, 0, 0, 0, 16, 0, 0, 13, 0, 0, 242b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 15, 0, 0, 7, 0, 243b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 8, 12, 0, 0, 244b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 245b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251b53bb29fSJung-uk Kim 0, 0, 0, 0, 0, 2, 3, 4, 3, 12, 252b53bb29fSJung-uk Kim }; 253b53bb29fSJung-uk Kim static const YYINT calc_code_all_check[] = { 40, 254b53bb29fSJung-uk Kim 10, 40, 10, 10, 45, 61, 45, 37, 38, 257, 255b53bb29fSJung-uk Kim 10, 10, 42, 43, 10, 45, 37, 47, 10, 10, 256b53bb29fSJung-uk Kim -1, 42, 10, 10, -1, -1, 47, 37, 38, -1, 257b53bb29fSJung-uk Kim -1, 41, 42, 43, 41, 45, -1, 47, 37, 38, 258b53bb29fSJung-uk Kim -1, -1, 38, 42, 43, 41, 45, 43, 47, 45, 259b53bb29fSJung-uk Kim 38, 38, -1, 41, 41, 43, -1, 45, 37, 38, 260b53bb29fSJung-uk Kim -1, -1, 41, 42, 43, -1, 45, -1, 47, 5, 261b53bb29fSJung-uk Kim 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, 262b53bb29fSJung-uk Kim 16, 17, 18, 19, 20, 21, 22, 37, 38, -1, 263b53bb29fSJung-uk Kim -1, -1, 42, 43, 124, 45, 37, 47, -1, -1, 264b53bb29fSJung-uk Kim -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, 265b53bb29fSJung-uk Kim -1, -1, -1, -1, 124, -1, -1, 124, -1, -1, 266b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, 124, -1, -1, 124, -1, 267b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, 124, 124, -1, -1, 268b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, 269b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 271b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 273b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 274b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, 256, 257, 258, 257, 258, 276b53bb29fSJung-uk Kim }; 277b53bb29fSJung-uk Kim #if YYBTYACC 278b53bb29fSJung-uk Kim static const YYINT calc_code_all_ctable[] = { -1, 279b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 283b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 291b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300b53bb29fSJung-uk Kim -1, -1, -1, -1, -1, -1, -1, -1, -1, 301b53bb29fSJung-uk Kim }; 302b53bb29fSJung-uk Kim #endif 303b53bb29fSJung-uk Kim #define YYFINAL 1 304b53bb29fSJung-uk Kim #ifndef YYDEBUG 305b53bb29fSJung-uk Kim #define YYDEBUG 0 306b53bb29fSJung-uk Kim #endif 307b53bb29fSJung-uk Kim #define YYMAXTOKEN 259 308b53bb29fSJung-uk Kim #define YYUNDFTOKEN 265 309b53bb29fSJung-uk Kim #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 310b53bb29fSJung-uk Kim #if YYDEBUG 311b53bb29fSJung-uk Kim static const char *const calc_code_all_name[] = { 312b53bb29fSJung-uk Kim 313b53bb29fSJung-uk Kim "$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, 314b53bb29fSJung-uk Kim 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0, 315b53bb29fSJung-uk Kim 0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 316b53bb29fSJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0, 317b53bb29fSJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 318b53bb29fSJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 319b53bb29fSJung-uk Kim 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 320b53bb29fSJung-uk Kim 0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number", 321b53bb29fSJung-uk Kim "illegal-symbol", 322b53bb29fSJung-uk Kim }; 323b53bb29fSJung-uk Kim static const char *const calc_code_all_rule[] = { 324b53bb29fSJung-uk Kim "$accept : list", 325b53bb29fSJung-uk Kim "list :", 326b53bb29fSJung-uk Kim "list : list stat '\\n'", 327b53bb29fSJung-uk Kim "list : list error '\\n'", 328b53bb29fSJung-uk Kim "stat : expr", 329b53bb29fSJung-uk Kim "stat : LETTER '=' expr", 330b53bb29fSJung-uk Kim "expr : '(' expr ')'", 331b53bb29fSJung-uk Kim "expr : expr '+' expr", 332b53bb29fSJung-uk Kim "expr : expr '-' expr", 333b53bb29fSJung-uk Kim "expr : expr '*' expr", 334b53bb29fSJung-uk Kim "expr : expr '/' expr", 335b53bb29fSJung-uk Kim "expr : expr '%' expr", 336b53bb29fSJung-uk Kim "expr : expr '&' expr", 337b53bb29fSJung-uk Kim "expr : expr '|' expr", 338b53bb29fSJung-uk Kim "expr : '-' expr", 339b53bb29fSJung-uk Kim "expr : LETTER", 340b53bb29fSJung-uk Kim "expr : number", 341b53bb29fSJung-uk Kim "number : DIGIT", 342b53bb29fSJung-uk Kim "number : number DIGIT", 343b53bb29fSJung-uk Kim 344b53bb29fSJung-uk Kim }; 345b53bb29fSJung-uk Kim #endif 346b53bb29fSJung-uk Kim 347b53bb29fSJung-uk Kim #if YYDEBUG 348b53bb29fSJung-uk Kim int yydebug; 349b53bb29fSJung-uk Kim #endif 350b53bb29fSJung-uk Kim 351b53bb29fSJung-uk Kim int yyerrflag; 352b53bb29fSJung-uk Kim int yychar; 353b53bb29fSJung-uk Kim YYSTYPE yyval; 354b53bb29fSJung-uk Kim YYSTYPE yylval; 355b53bb29fSJung-uk Kim int yynerrs; 356b53bb29fSJung-uk Kim 357b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 358b53bb29fSJung-uk Kim YYLTYPE yyloc; /* position returned by actions */ 359b53bb29fSJung-uk Kim YYLTYPE yylloc; /* position from the lexer */ 360b53bb29fSJung-uk Kim #endif 361b53bb29fSJung-uk Kim 362b53bb29fSJung-uk Kim /* %code "requires" block start */ 363b53bb29fSJung-uk Kim #line 3 "calc_code_all.y" 364b53bb29fSJung-uk Kim /* CODE-REQUIRES */ 365b53bb29fSJung-uk Kim /* %code "requires" block end */ 366b53bb29fSJung-uk Kim #line 367 "calc_code_all.tab.c" 367b53bb29fSJung-uk Kim 368b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 369b53bb29fSJung-uk Kim #ifndef YYLLOC_DEFAULT 370b53bb29fSJung-uk Kim #define YYLLOC_DEFAULT(loc, rhs, n) \ 371b53bb29fSJung-uk Kim do \ 372b53bb29fSJung-uk Kim { \ 373b53bb29fSJung-uk Kim if (n == 0) \ 374b53bb29fSJung-uk Kim { \ 375b53bb29fSJung-uk Kim (loc).first_line = YYRHSLOC(rhs, 0).last_line; \ 376b53bb29fSJung-uk Kim (loc).first_column = YYRHSLOC(rhs, 0).last_column; \ 377b53bb29fSJung-uk Kim (loc).last_line = YYRHSLOC(rhs, 0).last_line; \ 378b53bb29fSJung-uk Kim (loc).last_column = YYRHSLOC(rhs, 0).last_column; \ 379b53bb29fSJung-uk Kim } \ 380b53bb29fSJung-uk Kim else \ 381b53bb29fSJung-uk Kim { \ 382b53bb29fSJung-uk Kim (loc).first_line = YYRHSLOC(rhs, 1).first_line; \ 383b53bb29fSJung-uk Kim (loc).first_column = YYRHSLOC(rhs, 1).first_column; \ 384b53bb29fSJung-uk Kim (loc).last_line = YYRHSLOC(rhs, n).last_line; \ 385b53bb29fSJung-uk Kim (loc).last_column = YYRHSLOC(rhs, n).last_column; \ 386b53bb29fSJung-uk Kim } \ 387b53bb29fSJung-uk Kim } while (0) 388b53bb29fSJung-uk Kim #endif /* YYLLOC_DEFAULT */ 389b53bb29fSJung-uk Kim #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 390b53bb29fSJung-uk Kim #if YYBTYACC 391b53bb29fSJung-uk Kim 392b53bb29fSJung-uk Kim #ifndef YYLVQUEUEGROWTH 393b53bb29fSJung-uk Kim #define YYLVQUEUEGROWTH 32 394b53bb29fSJung-uk Kim #endif 395b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 396b53bb29fSJung-uk Kim 397b53bb29fSJung-uk Kim /* define the initial stack-sizes */ 398b53bb29fSJung-uk Kim #ifdef YYSTACKSIZE 399b53bb29fSJung-uk Kim #undef YYMAXDEPTH 400b53bb29fSJung-uk Kim #define YYMAXDEPTH YYSTACKSIZE 401b53bb29fSJung-uk Kim #else 402b53bb29fSJung-uk Kim #ifdef YYMAXDEPTH 403b53bb29fSJung-uk Kim #define YYSTACKSIZE YYMAXDEPTH 404b53bb29fSJung-uk Kim #else 405b53bb29fSJung-uk Kim #define YYSTACKSIZE 10000 406b53bb29fSJung-uk Kim #define YYMAXDEPTH 10000 407b53bb29fSJung-uk Kim #endif 408b53bb29fSJung-uk Kim #endif 409b53bb29fSJung-uk Kim 410b53bb29fSJung-uk Kim #ifndef YYINITSTACKSIZE 411b53bb29fSJung-uk Kim #define YYINITSTACKSIZE 200 412b53bb29fSJung-uk Kim #endif 413b53bb29fSJung-uk Kim 414b53bb29fSJung-uk Kim typedef struct { 415b53bb29fSJung-uk Kim unsigned stacksize; 416b53bb29fSJung-uk Kim YYINT *s_base; 417b53bb29fSJung-uk Kim YYINT *s_mark; 418b53bb29fSJung-uk Kim YYINT *s_last; 419b53bb29fSJung-uk Kim YYSTYPE *l_base; 420b53bb29fSJung-uk Kim YYSTYPE *l_mark; 421b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 422b53bb29fSJung-uk Kim YYLTYPE *p_base; 423b53bb29fSJung-uk Kim YYLTYPE *p_mark; 424b53bb29fSJung-uk Kim #endif 425b53bb29fSJung-uk Kim } YYSTACKDATA; 426b53bb29fSJung-uk Kim #if YYBTYACC 427b53bb29fSJung-uk Kim 428b53bb29fSJung-uk Kim struct YYParseState_s 429b53bb29fSJung-uk Kim { 430b53bb29fSJung-uk Kim struct YYParseState_s *save; /* Previously saved parser state */ 431b53bb29fSJung-uk Kim YYSTACKDATA yystack; /* saved parser stack */ 432b53bb29fSJung-uk Kim int state; /* saved parser state */ 433b53bb29fSJung-uk Kim int errflag; /* saved error recovery status */ 434b53bb29fSJung-uk Kim int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 435b53bb29fSJung-uk Kim YYINT ctry; /* saved index in yyctable[] for this conflict */ 436b53bb29fSJung-uk Kim }; 437b53bb29fSJung-uk Kim typedef struct YYParseState_s YYParseState; 438b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 439b53bb29fSJung-uk Kim /* variables for the parser stack */ 440b53bb29fSJung-uk Kim static YYSTACKDATA yystack; 441b53bb29fSJung-uk Kim #if YYBTYACC 442b53bb29fSJung-uk Kim 443b53bb29fSJung-uk Kim /* Current parser state */ 444b53bb29fSJung-uk Kim static YYParseState *yyps = 0; 445b53bb29fSJung-uk Kim 446b53bb29fSJung-uk Kim /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 447b53bb29fSJung-uk Kim static YYParseState *yypath = 0; 448b53bb29fSJung-uk Kim 449b53bb29fSJung-uk Kim /* Base of the lexical value queue */ 450b53bb29fSJung-uk Kim static YYSTYPE *yylvals = 0; 451b53bb29fSJung-uk Kim 452b53bb29fSJung-uk Kim /* Current position at lexical value queue */ 453b53bb29fSJung-uk Kim static YYSTYPE *yylvp = 0; 454b53bb29fSJung-uk Kim 455b53bb29fSJung-uk Kim /* End position of lexical value queue */ 456b53bb29fSJung-uk Kim static YYSTYPE *yylve = 0; 457b53bb29fSJung-uk Kim 458b53bb29fSJung-uk Kim /* The last allocated position at the lexical value queue */ 459b53bb29fSJung-uk Kim static YYSTYPE *yylvlim = 0; 460b53bb29fSJung-uk Kim 461b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 462b53bb29fSJung-uk Kim /* Base of the lexical position queue */ 463b53bb29fSJung-uk Kim static YYLTYPE *yylpsns = 0; 464b53bb29fSJung-uk Kim 465b53bb29fSJung-uk Kim /* Current position at lexical position queue */ 466b53bb29fSJung-uk Kim static YYLTYPE *yylpp = 0; 467b53bb29fSJung-uk Kim 468b53bb29fSJung-uk Kim /* End position of lexical position queue */ 469b53bb29fSJung-uk Kim static YYLTYPE *yylpe = 0; 470b53bb29fSJung-uk Kim 471b53bb29fSJung-uk Kim /* The last allocated position at the lexical position queue */ 472b53bb29fSJung-uk Kim static YYLTYPE *yylplim = 0; 473b53bb29fSJung-uk Kim #endif 474b53bb29fSJung-uk Kim 475b53bb29fSJung-uk Kim /* Current position at lexical token queue */ 476b53bb29fSJung-uk Kim static YYINT *yylexp = 0; 477b53bb29fSJung-uk Kim 478b53bb29fSJung-uk Kim static YYINT *yylexemes = 0; 479b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 480b53bb29fSJung-uk Kim 481b53bb29fSJung-uk Kim /* %code "provides" block start */ 482b53bb29fSJung-uk Kim #line 4 "calc_code_all.y" 483b53bb29fSJung-uk Kim /* CODE-PROVIDES */ 484b53bb29fSJung-uk Kim #line 6 "calc_code_all.y" 485b53bb29fSJung-uk Kim /* CODE-PROVIDES2 */ 486b53bb29fSJung-uk Kim /* %code "provides" block end */ 487b53bb29fSJung-uk Kim #line 488 "calc_code_all.tab.c" 488b53bb29fSJung-uk Kim 489b53bb29fSJung-uk Kim /* %code "" block start */ 490b53bb29fSJung-uk Kim #line 1 "calc_code_all.y" 491b53bb29fSJung-uk Kim /* CODE-DEFAULT2 */ 492b53bb29fSJung-uk Kim #line 2 "calc_code_all.y" 493b53bb29fSJung-uk Kim /* CODE-DEFAULT */ 494b53bb29fSJung-uk Kim /* %code "" block end */ 495b53bb29fSJung-uk Kim #line 496 "calc_code_all.tab.c" 496b53bb29fSJung-uk Kim #line 73 "calc_code_all.y" 497b53bb29fSJung-uk Kim /* start of programs */ 498b53bb29fSJung-uk Kim 499b53bb29fSJung-uk Kim int 500b53bb29fSJung-uk Kim main (void) 501b53bb29fSJung-uk Kim { 502b53bb29fSJung-uk Kim while(!feof(stdin)) { 503b53bb29fSJung-uk Kim yyparse(); 504b53bb29fSJung-uk Kim } 505b53bb29fSJung-uk Kim return 0; 506b53bb29fSJung-uk Kim } 507b53bb29fSJung-uk Kim 508b53bb29fSJung-uk Kim static void 509b53bb29fSJung-uk Kim yyerror(const char *s) 510b53bb29fSJung-uk Kim { 511b53bb29fSJung-uk Kim fprintf(stderr, "%s\n", s); 512b53bb29fSJung-uk Kim } 513b53bb29fSJung-uk Kim 514b53bb29fSJung-uk Kim int 515b53bb29fSJung-uk Kim yylex(void) 516b53bb29fSJung-uk Kim { 517b53bb29fSJung-uk Kim /* lexical analysis routine */ 518b53bb29fSJung-uk Kim /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 519b53bb29fSJung-uk Kim /* return DIGIT for a digit, yylval = 0 through 9 */ 520b53bb29fSJung-uk Kim /* all other characters are returned immediately */ 521b53bb29fSJung-uk Kim 522b53bb29fSJung-uk Kim int c; 523b53bb29fSJung-uk Kim 524b53bb29fSJung-uk Kim while( (c=getchar()) == ' ' ) { /* skip blanks */ } 525b53bb29fSJung-uk Kim 526b53bb29fSJung-uk Kim /* c is now nonblank */ 527b53bb29fSJung-uk Kim 528b53bb29fSJung-uk Kim if( islower( c )) { 529b53bb29fSJung-uk Kim yylval = c - 'a'; 530b53bb29fSJung-uk Kim return ( LETTER ); 531b53bb29fSJung-uk Kim } 532b53bb29fSJung-uk Kim if( isdigit( c )) { 533b53bb29fSJung-uk Kim yylval = c - '0'; 534b53bb29fSJung-uk Kim return ( DIGIT ); 535b53bb29fSJung-uk Kim } 536b53bb29fSJung-uk Kim return( c ); 537b53bb29fSJung-uk Kim } 538b53bb29fSJung-uk Kim #line 539 "calc_code_all.tab.c" 539b53bb29fSJung-uk Kim 540b53bb29fSJung-uk Kim /* For use in generated program */ 541b53bb29fSJung-uk Kim #define yydepth (int)(yystack.s_mark - yystack.s_base) 542b53bb29fSJung-uk Kim #if YYBTYACC 543b53bb29fSJung-uk Kim #define yytrial (yyps->save) 544b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 545b53bb29fSJung-uk Kim 546b53bb29fSJung-uk Kim #if YYDEBUG 547b53bb29fSJung-uk Kim #include <stdio.h> /* needed for printf */ 548b53bb29fSJung-uk Kim #endif 549b53bb29fSJung-uk Kim 550b53bb29fSJung-uk Kim #include <stdlib.h> /* needed for malloc, etc */ 551b53bb29fSJung-uk Kim #include <string.h> /* needed for memset */ 552b53bb29fSJung-uk Kim 553b53bb29fSJung-uk Kim /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 554b53bb29fSJung-uk Kim static int yygrowstack(YYSTACKDATA *data) 555b53bb29fSJung-uk Kim { 556b53bb29fSJung-uk Kim int i; 557b53bb29fSJung-uk Kim unsigned newsize; 558b53bb29fSJung-uk Kim YYINT *newss; 559b53bb29fSJung-uk Kim YYSTYPE *newvs; 560b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 561b53bb29fSJung-uk Kim YYLTYPE *newps; 562b53bb29fSJung-uk Kim #endif 563b53bb29fSJung-uk Kim 564b53bb29fSJung-uk Kim if ((newsize = data->stacksize) == 0) 565b53bb29fSJung-uk Kim newsize = YYINITSTACKSIZE; 566b53bb29fSJung-uk Kim else if (newsize >= YYMAXDEPTH) 567b53bb29fSJung-uk Kim return YYENOMEM; 568b53bb29fSJung-uk Kim else if ((newsize *= 2) > YYMAXDEPTH) 569b53bb29fSJung-uk Kim newsize = YYMAXDEPTH; 570b53bb29fSJung-uk Kim 571b53bb29fSJung-uk Kim i = (int) (data->s_mark - data->s_base); 572b53bb29fSJung-uk Kim newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 573*bf80e08eSJung-uk Kim if (newss == NULL) 574b53bb29fSJung-uk Kim return YYENOMEM; 575b53bb29fSJung-uk Kim 576b53bb29fSJung-uk Kim data->s_base = newss; 577b53bb29fSJung-uk Kim data->s_mark = newss + i; 578b53bb29fSJung-uk Kim 579b53bb29fSJung-uk Kim newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 580*bf80e08eSJung-uk Kim if (newvs == NULL) 581b53bb29fSJung-uk Kim return YYENOMEM; 582b53bb29fSJung-uk Kim 583b53bb29fSJung-uk Kim data->l_base = newvs; 584b53bb29fSJung-uk Kim data->l_mark = newvs + i; 585b53bb29fSJung-uk Kim 586b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 587b53bb29fSJung-uk Kim newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 588*bf80e08eSJung-uk Kim if (newps == NULL) 589b53bb29fSJung-uk Kim return YYENOMEM; 590b53bb29fSJung-uk Kim 591b53bb29fSJung-uk Kim data->p_base = newps; 592b53bb29fSJung-uk Kim data->p_mark = newps + i; 593b53bb29fSJung-uk Kim #endif 594b53bb29fSJung-uk Kim 595b53bb29fSJung-uk Kim data->stacksize = newsize; 596b53bb29fSJung-uk Kim data->s_last = data->s_base + newsize - 1; 597b53bb29fSJung-uk Kim 598b53bb29fSJung-uk Kim #if YYDEBUG 599b53bb29fSJung-uk Kim if (yydebug) 600b53bb29fSJung-uk Kim fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 601b53bb29fSJung-uk Kim #endif 602b53bb29fSJung-uk Kim return 0; 603b53bb29fSJung-uk Kim } 604b53bb29fSJung-uk Kim 605b53bb29fSJung-uk Kim #if YYPURE || defined(YY_NO_LEAKS) 606b53bb29fSJung-uk Kim static void yyfreestack(YYSTACKDATA *data) 607b53bb29fSJung-uk Kim { 608b53bb29fSJung-uk Kim free(data->s_base); 609b53bb29fSJung-uk Kim free(data->l_base); 610b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 611b53bb29fSJung-uk Kim free(data->p_base); 612b53bb29fSJung-uk Kim #endif 613b53bb29fSJung-uk Kim memset(data, 0, sizeof(*data)); 614b53bb29fSJung-uk Kim } 615b53bb29fSJung-uk Kim #else 616b53bb29fSJung-uk Kim #define yyfreestack(data) /* nothing */ 617b53bb29fSJung-uk Kim #endif /* YYPURE || defined(YY_NO_LEAKS) */ 618b53bb29fSJung-uk Kim #if YYBTYACC 619b53bb29fSJung-uk Kim 620b53bb29fSJung-uk Kim static YYParseState * 621b53bb29fSJung-uk Kim yyNewState(unsigned size) 622b53bb29fSJung-uk Kim { 623b53bb29fSJung-uk Kim YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 624b53bb29fSJung-uk Kim if (p == NULL) return NULL; 625b53bb29fSJung-uk Kim 626b53bb29fSJung-uk Kim p->yystack.stacksize = size; 627b53bb29fSJung-uk Kim if (size == 0) 628b53bb29fSJung-uk Kim { 629b53bb29fSJung-uk Kim p->yystack.s_base = NULL; 630b53bb29fSJung-uk Kim p->yystack.l_base = NULL; 631b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 632b53bb29fSJung-uk Kim p->yystack.p_base = NULL; 633b53bb29fSJung-uk Kim #endif 634b53bb29fSJung-uk Kim return p; 635b53bb29fSJung-uk Kim } 636b53bb29fSJung-uk Kim p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 637b53bb29fSJung-uk Kim if (p->yystack.s_base == NULL) return NULL; 638b53bb29fSJung-uk Kim p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 639b53bb29fSJung-uk Kim if (p->yystack.l_base == NULL) return NULL; 640b53bb29fSJung-uk Kim memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 641b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 642b53bb29fSJung-uk Kim p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 643b53bb29fSJung-uk Kim if (p->yystack.p_base == NULL) return NULL; 644b53bb29fSJung-uk Kim memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 645b53bb29fSJung-uk Kim #endif 646b53bb29fSJung-uk Kim 647b53bb29fSJung-uk Kim return p; 648b53bb29fSJung-uk Kim } 649b53bb29fSJung-uk Kim 650b53bb29fSJung-uk Kim static void 651b53bb29fSJung-uk Kim yyFreeState(YYParseState *p) 652b53bb29fSJung-uk Kim { 653b53bb29fSJung-uk Kim yyfreestack(&p->yystack); 654b53bb29fSJung-uk Kim free(p); 655b53bb29fSJung-uk Kim } 656b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 657b53bb29fSJung-uk Kim 658b53bb29fSJung-uk Kim #define YYABORT goto yyabort 659b53bb29fSJung-uk Kim #define YYREJECT goto yyabort 660b53bb29fSJung-uk Kim #define YYACCEPT goto yyaccept 661b53bb29fSJung-uk Kim #define YYERROR goto yyerrlab 662b53bb29fSJung-uk Kim #if YYBTYACC 663b53bb29fSJung-uk Kim #define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 664b53bb29fSJung-uk Kim #define YYVALID_NESTED do { if (yyps->save && \ 665b53bb29fSJung-uk Kim yyps->save->save == 0) goto yyvalid; } while(0) 666b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 667b53bb29fSJung-uk Kim 668b53bb29fSJung-uk Kim int 669b53bb29fSJung-uk Kim YYPARSE_DECL() 670b53bb29fSJung-uk Kim { 671b53bb29fSJung-uk Kim int yym, yyn, yystate, yyresult; 672b53bb29fSJung-uk Kim #if YYBTYACC 673b53bb29fSJung-uk Kim int yynewerrflag; 674b53bb29fSJung-uk Kim YYParseState *yyerrctx = NULL; 675b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 676b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 677b53bb29fSJung-uk Kim YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */ 678b53bb29fSJung-uk Kim #endif 679b53bb29fSJung-uk Kim #if YYDEBUG 680b53bb29fSJung-uk Kim const char *yys; 681b53bb29fSJung-uk Kim 682*bf80e08eSJung-uk Kim if ((yys = getenv("YYDEBUG")) != NULL) 683b53bb29fSJung-uk Kim { 684b53bb29fSJung-uk Kim yyn = *yys; 685b53bb29fSJung-uk Kim if (yyn >= '0' && yyn <= '9') 686b53bb29fSJung-uk Kim yydebug = yyn - '0'; 687b53bb29fSJung-uk Kim } 688b53bb29fSJung-uk Kim if (yydebug) 689b53bb29fSJung-uk Kim fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 690b53bb29fSJung-uk Kim #endif 691b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 692b53bb29fSJung-uk Kim memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range)); 693b53bb29fSJung-uk Kim #endif 694b53bb29fSJung-uk Kim 695b53bb29fSJung-uk Kim #if YYBTYACC 696b53bb29fSJung-uk Kim yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 697b53bb29fSJung-uk Kim yyps->save = 0; 698b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 699b53bb29fSJung-uk Kim yym = 0; 700b53bb29fSJung-uk Kim yyn = 0; 701b53bb29fSJung-uk Kim yynerrs = 0; 702b53bb29fSJung-uk Kim yyerrflag = 0; 703b53bb29fSJung-uk Kim yychar = YYEMPTY; 704b53bb29fSJung-uk Kim yystate = 0; 705b53bb29fSJung-uk Kim 706b53bb29fSJung-uk Kim #if YYPURE 707b53bb29fSJung-uk Kim memset(&yystack, 0, sizeof(yystack)); 708b53bb29fSJung-uk Kim #endif 709b53bb29fSJung-uk Kim 710b53bb29fSJung-uk Kim if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 711b53bb29fSJung-uk Kim yystack.s_mark = yystack.s_base; 712b53bb29fSJung-uk Kim yystack.l_mark = yystack.l_base; 713b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 714b53bb29fSJung-uk Kim yystack.p_mark = yystack.p_base; 715b53bb29fSJung-uk Kim #endif 716b53bb29fSJung-uk Kim yystate = 0; 717b53bb29fSJung-uk Kim *yystack.s_mark = 0; 718b53bb29fSJung-uk Kim 719b53bb29fSJung-uk Kim yyloop: 720b53bb29fSJung-uk Kim if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 721b53bb29fSJung-uk Kim if (yychar < 0) 722b53bb29fSJung-uk Kim { 723b53bb29fSJung-uk Kim #if YYBTYACC 724b53bb29fSJung-uk Kim do { 725b53bb29fSJung-uk Kim if (yylvp < yylve) 726b53bb29fSJung-uk Kim { 727b53bb29fSJung-uk Kim /* we're currently re-reading tokens */ 728b53bb29fSJung-uk Kim yylval = *yylvp++; 729b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 730b53bb29fSJung-uk Kim yylloc = *yylpp++; 731b53bb29fSJung-uk Kim #endif 732b53bb29fSJung-uk Kim yychar = *yylexp++; 733b53bb29fSJung-uk Kim break; 734b53bb29fSJung-uk Kim } 735b53bb29fSJung-uk Kim if (yyps->save) 736b53bb29fSJung-uk Kim { 737b53bb29fSJung-uk Kim /* in trial mode; save scanner results for future parse attempts */ 738b53bb29fSJung-uk Kim if (yylvp == yylvlim) 739b53bb29fSJung-uk Kim { /* Enlarge lexical value queue */ 740b53bb29fSJung-uk Kim size_t p = (size_t) (yylvp - yylvals); 741b53bb29fSJung-uk Kim size_t s = (size_t) (yylvlim - yylvals); 742b53bb29fSJung-uk Kim 743b53bb29fSJung-uk Kim s += YYLVQUEUEGROWTH; 744b53bb29fSJung-uk Kim if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 745b53bb29fSJung-uk Kim if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 746b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 747b53bb29fSJung-uk Kim if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 748b53bb29fSJung-uk Kim #endif 749b53bb29fSJung-uk Kim yylvp = yylve = yylvals + p; 750b53bb29fSJung-uk Kim yylvlim = yylvals + s; 751b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 752b53bb29fSJung-uk Kim yylpp = yylpe = yylpsns + p; 753b53bb29fSJung-uk Kim yylplim = yylpsns + s; 754b53bb29fSJung-uk Kim #endif 755b53bb29fSJung-uk Kim yylexp = yylexemes + p; 756b53bb29fSJung-uk Kim } 757b53bb29fSJung-uk Kim *yylexp = (YYINT) YYLEX; 758b53bb29fSJung-uk Kim *yylvp++ = yylval; 759b53bb29fSJung-uk Kim yylve++; 760b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 761b53bb29fSJung-uk Kim *yylpp++ = yylloc; 762b53bb29fSJung-uk Kim yylpe++; 763b53bb29fSJung-uk Kim #endif 764b53bb29fSJung-uk Kim yychar = *yylexp++; 765b53bb29fSJung-uk Kim break; 766b53bb29fSJung-uk Kim } 767b53bb29fSJung-uk Kim /* normal operation, no conflict encountered */ 768b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 769b53bb29fSJung-uk Kim yychar = YYLEX; 770b53bb29fSJung-uk Kim #if YYBTYACC 771b53bb29fSJung-uk Kim } while (0); 772b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 773b53bb29fSJung-uk Kim if (yychar < 0) yychar = YYEOF; 774b53bb29fSJung-uk Kim #if YYDEBUG 775b53bb29fSJung-uk Kim if (yydebug) 776b53bb29fSJung-uk Kim { 777b53bb29fSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 778b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 779b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yychar, yys); 780b53bb29fSJung-uk Kim #ifdef YYSTYPE_TOSTRING 781b53bb29fSJung-uk Kim #if YYBTYACC 782b53bb29fSJung-uk Kim if (!yytrial) 783b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 784b53bb29fSJung-uk Kim fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 785b53bb29fSJung-uk Kim #endif 786b53bb29fSJung-uk Kim fputc('\n', stderr); 787b53bb29fSJung-uk Kim } 788b53bb29fSJung-uk Kim #endif 789b53bb29fSJung-uk Kim } 790b53bb29fSJung-uk Kim #if YYBTYACC 791b53bb29fSJung-uk Kim 792b53bb29fSJung-uk Kim /* Do we have a conflict? */ 793b53bb29fSJung-uk Kim if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 794b53bb29fSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 795b53bb29fSJung-uk Kim { 796b53bb29fSJung-uk Kim YYINT ctry; 797b53bb29fSJung-uk Kim 798b53bb29fSJung-uk Kim if (yypath) 799b53bb29fSJung-uk Kim { 800b53bb29fSJung-uk Kim YYParseState *save; 801b53bb29fSJung-uk Kim #if YYDEBUG 802b53bb29fSJung-uk Kim if (yydebug) 803b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 804b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate); 805b53bb29fSJung-uk Kim #endif 806b53bb29fSJung-uk Kim /* Switch to the next conflict context */ 807b53bb29fSJung-uk Kim save = yypath; 808b53bb29fSJung-uk Kim yypath = save->save; 809b53bb29fSJung-uk Kim save->save = NULL; 810b53bb29fSJung-uk Kim ctry = save->ctry; 811b53bb29fSJung-uk Kim if (save->state != yystate) YYABORT; 812b53bb29fSJung-uk Kim yyFreeState(save); 813b53bb29fSJung-uk Kim 814b53bb29fSJung-uk Kim } 815b53bb29fSJung-uk Kim else 816b53bb29fSJung-uk Kim { 817b53bb29fSJung-uk Kim 818b53bb29fSJung-uk Kim /* Unresolved conflict - start/continue trial parse */ 819b53bb29fSJung-uk Kim YYParseState *save; 820b53bb29fSJung-uk Kim #if YYDEBUG 821b53bb29fSJung-uk Kim if (yydebug) 822b53bb29fSJung-uk Kim { 823b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 824b53bb29fSJung-uk Kim if (yyps->save) 825b53bb29fSJung-uk Kim fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 826b53bb29fSJung-uk Kim else 827b53bb29fSJung-uk Kim fputs("Starting trial parse.\n", stderr); 828b53bb29fSJung-uk Kim } 829b53bb29fSJung-uk Kim #endif 830b53bb29fSJung-uk Kim save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 831b53bb29fSJung-uk Kim if (save == NULL) goto yyenomem; 832b53bb29fSJung-uk Kim save->save = yyps->save; 833b53bb29fSJung-uk Kim save->state = yystate; 834b53bb29fSJung-uk Kim save->errflag = yyerrflag; 835b53bb29fSJung-uk Kim save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 836b53bb29fSJung-uk Kim memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 837b53bb29fSJung-uk Kim save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 838b53bb29fSJung-uk Kim memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 839b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 840b53bb29fSJung-uk Kim save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 841b53bb29fSJung-uk Kim memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 842b53bb29fSJung-uk Kim #endif 843b53bb29fSJung-uk Kim ctry = yytable[yyn]; 844b53bb29fSJung-uk Kim if (yyctable[ctry] == -1) 845b53bb29fSJung-uk Kim { 846b53bb29fSJung-uk Kim #if YYDEBUG 847b53bb29fSJung-uk Kim if (yydebug && yychar >= YYEOF) 848b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 849b53bb29fSJung-uk Kim #endif 850b53bb29fSJung-uk Kim ctry++; 851b53bb29fSJung-uk Kim } 852b53bb29fSJung-uk Kim save->ctry = ctry; 853b53bb29fSJung-uk Kim if (yyps->save == NULL) 854b53bb29fSJung-uk Kim { 855b53bb29fSJung-uk Kim /* If this is a first conflict in the stack, start saving lexemes */ 856b53bb29fSJung-uk Kim if (!yylexemes) 857b53bb29fSJung-uk Kim { 858b53bb29fSJung-uk Kim yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 859b53bb29fSJung-uk Kim if (yylexemes == NULL) goto yyenomem; 860b53bb29fSJung-uk Kim yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 861b53bb29fSJung-uk Kim if (yylvals == NULL) goto yyenomem; 862b53bb29fSJung-uk Kim yylvlim = yylvals + YYLVQUEUEGROWTH; 863b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 864b53bb29fSJung-uk Kim yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 865b53bb29fSJung-uk Kim if (yylpsns == NULL) goto yyenomem; 866b53bb29fSJung-uk Kim yylplim = yylpsns + YYLVQUEUEGROWTH; 867b53bb29fSJung-uk Kim #endif 868b53bb29fSJung-uk Kim } 869b53bb29fSJung-uk Kim if (yylvp == yylve) 870b53bb29fSJung-uk Kim { 871b53bb29fSJung-uk Kim yylvp = yylve = yylvals; 872b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 873b53bb29fSJung-uk Kim yylpp = yylpe = yylpsns; 874b53bb29fSJung-uk Kim #endif 875b53bb29fSJung-uk Kim yylexp = yylexemes; 876b53bb29fSJung-uk Kim if (yychar >= YYEOF) 877b53bb29fSJung-uk Kim { 878b53bb29fSJung-uk Kim *yylve++ = yylval; 879b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 880b53bb29fSJung-uk Kim *yylpe++ = yylloc; 881b53bb29fSJung-uk Kim #endif 882b53bb29fSJung-uk Kim *yylexp = (YYINT) yychar; 883b53bb29fSJung-uk Kim yychar = YYEMPTY; 884b53bb29fSJung-uk Kim } 885b53bb29fSJung-uk Kim } 886b53bb29fSJung-uk Kim } 887b53bb29fSJung-uk Kim if (yychar >= YYEOF) 888b53bb29fSJung-uk Kim { 889b53bb29fSJung-uk Kim yylvp--; 890b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 891b53bb29fSJung-uk Kim yylpp--; 892b53bb29fSJung-uk Kim #endif 893b53bb29fSJung-uk Kim yylexp--; 894b53bb29fSJung-uk Kim yychar = YYEMPTY; 895b53bb29fSJung-uk Kim } 896b53bb29fSJung-uk Kim save->lexeme = (int) (yylvp - yylvals); 897b53bb29fSJung-uk Kim yyps->save = save; 898b53bb29fSJung-uk Kim } 899b53bb29fSJung-uk Kim if (yytable[yyn] == ctry) 900b53bb29fSJung-uk Kim { 901b53bb29fSJung-uk Kim #if YYDEBUG 902b53bb29fSJung-uk Kim if (yydebug) 903b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 904b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 905b53bb29fSJung-uk Kim #endif 906b53bb29fSJung-uk Kim if (yychar < 0) 907b53bb29fSJung-uk Kim { 908b53bb29fSJung-uk Kim yylvp++; 909b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 910b53bb29fSJung-uk Kim yylpp++; 911b53bb29fSJung-uk Kim #endif 912b53bb29fSJung-uk Kim yylexp++; 913b53bb29fSJung-uk Kim } 914b53bb29fSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 915b53bb29fSJung-uk Kim goto yyoverflow; 916b53bb29fSJung-uk Kim yystate = yyctable[ctry]; 917b53bb29fSJung-uk Kim *++yystack.s_mark = (YYINT) yystate; 918b53bb29fSJung-uk Kim *++yystack.l_mark = yylval; 919b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 920b53bb29fSJung-uk Kim *++yystack.p_mark = yylloc; 921b53bb29fSJung-uk Kim #endif 922b53bb29fSJung-uk Kim yychar = YYEMPTY; 923b53bb29fSJung-uk Kim if (yyerrflag > 0) --yyerrflag; 924b53bb29fSJung-uk Kim goto yyloop; 925b53bb29fSJung-uk Kim } 926b53bb29fSJung-uk Kim else 927b53bb29fSJung-uk Kim { 928b53bb29fSJung-uk Kim yyn = yyctable[ctry]; 929b53bb29fSJung-uk Kim goto yyreduce; 930b53bb29fSJung-uk Kim } 931b53bb29fSJung-uk Kim } /* End of code dealing with conflicts */ 932b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 933b53bb29fSJung-uk Kim if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 934b53bb29fSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 935b53bb29fSJung-uk Kim { 936b53bb29fSJung-uk Kim #if YYDEBUG 937b53bb29fSJung-uk Kim if (yydebug) 938b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 939b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 940b53bb29fSJung-uk Kim #endif 941b53bb29fSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 942b53bb29fSJung-uk Kim yystate = yytable[yyn]; 943b53bb29fSJung-uk Kim *++yystack.s_mark = yytable[yyn]; 944b53bb29fSJung-uk Kim *++yystack.l_mark = yylval; 945b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 946b53bb29fSJung-uk Kim *++yystack.p_mark = yylloc; 947b53bb29fSJung-uk Kim #endif 948b53bb29fSJung-uk Kim yychar = YYEMPTY; 949b53bb29fSJung-uk Kim if (yyerrflag > 0) --yyerrflag; 950b53bb29fSJung-uk Kim goto yyloop; 951b53bb29fSJung-uk Kim } 952b53bb29fSJung-uk Kim if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 953b53bb29fSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 954b53bb29fSJung-uk Kim { 955b53bb29fSJung-uk Kim yyn = yytable[yyn]; 956b53bb29fSJung-uk Kim goto yyreduce; 957b53bb29fSJung-uk Kim } 958b53bb29fSJung-uk Kim if (yyerrflag != 0) goto yyinrecovery; 959b53bb29fSJung-uk Kim #if YYBTYACC 960b53bb29fSJung-uk Kim 961b53bb29fSJung-uk Kim yynewerrflag = 1; 962b53bb29fSJung-uk Kim goto yyerrhandler; 963b53bb29fSJung-uk Kim goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 964b53bb29fSJung-uk Kim 965b53bb29fSJung-uk Kim yyerrlab: 966b53bb29fSJung-uk Kim /* explicit YYERROR from an action -- pop the rhs of the rule reduced 967b53bb29fSJung-uk Kim * before looking for error recovery */ 968b53bb29fSJung-uk Kim yystack.s_mark -= yym; 969b53bb29fSJung-uk Kim yystate = *yystack.s_mark; 970b53bb29fSJung-uk Kim yystack.l_mark -= yym; 971b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 972b53bb29fSJung-uk Kim yystack.p_mark -= yym; 973b53bb29fSJung-uk Kim #endif 974b53bb29fSJung-uk Kim 975b53bb29fSJung-uk Kim yynewerrflag = 0; 976b53bb29fSJung-uk Kim yyerrhandler: 977b53bb29fSJung-uk Kim while (yyps->save) 978b53bb29fSJung-uk Kim { 979b53bb29fSJung-uk Kim int ctry; 980b53bb29fSJung-uk Kim YYParseState *save = yyps->save; 981b53bb29fSJung-uk Kim #if YYDEBUG 982b53bb29fSJung-uk Kim if (yydebug) 983b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 984b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yyps->save->state, 985b53bb29fSJung-uk Kim (int)(yylvp - yylvals - yyps->save->lexeme)); 986b53bb29fSJung-uk Kim #endif 987b53bb29fSJung-uk Kim /* Memorize most forward-looking error state in case it's really an error. */ 988b53bb29fSJung-uk Kim if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 989b53bb29fSJung-uk Kim { 990b53bb29fSJung-uk Kim /* Free old saved error context state */ 991b53bb29fSJung-uk Kim if (yyerrctx) yyFreeState(yyerrctx); 992b53bb29fSJung-uk Kim /* Create and fill out new saved error context state */ 993b53bb29fSJung-uk Kim yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 994b53bb29fSJung-uk Kim if (yyerrctx == NULL) goto yyenomem; 995b53bb29fSJung-uk Kim yyerrctx->save = yyps->save; 996b53bb29fSJung-uk Kim yyerrctx->state = yystate; 997b53bb29fSJung-uk Kim yyerrctx->errflag = yyerrflag; 998b53bb29fSJung-uk Kim yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 999b53bb29fSJung-uk Kim memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1000b53bb29fSJung-uk Kim yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 1001b53bb29fSJung-uk Kim memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1002b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1003b53bb29fSJung-uk Kim yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 1004b53bb29fSJung-uk Kim memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1005b53bb29fSJung-uk Kim #endif 1006b53bb29fSJung-uk Kim yyerrctx->lexeme = (int) (yylvp - yylvals); 1007b53bb29fSJung-uk Kim } 1008b53bb29fSJung-uk Kim yylvp = yylvals + save->lexeme; 1009b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1010b53bb29fSJung-uk Kim yylpp = yylpsns + save->lexeme; 1011b53bb29fSJung-uk Kim #endif 1012b53bb29fSJung-uk Kim yylexp = yylexemes + save->lexeme; 1013b53bb29fSJung-uk Kim yychar = YYEMPTY; 1014b53bb29fSJung-uk Kim yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 1015b53bb29fSJung-uk Kim memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1016b53bb29fSJung-uk Kim yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 1017b53bb29fSJung-uk Kim memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1018b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1019b53bb29fSJung-uk Kim yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 1020b53bb29fSJung-uk Kim memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1021b53bb29fSJung-uk Kim #endif 1022b53bb29fSJung-uk Kim ctry = ++save->ctry; 1023b53bb29fSJung-uk Kim yystate = save->state; 1024b53bb29fSJung-uk Kim /* We tried shift, try reduce now */ 1025b53bb29fSJung-uk Kim if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 1026b53bb29fSJung-uk Kim yyps->save = save->save; 1027b53bb29fSJung-uk Kim save->save = NULL; 1028b53bb29fSJung-uk Kim yyFreeState(save); 1029b53bb29fSJung-uk Kim 1030b53bb29fSJung-uk Kim /* Nothing left on the stack -- error */ 1031b53bb29fSJung-uk Kim if (!yyps->save) 1032b53bb29fSJung-uk Kim { 1033b53bb29fSJung-uk Kim #if YYDEBUG 1034b53bb29fSJung-uk Kim if (yydebug) 1035b53bb29fSJung-uk Kim fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 1036b53bb29fSJung-uk Kim YYPREFIX, yydepth); 1037b53bb29fSJung-uk Kim #endif 1038b53bb29fSJung-uk Kim /* Restore state as it was in the most forward-advanced error */ 1039b53bb29fSJung-uk Kim yylvp = yylvals + yyerrctx->lexeme; 1040b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1041b53bb29fSJung-uk Kim yylpp = yylpsns + yyerrctx->lexeme; 1042b53bb29fSJung-uk Kim #endif 1043b53bb29fSJung-uk Kim yylexp = yylexemes + yyerrctx->lexeme; 1044b53bb29fSJung-uk Kim yychar = yylexp[-1]; 1045b53bb29fSJung-uk Kim yylval = yylvp[-1]; 1046b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1047b53bb29fSJung-uk Kim yylloc = yylpp[-1]; 1048b53bb29fSJung-uk Kim #endif 1049b53bb29fSJung-uk Kim yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 1050b53bb29fSJung-uk Kim memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1051b53bb29fSJung-uk Kim yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 1052b53bb29fSJung-uk Kim memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1053b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1054b53bb29fSJung-uk Kim yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 1055b53bb29fSJung-uk Kim memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1056b53bb29fSJung-uk Kim #endif 1057b53bb29fSJung-uk Kim yystate = yyerrctx->state; 1058b53bb29fSJung-uk Kim yyFreeState(yyerrctx); 1059b53bb29fSJung-uk Kim yyerrctx = NULL; 1060b53bb29fSJung-uk Kim } 1061b53bb29fSJung-uk Kim yynewerrflag = 1; 1062b53bb29fSJung-uk Kim } 1063b53bb29fSJung-uk Kim if (yynewerrflag == 0) goto yyinrecovery; 1064b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1065b53bb29fSJung-uk Kim 1066b53bb29fSJung-uk Kim YYERROR_CALL("syntax error"); 1067b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1068b53bb29fSJung-uk Kim yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */ 1069b53bb29fSJung-uk Kim #endif 1070b53bb29fSJung-uk Kim 1071b53bb29fSJung-uk Kim #if !YYBTYACC 1072b53bb29fSJung-uk Kim goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 1073b53bb29fSJung-uk Kim yyerrlab: 1074b53bb29fSJung-uk Kim #endif 1075b53bb29fSJung-uk Kim ++yynerrs; 1076b53bb29fSJung-uk Kim 1077b53bb29fSJung-uk Kim yyinrecovery: 1078b53bb29fSJung-uk Kim if (yyerrflag < 3) 1079b53bb29fSJung-uk Kim { 1080b53bb29fSJung-uk Kim yyerrflag = 3; 1081b53bb29fSJung-uk Kim for (;;) 1082b53bb29fSJung-uk Kim { 1083b53bb29fSJung-uk Kim if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 1084b53bb29fSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 1085b53bb29fSJung-uk Kim { 1086b53bb29fSJung-uk Kim #if YYDEBUG 1087b53bb29fSJung-uk Kim if (yydebug) 1088b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 1089b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 1090b53bb29fSJung-uk Kim #endif 1091b53bb29fSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1092b53bb29fSJung-uk Kim yystate = yytable[yyn]; 1093b53bb29fSJung-uk Kim *++yystack.s_mark = yytable[yyn]; 1094b53bb29fSJung-uk Kim *++yystack.l_mark = yylval; 1095b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1096b53bb29fSJung-uk Kim /* lookahead position is error end position */ 1097b53bb29fSJung-uk Kim yyerror_loc_range[2] = yylloc; 1098b53bb29fSJung-uk Kim YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 1099b53bb29fSJung-uk Kim *++yystack.p_mark = yyloc; 1100b53bb29fSJung-uk Kim #endif 1101b53bb29fSJung-uk Kim goto yyloop; 1102b53bb29fSJung-uk Kim } 1103b53bb29fSJung-uk Kim else 1104b53bb29fSJung-uk Kim { 1105b53bb29fSJung-uk Kim #if YYDEBUG 1106b53bb29fSJung-uk Kim if (yydebug) 1107b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 1108b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, *yystack.s_mark); 1109b53bb29fSJung-uk Kim #endif 1110b53bb29fSJung-uk Kim if (yystack.s_mark <= yystack.s_base) goto yyabort; 1111b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1112b53bb29fSJung-uk Kim /* the current TOS position is the error start position */ 1113b53bb29fSJung-uk Kim yyerror_loc_range[1] = *yystack.p_mark; 1114b53bb29fSJung-uk Kim #endif 1115b53bb29fSJung-uk Kim #if defined(YYDESTRUCT_CALL) 1116b53bb29fSJung-uk Kim #if YYBTYACC 1117b53bb29fSJung-uk Kim if (!yytrial) 1118b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1119b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1120b53bb29fSJung-uk Kim YYDESTRUCT_CALL("error: discarding state", 1121b53bb29fSJung-uk Kim yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 1122b53bb29fSJung-uk Kim #else 1123b53bb29fSJung-uk Kim YYDESTRUCT_CALL("error: discarding state", 1124b53bb29fSJung-uk Kim yystos[*yystack.s_mark], yystack.l_mark); 1125b53bb29fSJung-uk Kim #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1126b53bb29fSJung-uk Kim #endif /* defined(YYDESTRUCT_CALL) */ 1127b53bb29fSJung-uk Kim --yystack.s_mark; 1128b53bb29fSJung-uk Kim --yystack.l_mark; 1129b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1130b53bb29fSJung-uk Kim --yystack.p_mark; 1131b53bb29fSJung-uk Kim #endif 1132b53bb29fSJung-uk Kim } 1133b53bb29fSJung-uk Kim } 1134b53bb29fSJung-uk Kim } 1135b53bb29fSJung-uk Kim else 1136b53bb29fSJung-uk Kim { 1137b53bb29fSJung-uk Kim if (yychar == YYEOF) goto yyabort; 1138b53bb29fSJung-uk Kim #if YYDEBUG 1139b53bb29fSJung-uk Kim if (yydebug) 1140b53bb29fSJung-uk Kim { 1141b53bb29fSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1142b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 1143b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yychar, yys); 1144b53bb29fSJung-uk Kim } 1145b53bb29fSJung-uk Kim #endif 1146b53bb29fSJung-uk Kim #if defined(YYDESTRUCT_CALL) 1147b53bb29fSJung-uk Kim #if YYBTYACC 1148b53bb29fSJung-uk Kim if (!yytrial) 1149b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1150b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1151b53bb29fSJung-uk Kim YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 1152b53bb29fSJung-uk Kim #else 1153b53bb29fSJung-uk Kim YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 1154b53bb29fSJung-uk Kim #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1155b53bb29fSJung-uk Kim #endif /* defined(YYDESTRUCT_CALL) */ 1156b53bb29fSJung-uk Kim yychar = YYEMPTY; 1157b53bb29fSJung-uk Kim goto yyloop; 1158b53bb29fSJung-uk Kim } 1159b53bb29fSJung-uk Kim 1160b53bb29fSJung-uk Kim yyreduce: 1161b53bb29fSJung-uk Kim yym = yylen[yyn]; 1162b53bb29fSJung-uk Kim #if YYDEBUG 1163b53bb29fSJung-uk Kim if (yydebug) 1164b53bb29fSJung-uk Kim { 1165b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 1166b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 1167b53bb29fSJung-uk Kim #ifdef YYSTYPE_TOSTRING 1168b53bb29fSJung-uk Kim #if YYBTYACC 1169b53bb29fSJung-uk Kim if (!yytrial) 1170b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1171b53bb29fSJung-uk Kim if (yym > 0) 1172b53bb29fSJung-uk Kim { 1173b53bb29fSJung-uk Kim int i; 1174b53bb29fSJung-uk Kim fputc('<', stderr); 1175b53bb29fSJung-uk Kim for (i = yym; i > 0; i--) 1176b53bb29fSJung-uk Kim { 1177b53bb29fSJung-uk Kim if (i != yym) fputs(", ", stderr); 1178b53bb29fSJung-uk Kim fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 1179b53bb29fSJung-uk Kim yystack.l_mark[1-i]), stderr); 1180b53bb29fSJung-uk Kim } 1181b53bb29fSJung-uk Kim fputc('>', stderr); 1182b53bb29fSJung-uk Kim } 1183b53bb29fSJung-uk Kim #endif 1184b53bb29fSJung-uk Kim fputc('\n', stderr); 1185b53bb29fSJung-uk Kim } 1186b53bb29fSJung-uk Kim #endif 1187b53bb29fSJung-uk Kim if (yym > 0) 1188b53bb29fSJung-uk Kim yyval = yystack.l_mark[1-yym]; 1189b53bb29fSJung-uk Kim else 1190b53bb29fSJung-uk Kim memset(&yyval, 0, sizeof yyval); 1191b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1192b53bb29fSJung-uk Kim 1193b53bb29fSJung-uk Kim /* Perform position reduction */ 1194b53bb29fSJung-uk Kim memset(&yyloc, 0, sizeof(yyloc)); 1195b53bb29fSJung-uk Kim #if YYBTYACC 1196b53bb29fSJung-uk Kim if (!yytrial) 1197b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1198b53bb29fSJung-uk Kim { 1199b53bb29fSJung-uk Kim YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym); 1200b53bb29fSJung-uk Kim /* just in case YYERROR is invoked within the action, save 1201b53bb29fSJung-uk Kim the start of the rhs as the error start position */ 1202b53bb29fSJung-uk Kim yyerror_loc_range[1] = yystack.p_mark[1-yym]; 1203b53bb29fSJung-uk Kim } 1204b53bb29fSJung-uk Kim #endif 1205b53bb29fSJung-uk Kim 1206b53bb29fSJung-uk Kim switch (yyn) 1207b53bb29fSJung-uk Kim { 1208b53bb29fSJung-uk Kim case 3: 1209b53bb29fSJung-uk Kim #line 35 "calc_code_all.y" 1210b53bb29fSJung-uk Kim { yyerrok ; } 1211b53bb29fSJung-uk Kim break; 1212b53bb29fSJung-uk Kim case 4: 1213b53bb29fSJung-uk Kim #line 39 "calc_code_all.y" 1214b53bb29fSJung-uk Kim { printf("%d\n",yystack.l_mark[0]);} 1215b53bb29fSJung-uk Kim break; 1216b53bb29fSJung-uk Kim case 5: 1217b53bb29fSJung-uk Kim #line 41 "calc_code_all.y" 1218b53bb29fSJung-uk Kim { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 1219b53bb29fSJung-uk Kim break; 1220b53bb29fSJung-uk Kim case 6: 1221b53bb29fSJung-uk Kim #line 45 "calc_code_all.y" 1222b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-1]; } 1223b53bb29fSJung-uk Kim break; 1224b53bb29fSJung-uk Kim case 7: 1225b53bb29fSJung-uk Kim #line 47 "calc_code_all.y" 1226b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 1227b53bb29fSJung-uk Kim break; 1228b53bb29fSJung-uk Kim case 8: 1229b53bb29fSJung-uk Kim #line 49 "calc_code_all.y" 1230b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 1231b53bb29fSJung-uk Kim break; 1232b53bb29fSJung-uk Kim case 9: 1233b53bb29fSJung-uk Kim #line 51 "calc_code_all.y" 1234b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 1235b53bb29fSJung-uk Kim break; 1236b53bb29fSJung-uk Kim case 10: 1237b53bb29fSJung-uk Kim #line 53 "calc_code_all.y" 1238b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 1239b53bb29fSJung-uk Kim break; 1240b53bb29fSJung-uk Kim case 11: 1241b53bb29fSJung-uk Kim #line 55 "calc_code_all.y" 1242b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 1243b53bb29fSJung-uk Kim break; 1244b53bb29fSJung-uk Kim case 12: 1245b53bb29fSJung-uk Kim #line 57 "calc_code_all.y" 1246b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 1247b53bb29fSJung-uk Kim break; 1248b53bb29fSJung-uk Kim case 13: 1249b53bb29fSJung-uk Kim #line 59 "calc_code_all.y" 1250b53bb29fSJung-uk Kim { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 1251b53bb29fSJung-uk Kim break; 1252b53bb29fSJung-uk Kim case 14: 1253b53bb29fSJung-uk Kim #line 61 "calc_code_all.y" 1254b53bb29fSJung-uk Kim { yyval = - yystack.l_mark[0]; } 1255b53bb29fSJung-uk Kim break; 1256b53bb29fSJung-uk Kim case 15: 1257b53bb29fSJung-uk Kim #line 63 "calc_code_all.y" 1258b53bb29fSJung-uk Kim { yyval = regs[yystack.l_mark[0]]; } 1259b53bb29fSJung-uk Kim break; 1260b53bb29fSJung-uk Kim case 17: 1261b53bb29fSJung-uk Kim #line 68 "calc_code_all.y" 1262b53bb29fSJung-uk Kim { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 1263b53bb29fSJung-uk Kim break; 1264b53bb29fSJung-uk Kim case 18: 1265b53bb29fSJung-uk Kim #line 70 "calc_code_all.y" 1266b53bb29fSJung-uk Kim { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 1267b53bb29fSJung-uk Kim break; 1268b53bb29fSJung-uk Kim #line 1269 "calc_code_all.tab.c" 1269b53bb29fSJung-uk Kim default: 1270b53bb29fSJung-uk Kim break; 1271b53bb29fSJung-uk Kim } 1272b53bb29fSJung-uk Kim yystack.s_mark -= yym; 1273b53bb29fSJung-uk Kim yystate = *yystack.s_mark; 1274b53bb29fSJung-uk Kim yystack.l_mark -= yym; 1275b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1276b53bb29fSJung-uk Kim yystack.p_mark -= yym; 1277b53bb29fSJung-uk Kim #endif 1278b53bb29fSJung-uk Kim yym = yylhs[yyn]; 1279b53bb29fSJung-uk Kim if (yystate == 0 && yym == 0) 1280b53bb29fSJung-uk Kim { 1281b53bb29fSJung-uk Kim #if YYDEBUG 1282b53bb29fSJung-uk Kim if (yydebug) 1283b53bb29fSJung-uk Kim { 1284b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1285b53bb29fSJung-uk Kim #ifdef YYSTYPE_TOSTRING 1286b53bb29fSJung-uk Kim #if YYBTYACC 1287b53bb29fSJung-uk Kim if (!yytrial) 1288b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1289b53bb29fSJung-uk Kim fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1290b53bb29fSJung-uk Kim #endif 1291b53bb29fSJung-uk Kim fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1292b53bb29fSJung-uk Kim } 1293b53bb29fSJung-uk Kim #endif 1294b53bb29fSJung-uk Kim yystate = YYFINAL; 1295b53bb29fSJung-uk Kim *++yystack.s_mark = YYFINAL; 1296b53bb29fSJung-uk Kim *++yystack.l_mark = yyval; 1297b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1298b53bb29fSJung-uk Kim *++yystack.p_mark = yyloc; 1299b53bb29fSJung-uk Kim #endif 1300b53bb29fSJung-uk Kim if (yychar < 0) 1301b53bb29fSJung-uk Kim { 1302b53bb29fSJung-uk Kim #if YYBTYACC 1303b53bb29fSJung-uk Kim do { 1304b53bb29fSJung-uk Kim if (yylvp < yylve) 1305b53bb29fSJung-uk Kim { 1306b53bb29fSJung-uk Kim /* we're currently re-reading tokens */ 1307b53bb29fSJung-uk Kim yylval = *yylvp++; 1308b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1309b53bb29fSJung-uk Kim yylloc = *yylpp++; 1310b53bb29fSJung-uk Kim #endif 1311b53bb29fSJung-uk Kim yychar = *yylexp++; 1312b53bb29fSJung-uk Kim break; 1313b53bb29fSJung-uk Kim } 1314b53bb29fSJung-uk Kim if (yyps->save) 1315b53bb29fSJung-uk Kim { 1316b53bb29fSJung-uk Kim /* in trial mode; save scanner results for future parse attempts */ 1317b53bb29fSJung-uk Kim if (yylvp == yylvlim) 1318b53bb29fSJung-uk Kim { /* Enlarge lexical value queue */ 1319b53bb29fSJung-uk Kim size_t p = (size_t) (yylvp - yylvals); 1320b53bb29fSJung-uk Kim size_t s = (size_t) (yylvlim - yylvals); 1321b53bb29fSJung-uk Kim 1322b53bb29fSJung-uk Kim s += YYLVQUEUEGROWTH; 1323b53bb29fSJung-uk Kim if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) 1324b53bb29fSJung-uk Kim goto yyenomem; 1325b53bb29fSJung-uk Kim if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1326b53bb29fSJung-uk Kim goto yyenomem; 1327b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1328b53bb29fSJung-uk Kim if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1329b53bb29fSJung-uk Kim goto yyenomem; 1330b53bb29fSJung-uk Kim #endif 1331b53bb29fSJung-uk Kim yylvp = yylve = yylvals + p; 1332b53bb29fSJung-uk Kim yylvlim = yylvals + s; 1333b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1334b53bb29fSJung-uk Kim yylpp = yylpe = yylpsns + p; 1335b53bb29fSJung-uk Kim yylplim = yylpsns + s; 1336b53bb29fSJung-uk Kim #endif 1337b53bb29fSJung-uk Kim yylexp = yylexemes + p; 1338b53bb29fSJung-uk Kim } 1339b53bb29fSJung-uk Kim *yylexp = (YYINT) YYLEX; 1340b53bb29fSJung-uk Kim *yylvp++ = yylval; 1341b53bb29fSJung-uk Kim yylve++; 1342b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1343b53bb29fSJung-uk Kim *yylpp++ = yylloc; 1344b53bb29fSJung-uk Kim yylpe++; 1345b53bb29fSJung-uk Kim #endif 1346b53bb29fSJung-uk Kim yychar = *yylexp++; 1347b53bb29fSJung-uk Kim break; 1348b53bb29fSJung-uk Kim } 1349b53bb29fSJung-uk Kim /* normal operation, no conflict encountered */ 1350b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1351b53bb29fSJung-uk Kim yychar = YYLEX; 1352b53bb29fSJung-uk Kim #if YYBTYACC 1353b53bb29fSJung-uk Kim } while (0); 1354b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1355b53bb29fSJung-uk Kim if (yychar < 0) yychar = YYEOF; 1356b53bb29fSJung-uk Kim #if YYDEBUG 1357b53bb29fSJung-uk Kim if (yydebug) 1358b53bb29fSJung-uk Kim { 1359b53bb29fSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 1360b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 1361b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1362b53bb29fSJung-uk Kim } 1363b53bb29fSJung-uk Kim #endif 1364b53bb29fSJung-uk Kim } 1365b53bb29fSJung-uk Kim if (yychar == YYEOF) goto yyaccept; 1366b53bb29fSJung-uk Kim goto yyloop; 1367b53bb29fSJung-uk Kim } 1368b53bb29fSJung-uk Kim if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1369b53bb29fSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1370b53bb29fSJung-uk Kim yystate = yytable[yyn]; 1371b53bb29fSJung-uk Kim else 1372b53bb29fSJung-uk Kim yystate = yydgoto[yym]; 1373b53bb29fSJung-uk Kim #if YYDEBUG 1374b53bb29fSJung-uk Kim if (yydebug) 1375b53bb29fSJung-uk Kim { 1376b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1377b53bb29fSJung-uk Kim #ifdef YYSTYPE_TOSTRING 1378b53bb29fSJung-uk Kim #if YYBTYACC 1379b53bb29fSJung-uk Kim if (!yytrial) 1380b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1381b53bb29fSJung-uk Kim fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1382b53bb29fSJung-uk Kim #endif 1383b53bb29fSJung-uk Kim fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1384b53bb29fSJung-uk Kim } 1385b53bb29fSJung-uk Kim #endif 1386b53bb29fSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1387b53bb29fSJung-uk Kim *++yystack.s_mark = (YYINT) yystate; 1388b53bb29fSJung-uk Kim *++yystack.l_mark = yyval; 1389b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1390b53bb29fSJung-uk Kim *++yystack.p_mark = yyloc; 1391b53bb29fSJung-uk Kim #endif 1392b53bb29fSJung-uk Kim goto yyloop; 1393b53bb29fSJung-uk Kim #if YYBTYACC 1394b53bb29fSJung-uk Kim 1395b53bb29fSJung-uk Kim /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1396b53bb29fSJung-uk Kim yyvalid: 1397b53bb29fSJung-uk Kim if (yypath) YYABORT; 1398b53bb29fSJung-uk Kim while (yyps->save) 1399b53bb29fSJung-uk Kim { 1400b53bb29fSJung-uk Kim YYParseState *save = yyps->save; 1401b53bb29fSJung-uk Kim yyps->save = save->save; 1402b53bb29fSJung-uk Kim save->save = yypath; 1403b53bb29fSJung-uk Kim yypath = save; 1404b53bb29fSJung-uk Kim } 1405b53bb29fSJung-uk Kim #if YYDEBUG 1406b53bb29fSJung-uk Kim if (yydebug) 1407b53bb29fSJung-uk Kim fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1408b53bb29fSJung-uk Kim YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1409b53bb29fSJung-uk Kim #endif 1410b53bb29fSJung-uk Kim if (yyerrctx) 1411b53bb29fSJung-uk Kim { 1412b53bb29fSJung-uk Kim yyFreeState(yyerrctx); 1413b53bb29fSJung-uk Kim yyerrctx = NULL; 1414b53bb29fSJung-uk Kim } 1415b53bb29fSJung-uk Kim yylvp = yylvals + yypath->lexeme; 1416b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1417b53bb29fSJung-uk Kim yylpp = yylpsns + yypath->lexeme; 1418b53bb29fSJung-uk Kim #endif 1419b53bb29fSJung-uk Kim yylexp = yylexemes + yypath->lexeme; 1420b53bb29fSJung-uk Kim yychar = YYEMPTY; 1421b53bb29fSJung-uk Kim yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1422b53bb29fSJung-uk Kim memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 1423b53bb29fSJung-uk Kim yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1424b53bb29fSJung-uk Kim memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1425b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1426b53bb29fSJung-uk Kim yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1427b53bb29fSJung-uk Kim memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1428b53bb29fSJung-uk Kim #endif 1429b53bb29fSJung-uk Kim yystate = yypath->state; 1430b53bb29fSJung-uk Kim goto yyloop; 1431b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1432b53bb29fSJung-uk Kim 1433b53bb29fSJung-uk Kim yyoverflow: 1434b53bb29fSJung-uk Kim YYERROR_CALL("yacc stack overflow"); 1435b53bb29fSJung-uk Kim #if YYBTYACC 1436b53bb29fSJung-uk Kim goto yyabort_nomem; 1437b53bb29fSJung-uk Kim yyenomem: 1438b53bb29fSJung-uk Kim YYERROR_CALL("memory exhausted"); 1439b53bb29fSJung-uk Kim yyabort_nomem: 1440b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1441b53bb29fSJung-uk Kim yyresult = 2; 1442b53bb29fSJung-uk Kim goto yyreturn; 1443b53bb29fSJung-uk Kim 1444b53bb29fSJung-uk Kim yyabort: 1445b53bb29fSJung-uk Kim yyresult = 1; 1446b53bb29fSJung-uk Kim goto yyreturn; 1447b53bb29fSJung-uk Kim 1448b53bb29fSJung-uk Kim yyaccept: 1449b53bb29fSJung-uk Kim #if YYBTYACC 1450b53bb29fSJung-uk Kim if (yyps->save) goto yyvalid; 1451b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1452b53bb29fSJung-uk Kim yyresult = 0; 1453b53bb29fSJung-uk Kim 1454b53bb29fSJung-uk Kim yyreturn: 1455b53bb29fSJung-uk Kim #if defined(YYDESTRUCT_CALL) 1456b53bb29fSJung-uk Kim if (yychar != YYEOF && yychar != YYEMPTY) 1457b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1458b53bb29fSJung-uk Kim YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1459b53bb29fSJung-uk Kim #else 1460b53bb29fSJung-uk Kim YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1461b53bb29fSJung-uk Kim #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1462b53bb29fSJung-uk Kim 1463b53bb29fSJung-uk Kim { 1464b53bb29fSJung-uk Kim YYSTYPE *pv; 1465b53bb29fSJung-uk Kim #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1466b53bb29fSJung-uk Kim YYLTYPE *pp; 1467b53bb29fSJung-uk Kim 1468b53bb29fSJung-uk Kim for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1469b53bb29fSJung-uk Kim YYDESTRUCT_CALL("cleanup: discarding state", 1470b53bb29fSJung-uk Kim yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1471b53bb29fSJung-uk Kim #else 1472b53bb29fSJung-uk Kim for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1473b53bb29fSJung-uk Kim YYDESTRUCT_CALL("cleanup: discarding state", 1474b53bb29fSJung-uk Kim yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1475b53bb29fSJung-uk Kim #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1476b53bb29fSJung-uk Kim } 1477b53bb29fSJung-uk Kim #endif /* defined(YYDESTRUCT_CALL) */ 1478b53bb29fSJung-uk Kim 1479b53bb29fSJung-uk Kim #if YYBTYACC 1480b53bb29fSJung-uk Kim if (yyerrctx) 1481b53bb29fSJung-uk Kim { 1482b53bb29fSJung-uk Kim yyFreeState(yyerrctx); 1483b53bb29fSJung-uk Kim yyerrctx = NULL; 1484b53bb29fSJung-uk Kim } 1485b53bb29fSJung-uk Kim while (yyps) 1486b53bb29fSJung-uk Kim { 1487b53bb29fSJung-uk Kim YYParseState *save = yyps; 1488b53bb29fSJung-uk Kim yyps = save->save; 1489b53bb29fSJung-uk Kim save->save = NULL; 1490b53bb29fSJung-uk Kim yyFreeState(save); 1491b53bb29fSJung-uk Kim } 1492b53bb29fSJung-uk Kim while (yypath) 1493b53bb29fSJung-uk Kim { 1494b53bb29fSJung-uk Kim YYParseState *save = yypath; 1495b53bb29fSJung-uk Kim yypath = save->save; 1496b53bb29fSJung-uk Kim save->save = NULL; 1497b53bb29fSJung-uk Kim yyFreeState(save); 1498b53bb29fSJung-uk Kim } 1499b53bb29fSJung-uk Kim #endif /* YYBTYACC */ 1500b53bb29fSJung-uk Kim yyfreestack(&yystack); 1501b53bb29fSJung-uk Kim return (yyresult); 1502b53bb29fSJung-uk Kim } 1503