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