1
2 /*
3 * A Bison parser, made from parse.y with Bison version GNU Bison version 1.24
4 */
5
6 #define YYBISON 1 /* Identify Bison output. */
7
8 #define OR 258
9 #define AND 259
10 #define REL_EQ 260
11 #define REL_NE 261
12 #define REL_LE 262
13 #define REL_GE 263
14 #define LEFT 264
15 #define RIGHT 265
16 #define UMINUS 266
17 #define INDIRECT 267
18 #define INCDEC 268
19 #define ABS 269
20 #define SIGN 270
21 #define TYPE 271
22 #define EVENT_SRC 272
23 #define LOWER_THAN_ELSE 273
24 #define ELSE 274
25 #define LOWER_THAN_EXPR_SHIFT 275
26 #define ID 276
27 #define NUMBER 277
28 #define ASSIGN 278
29 #define ASSIGN2 279
30 #define TASKOP 280
31 #define JUMP 281
32 #define TASK 282
33 #define SUB 283
34 #define STRING 284
35 #define PP_DEFINE 285
36 #define PP_INCLUDE 286
37 #define NL 287
38 #define WS 288
39 #define PP_ARG 289
40 #define PP_UNKNOWN 290
41 #define PP_IFDEF 291
42 #define PP_IF 292
43 #define PP_ELSE 293
44 #define PP_ELIF 294
45 #define PP_ENDIF 295
46 #define PP_UNDEF 296
47 #define PP_PRAGMA 297
48 #define PP_GLOM 298
49 #define PP_ERROR 299
50 #define PP_WARNING 300
51 #define IF 301
52 #define WHILE 302
53 #define DO 303
54 #define FOR 304
55 #define REPEAT 305
56 #define SWITCH 306
57 #define CASE 307
58 #define DEFAULT 308
59 #define MONITOR 309
60 #define CATCH 310
61 #define ACQUIRE 311
62 #define GOTO 312
63 #define ASM 313
64 #define INT 314
65 #define T_VOID 315
66 #define T_CONST 316
67 #define SENSOR 317
68 #define TASKID 318
69 #define NOLIST 319
70 #define RES 320
71 #define CTRUE 321
72 #define CFALSE 322
73
74 #line 1 "parse.y"
75
76 /*
77 * The contents of this file are subject to the Mozilla Public License
78 * Version 1.0 (the "License"); you may not use this file except in
79 * compliance with the License. You may obtain a copy of the License at
80 * http://www.mozilla.org/MPL/
81 *
82 * Software distributed under the License is distributed on an "AS IS"
83 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
84 * License for the specific language governing rights and limitations
85 * under the License.
86 *
87 * The Initial Developer of this code is David Baum.
88 * Portions created by David Baum are Copyright (C) 1998 David Baum.
89 * All Rights Reserved.
90 */
91 #line 19 "parse.y"
92
93 // prevent redefinition of YYSTYPE in parser.h
94 #define __PARSE_TAB_H
95
96 // these classes must be defined prior to YYSTYPE
97 #include "Fragment.h"
98 #include "Resource.h"
99 #include "BlockStmt.h"
100 #include "Symbol.h"
101 #include "Expr.h"
102 #include "FunctionDef.h"
103 #include "CallStmt.h"
104 #include "AsmStmt.h"
105 #include "CaseStmt.h"
106 #include "DeclareStmt.h"
107 #include "Fragment.h"
108
109 #if __MWERKS__
110 #include <alloca.h>
111 #endif
112
113 class Clause;
114 class LocationNode;
115
116
117 #line 45 "parse.y"
118 typedef union {
119 int fInt;
120 bool fBool;
121 Resource* fResource;
122 Fragment* fFragment;
123 Stmt* fStmt;
124 BlockStmt* fBlock;
125 Symbol* fSymbol;
126 char* fString;
127 Expr* fExpr;
128 FunctionDef* fFunction;
129 CallStmt* fCall;
130 AsmStmt* fAsmStmt;
131 Field* fField;
132 CaseStmt* fCaseStmt;
133 DeclareStmt* fDeclareStmt;
134 LocationNode* fLocation;
135 } YYSTYPE;
136 #line 65 "parse.y"
137
138 #include <stdlib.h>
139 #include "IfStmt.h"
140 #include "WhileStmt.h"
141 #include "AsmStmt.h"
142 #include "DoStmt.h"
143 #include "RepeatStmt.h"
144 #include "AssignStmt.h"
145 #include "TaskStmt.h"
146 #include "JumpStmt.h"
147 #include "SwitchStmt.h"
148 #include "ExprStmt.h"
149 #include "RCX_Constants.h"
150 #include "PreProc.h"
151 #include "parser.h"
152 #include "Program.h"
153 #include "parse_util.h"
154 #include "Program.h"
155 #include "IncDecExpr.h"
156 #include "AtomExpr.h"
157 #include "TypeExpr.h"
158 #include "Error.h"
159 #include "MonitorStmt.h"
160 #include "EventSrcExpr.h"
161 #include "SensorExpr.h"
162 #include "AssignMathStmt.h"
163 #include "ForStmt.h"
164 #include "RelExpr.h"
165 #include "NegateExpr.h"
166 #include "LogicalExpr.h"
167 #include "TernaryExpr.h"
168 #include "LabelStmt.h"
169 #include "GotoStmt.h"
170 #include "AddrOfExpr.h"
171 #include "DerefExpr.h"
172
173 #define yylex() (gPreProc->Get(yylval))
174
175 static LexLocation sSavedLoc;
176
177 #line 155 "parse.y"
178
179 static void yyerror(const char *msg);
180
181
182 #ifndef YYLTYPE
183 typedef
184 struct yyltype
185 {
186 int timestamp;
187 int first_line;
188 int first_column;
189 int last_line;
190 int last_column;
191 char *text;
192 }
193 yyltype;
194
195 #define YYLTYPE yyltype
196 #endif
197
198 #include <stdio.h>
199
200 #ifndef __cplusplus
201 #ifndef __STDC__
202 #define const
203 #endif
204 #endif
205
206
207
208 #define YYFINAL 328
209 #define YYFLAG -32768
210 #define YYNTBASE 93
211
212 #define YYTRANSLATE(x) ((unsigned)(x) <= 322 ? yytranslate[x] : 132)
213
214 static const char yytranslate[] = { 0,
215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
218 2, 2, 26, 2, 2, 92, 22, 9, 2, 86,
219 35, 20, 19, 87, 18, 2, 21, 2, 2, 2,
220 2, 2, 2, 2, 2, 2, 2, 3, 83, 12,
221 88, 13, 4, 91, 2, 2, 2, 2, 2, 2,
222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
224 89, 2, 90, 8, 2, 2, 2, 2, 2, 2,
225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
227 2, 2, 84, 7, 85, 24, 2, 2, 2, 2,
228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
240 2, 2, 2, 2, 2, 1, 2, 5, 6, 10,
241 11, 14, 15, 16, 17, 23, 25, 27, 28, 29,
242 30, 31, 32, 33, 34, 36, 37, 38, 39, 40,
243 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
244 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
245 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
246 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
247 81, 82
248 };
249
250 #if YYDEBUG != 0
251 static const short yyprhs[] = { 0,
252 0, 2, 5, 6, 10, 14, 18, 25, 32, 35,
253 42, 48, 50, 51, 57, 63, 68, 71, 73, 75,
254 76, 81, 84, 86, 89, 92, 96, 98, 101, 105,
255 109, 111, 113, 117, 120, 126, 130, 131, 136, 139,
256 140, 142, 144, 147, 152, 155, 157, 160, 167, 176,
257 183, 190, 197, 206, 215, 224, 235, 240, 246, 250,
258 255, 262, 266, 269, 271, 275, 279, 283, 285, 286,
259 288, 289, 291, 292, 295, 296, 299, 306, 309, 314,
260 318, 320, 321, 325, 327, 330, 334, 338, 342, 346,
261 350, 354, 358, 362, 366, 370, 374, 378, 382, 386,
262 390, 394, 397, 400, 403, 407, 411, 414, 417, 422,
263 427, 431, 434, 440, 443, 446, 449, 454, 459, 464,
264 467, 475, 481, 485, 492, 496, 497, 498, 502, 504,
265 505, 507, 510, 515, 522, 526, 528, 529
266 };
267
268 static const short yyrhs[] = { 94,
269 0, 94, 95, 0, 0, 74, 105, 83, 0, 126,
270 99, 126, 0, 126, 100, 126, 0, 126, 97, 84,
271 110, 85, 126, 0, 126, 96, 84, 110, 85, 126,
272 0, 129, 83, 0, 98, 75, 36, 86, 102, 35,
273 0, 43, 36, 86, 101, 35, 0, 79, 0, 0,
274 42, 36, 86, 35, 108, 0, 43, 36, 86, 35,
275 108, 0, 101, 87, 104, 36, 0, 104, 36, 0,
276 103, 0, 75, 0, 0, 103, 87, 104, 36, 0,
277 104, 36, 0, 74, 0, 76, 74, 0, 74, 9,
278 0, 76, 74, 9, 0, 77, 0, 74, 20, 0,
279 76, 74, 20, 0, 105, 87, 106, 0, 106, 0,
280 107, 0, 107, 88, 124, 0, 36, 126, 0, 36,
281 126, 89, 124, 90, 0, 20, 36, 126, 0, 0,
282 84, 109, 110, 85, 0, 110, 111, 0, 0, 83,
283 0, 108, 0, 121, 111, 0, 126, 36, 3, 111,
284 0, 1, 83, 0, 112, 0, 113, 126, 0, 62,
285 86, 124, 35, 126, 111, 0, 63, 126, 111, 62,
286 86, 124, 35, 83, 0, 65, 86, 124, 35, 126,
287 111, 0, 66, 86, 124, 35, 126, 111, 0, 61,
288 86, 124, 35, 126, 111, 0, 61, 86, 124, 35,
289 126, 111, 33, 111, 0, 69, 126, 86, 124, 35,
290 126, 108, 118, 0, 71, 126, 86, 124, 35, 126,
291 108, 117, 0, 64, 86, 115, 83, 116, 83, 115,
292 35, 126, 111, 0, 72, 36, 125, 83, 0, 73,
293 84, 127, 85, 83, 0, 125, 41, 83, 0, 40,
294 125, 36, 83, 0, 126, 36, 86, 122, 35, 83,
295 0, 74, 105, 83, 0, 114, 83, 0, 124, 0,
296 124, 38, 124, 0, 124, 39, 124, 0, 124, 88,
297 124, 0, 114, 0, 0, 124, 0, 0, 120, 0,
298 0, 118, 119, 0, 0, 70, 108, 0, 70, 126,
299 86, 124, 35, 108, 0, 70, 108, 0, 125, 67,
300 124, 3, 0, 125, 68, 3, 0, 123, 0, 0,
301 123, 87, 124, 0, 124, 0, 37, 125, 0, 124,
302 19, 124, 0, 124, 18, 124, 0, 124, 20, 124,
303 0, 124, 21, 124, 0, 124, 9, 124, 0, 124,
304 7, 124, 0, 124, 22, 124, 0, 124, 16, 124,
305 0, 124, 17, 124, 0, 124, 8, 124, 0, 124,
306 10, 124, 0, 124, 14, 124, 0, 124, 15, 124,
307 0, 124, 11, 124, 0, 124, 12, 124, 0, 124,
308 13, 124, 0, 81, 125, 0, 82, 125, 0, 26,
309 124, 0, 124, 6, 124, 0, 124, 5, 124, 0,
310 18, 124, 0, 24, 124, 0, 28, 86, 124, 35,
311 0, 29, 86, 124, 35, 0, 86, 124, 35, 0,
312 126, 36, 0, 126, 36, 89, 124, 90, 0, 91,
313 124, 0, 124, 27, 0, 27, 124, 0, 77, 86,
314 124, 35, 0, 30, 86, 124, 35, 0, 31, 86,
315 124, 35, 0, 126, 78, 0, 25, 86, 124, 35,
316 89, 124, 90, 0, 124, 4, 124, 3, 124, 0,
317 126, 9, 36, 0, 126, 9, 36, 89, 124, 90,
318 0, 126, 20, 36, 0, 0, 0, 127, 87, 128,
319 0, 128, 0, 0, 124, 0, 92, 124, 0, 92,
320 124, 3, 124, 0, 80, 124, 36, 84, 130, 85,
321 0, 130, 87, 131, 0, 131, 0, 0, 124, 0
322 };
323
324 #endif
325
326 #if YYDEBUG != 0
327 static const short yyrline[] = { 0,
328 163, 167, 168, 171, 172, 173, 174, 175, 176, 180,
329 183, 186, 187, 190, 197, 200, 201, 204, 205, 206,
330 209, 210, 213, 214, 215, 216, 217, 218, 219, 223,
331 224, 227, 228, 231, 232, 233, 236, 236, 239, 240,
332 244, 245, 246, 247, 248, 249, 250, 255, 256, 257,
333 258, 259, 260, 261, 262, 263, 264, 268, 269, 270,
334 271, 272, 273, 277, 278, 279, 280, 284, 285, 288,
335 289, 293, 294, 298, 299, 302, 303, 307, 310, 311,
336 314, 315, 318, 319, 322, 323, 324, 325, 326, 327,
337 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
338 338, 339, 340, 341, 342, 343, 345, 346, 348, 349,
339 351, 352, 353, 354, 356, 357, 359, 360, 361, 362,
340 363, 364, 365, 366, 367, 370, 373, 376, 377, 378,
341 382, 383, 384, 388, 391, 392, 393, 396
342 };
343
344 static const char * const yytname[] = { "$","error","$undefined.","':'","'?'",
345 "OR","AND","'|'","'^'","'&'","REL_EQ","REL_NE","'<'","'>'","REL_LE","REL_GE",
346 "LEFT","RIGHT","'-'","'+'","'*'","'/'","'%'","UMINUS","'~'","INDIRECT","'!'",
347 "INCDEC","ABS","SIGN","TYPE","EVENT_SRC","LOWER_THAN_ELSE","ELSE","LOWER_THAN_EXPR_SHIFT",
348 "')'","ID","NUMBER","ASSIGN","ASSIGN2","TASKOP","JUMP","TASK","SUB","STRING",
349 "PP_DEFINE","PP_INCLUDE","NL","WS","PP_ARG","PP_UNKNOWN","PP_IFDEF","PP_IF",
350 "PP_ELSE","PP_ELIF","PP_ENDIF","PP_UNDEF","PP_PRAGMA","PP_GLOM","PP_ERROR","PP_WARNING",
351 "IF","WHILE","DO","FOR","REPEAT","SWITCH","CASE","DEFAULT","MONITOR","CATCH",
352 "ACQUIRE","GOTO","ASM","INT","T_VOID","T_CONST","SENSOR","TASKID","NOLIST","RES",
353 "CTRUE","CFALSE","';'","'{'","'}'","'('","','","'='","'['","']'","'@'","'$'",
354 "S","unit_list","unit","function_head","sub_head","nolist_opt","fragment","subfragment",
355 "sarg_list","args","arg_list","arg_type","var_list","var_item","var_decl","block",
356 "@1","stmt_list","stmt","control_stmt","misc_stmt","expr_stmt","opt_expr_stmt",
357 "opt_expr","opt_handler","handler_list","evt_handler","handler","case","params",
358 "param_list","expr","saveloc","loc","asm_list","asm_item","resource","res_data",
359 "res_byte",""
360 };
361 #endif
362
363 static const short yyr1[] = { 0,
364 93, 94, 94, 95, 95, 95, 95, 95, 95, 96,
365 97, 98, 98, 99, 100, 101, 101, 102, 102, 102,
366 103, 103, 104, 104, 104, 104, 104, 104, 104, 105,
367 105, 106, 106, 107, 107, 107, 109, 108, 110, 110,
368 111, 111, 111, 111, 111, 111, 111, 112, 112, 112,
369 112, 112, 112, 112, 112, 112, 112, 113, 113, 113,
370 113, 113, 113, 114, 114, 114, 114, 115, 115, 116,
371 116, 117, 117, 118, 118, 119, 119, 120, 121, 121,
372 122, 122, 123, 123, 124, 124, 124, 124, 124, 124,
373 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
374 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
375 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
376 124, 124, 124, 124, 124, 125, 126, 127, 127, 127,
377 128, 128, 128, 129, 130, 130, 130, 131
378 };
379
380 static const short yyr2[] = { 0,
381 1, 2, 0, 3, 3, 3, 6, 6, 2, 6,
382 5, 1, 0, 5, 5, 4, 2, 1, 1, 0,
383 4, 2, 1, 2, 2, 3, 1, 2, 3, 3,
384 1, 1, 3, 2, 5, 3, 0, 4, 2, 0,
385 1, 1, 2, 4, 2, 1, 2, 6, 8, 6,
386 6, 6, 8, 8, 8, 10, 4, 5, 3, 4,
387 6, 3, 2, 1, 3, 3, 3, 1, 0, 1,
388 0, 1, 0, 2, 0, 2, 6, 2, 4, 3,
389 1, 0, 3, 1, 2, 3, 3, 3, 3, 3,
390 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
391 3, 2, 2, 2, 3, 3, 2, 2, 4, 4,
392 3, 2, 5, 2, 2, 2, 4, 4, 4, 2,
393 7, 5, 3, 6, 3, 0, 0, 3, 1, 0,
394 1, 2, 4, 6, 3, 1, 0, 1
395 };
396
397 static const short yydefact[] = { 3,
398 127, 0, 127, 2, 13, 0, 0, 127, 0, 31,
399 32, 127, 127, 0, 127, 127, 0, 0, 0, 0,
400 126, 0, 126, 126, 127, 127, 0, 0, 0, 0,
401 12, 0, 0, 0, 127, 127, 9, 127, 34, 4,
402 0, 127, 107, 108, 127, 104, 116, 127, 127, 127,
403 127, 85, 127, 102, 103, 0, 114, 127, 127, 127,
404 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
405 127, 127, 127, 127, 127, 127, 115, 0, 0, 0,
406 112, 120, 0, 0, 40, 40, 0, 5, 6, 36,
407 127, 30, 33, 0, 0, 0, 0, 0, 0, 111,
408 0, 106, 105, 91, 95, 90, 96, 99, 100, 101,
409 97, 98, 93, 94, 87, 86, 88, 89, 92, 127,
410 123, 125, 127, 0, 0, 0, 0, 0, 0, 0,
411 109, 110, 118, 119, 117, 127, 138, 0, 136, 127,
412 0, 0, 0, 23, 0, 27, 0, 0, 0, 126,
413 0, 0, 127, 0, 0, 0, 127, 127, 0, 0,
414 0, 41, 37, 127, 42, 39, 46, 127, 0, 0,
415 64, 0, 0, 127, 20, 35, 127, 122, 134, 127,
416 0, 113, 14, 15, 25, 28, 24, 11, 0, 17,
417 45, 0, 127, 127, 0, 127, 127, 127, 0, 0,
418 126, 127, 0, 40, 8, 47, 63, 43, 127, 127,
419 127, 0, 127, 0, 112, 7, 19, 0, 18, 0,
420 0, 135, 124, 26, 29, 0, 0, 0, 0, 0,
421 68, 0, 0, 0, 127, 127, 0, 127, 131, 0,
422 129, 62, 0, 65, 66, 67, 59, 0, 80, 0,
423 127, 10, 0, 22, 121, 16, 60, 127, 127, 0,
424 127, 127, 127, 0, 0, 57, 132, 0, 127, 38,
425 79, 44, 0, 81, 84, 0, 0, 0, 127, 0,
426 70, 0, 0, 127, 127, 127, 58, 128, 0, 127,
427 21, 52, 48, 0, 127, 50, 51, 0, 0, 133,
428 61, 83, 0, 0, 0, 75, 73, 53, 49, 127,
429 54, 0, 55, 72, 0, 127, 74, 78, 56, 76,
430 0, 127, 0, 0, 77, 0, 0, 0
431 };
432
433 static const short yydefgoto[] = { 326,
434 1, 4, 32, 33, 34, 35, 36, 147, 218, 219,
435 148, 9, 10, 11, 165, 204, 126, 166, 167, 168,
436 169, 232, 280, 313, 311, 317, 314, 170, 273, 274,
437 171, 172, 28, 240, 241, 6, 138, 139
438 };
439
440 static const short yypact[] = {-32768,
441 16, -1, 912,-32768, -25, -50, 2,-32768, -53,-32768,
442 -45, 912, 912, -42, 912, 912, -34, -4, -2, 5,
443 -32768, 18,-32768,-32768, 912, 912, 1000, 17, 76, 77,
444 -32768, 34, 35, 48,-32768,-32768,-32768,-32768, 41,-32768,
445 -1, 912, 104, 104, 912, 104, 104, 912, 912, 912,
446 912,-32768, 912,-32768,-32768, 1033, 104, 912, 912, 912,
447 912, 912, 912, 912, 912, 912, 912, 912, 912, 912,
448 912, 912, 912, 912, 912, 912,-32768, 54, 96, 99,
449 50,-32768, 55, 56,-32768,-32768, 108,-32768,-32768,-32768,
450 912,-32768, 1588, 1065, 1097, 1129, 1161, 1193, 1225,-32768,
451 1514, 1634, 1655, 1675, 468, 545, 621, 621, 133, 133,
452 133, 133, 87, 87, 59, 59, 104, 104, 104, 772,
453 57,-32768, 912, 105, 1, 357, 435, 61, 284, 67,
454 -32768,-32768,-32768,-32768,-32768, 912, 1588, -60,-32768, 912,
455 679, 75, 75, 11, 71,-32768, -11, 125, 79,-32768,
456 78, 80,-32768, 81, 82, 83,-32768,-32768, 127, 88,
457 -1,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 90, 591,
458 767, -27, 65,-32768, 51,-32768, 912, 1612,-32768, 912,
459 703,-32768,-32768,-32768,-32768,-32768, 12,-32768, 23,-32768,
460 -32768, 129, 912, 912, 591, 802, 912, 912, 84, 92,
461 -32768, 193, 15,-32768,-32768,-32768,-32768,-32768, 912, 912,
462 912, 93, 912, 176, 3,-32768,-32768, 145, 94, 146,
463 727,-32768,-32768,-32768,-32768, 148, 103, 1257, 1289, 126,
464 -32768, 106, 1321, 1353, 912, 912, 109, 912, 1588, -36,
465 -32768,-32768, 513, 1588, 1588, 1588,-32768, 1539,-32768, 591,
466 843,-32768, 23,-32768,-32768,-32768,-32768,-32768,-32768, 101,
467 871,-32768,-32768, 1385, 1417,-32768, 1564, 110, 733,-32768,
468 -32768,-32768, 161, 111, 1588, 164, 591, 591, 912, 114,
469 1588, 591, 591,-32768,-32768, 912,-32768,-32768, 118, 912,
470 -32768, 169,-32768, 1449, 886,-32768,-32768, 75, 75, 1588,
471 -32768, 1588, 591, 120, 170,-32768, 134,-32768,-32768,-32768,
472 139, 75,-32768,-32768, 591, 75,-32768,-32768,-32768,-32768,
473 128, 912, 1481, 75,-32768, 215, 216,-32768
474 };
475
476 static const short yypgoto[] = {-32768,
477 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
478 -160, 64, 185,-32768, -141,-32768, -75, -167,-32768,-32768,
479 -192, -68,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
480 -3, -16, 86,-32768, -41,-32768,-32768, 49
481 };
482
483
484 #define YYLAST 1702
485
486
487 static const short yytable[] = { 27,
488 183, 184, 208, 231, 52, 250, 54, 55, 43, 44,
489 127, 46, 47, 212, 220, -1, 29, 30, 7, 185,
490 224, 56, 57, 188, 179, 79, 180, 230, 226, 40,
491 186, 225, 37, 41, 8, 143, 80, 38, 93, 213,
492 214, 94, 42, 45, 95, 96, 97, 98, 268, 99,
493 269, 48, 81, 31, 101, 102, 103, 104, 105, 106,
494 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
495 117, 118, 119, 79, 144, 189, 145, 146, 74, 75,
496 76, 49, 272, 50, 80, 77, 5, 129, 251, 2,
497 51, 123, 276, 39, 82, 3, 144, 242, 145, 146,
498 215, 41, 231, 53, 72, 73, 74, 75, 76, 292,
499 293, 83, 84, 77, 296, 297, 137, 85, 86, 141,
500 88, 89, 87, 90, 144, 217, 145, 146, 243, 91,
501 77, 121, 178, 192, 122, 308, 181, 120, 123, 142,
502 124, 125, 82, 128, 187, 140, 175, 319, 70, 71,
503 72, 73, 74, 75, 76, 177, 306, 307, 163, 77,
504 190, 191, 201, 193, 227, 194, 196, 197, 198, 235,
505 318, 202, 207, 221, 320, 247, 137, 236, 249, 252,
506 253, 254, 325, 256, 237, 257, 279, 260, 261, 228,
507 229, 266, 287, 233, 234, 289, 295, 290, 239, 291,
508 301, 303, 309, 312, 310, 244, 245, 246, 316, 248,
509 12, 173, 173, 322, 327, 328, 13, 14, 15, 16,
510 17, 18, 19, 20, 203, 92, 305, 288, 222, 21,
511 0, 264, 265, 0, 267, 0, 0, 0, 195, 0,
512 0, 0, 199, 200, 0, 0, 0, 275, 0, 205,
513 0, 0, 0, 206, 0, 173, 0, 281, 0, 216,
514 0, 0, 0, 0, 0, 239, 0, 0, 0, 22,
515 0, 0, 0, 23, 24, 294, 0, -130, 25, -130,
516 173, 0, 300, 26, 238, 0, 302, 58, 59, 60,
517 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
518 71, 72, 73, 74, 75, 76, 0, 0, 0, 0,
519 77, 0, 0, 0, 0, 0, 0, 0, 323, 0,
520 0, 0, 0, 0, 0, 0, 0, 0, 173, 0,
521 0, 0, 0, 0, 0, 173, 0, 0, 0, 0,
522 0, 0, 0, 277, 278, 0, 0, 282, 283, 0,
523 0, 0, 0, 0, 0, 0, 0, 149, 0, 0,
524 0, 0, 173, 173, 0, -127, 0, 173, 173, 298,
525 299, 0, 0, 176, 12, 0, -127, 0, 0, 0,
526 13, 14, 15, 16, 17, 18, 19, 20, 173, 0,
527 0, 0, -127, 21, 0, 315, 150, -126, 0, 0,
528 173, 321, 0, 0, 0, 0, 0, 0, 0, 0,
529 0, 0, 0, 0, 0, 0, 0, 151, 152, 153,
530 154, 155, 156, -126, -126, 157, 0, 158, 159, 160,
531 161, 0, 0, 22, -127, 149, 0, 23, 24, 162,
532 163, 164, 25, -127, 0, 0, 0, 26, 0, 0,
533 0, 0, 12, 0, -127, 0, 0, 0, 13, 14,
534 15, 16, 17, 18, 19, 20, 0, 0, 0, 0,
535 -127, 21, 0, 0, 150, -126, 63, 64, 65, 66,
536 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
537 0, 0, 0, 0, 77, 151, 152, 153, 154, 155,
538 156, -126, -126, 157, 0, 158, 159, 160, 161, 0,
539 0, 22, -127, 149, 0, 23, 24, 162, 163, 174,
540 25, -127, 0, 0, 0, 26, 0, 0, 0, 0,
541 12, 0, -127, 0, 0, 0, 13, 14, 15, 16,
542 17, 18, 19, 20, 0, 0, 0, 0, -127, 21,
543 0, 0, 150, -126, 64, 65, 66, 67, 68, 69,
544 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
545 0, 77, 0, 151, 152, 153, 154, 155, 156, -126,
546 -126, 157, 0, 158, 159, 160, 161, 0, 0, 22,
547 -127, 149, 0, 23, 24, 162, 163, 270, 25, -127,
548 0, 0, 0, 26, 0, 0, 0, 0, 12, 0,
549 -127, 0, 0, 0, 13, 14, 15, 16, 17, 18,
550 19, 20, 0, 0, 0, 0, -127, 21, 0, 0,
551 150, -126, 66, 67, 68, 69, 70, 71, 72, 73,
552 74, 75, 76, 0, 0, 0, 0, 77, 0, 0,
553 0, 151, 152, 153, 154, 155, 156, -126, -126, 157,
554 0, 158, 159, 160, 161, 0, 0, 22, -127, 0,
555 0, 23, 24, 162, 163, 0, 25, 0, 0, 0,
556 0, 26, 58, 59, 60, 61, 62, 63, 64, 65,
557 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
558 76, 0, 0, 0, 0, 77, 58, 59, 60, 61,
559 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
560 72, 73, 74, 75, 76, 0, 0, 0, 0, 77,
561 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
562 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
563 12, 0, 0, 77, 0, 0, 13, 14, 15, 16,
564 17, 18, 19, 20, 0, 0, 0, 0, 182, 21,
565 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
566 68, 69, 70, 71, 72, 73, 74, 75, 76, 12,
567 0, 0, 223, 77, 0, 13, 14, 15, 16, 17,
568 18, 19, 20, 0, 209, 210, 0, 0, 21, 22,
569 0, 0, 0, 23, 24, 0, 255, 0, 25, 12,
570 0, 0, 0, 26, 238, 13, 14, 15, 16, 17,
571 18, 19, 20, 0, 0, 0, 0, 0, 21, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
573 0, 0, 23, 24, 211, 0, -137, 25, -137, 0,
574 12, 0, 26, 0, 0, 0, 13, 14, 15, 16,
575 17, 18, 19, 20, 0, 0, 0, -82, 22, 21,
576 0, 0, 23, 24, -69, 0, 0, 25, 12, 0,
577 0, 0, 26, 0, 13, 14, 15, 16, 17, 18,
578 19, 20, 0, 12, 0, 0, 0, 21, 0, 13,
579 14, 15, 16, 17, 18, 19, 20, 0, 0, 22,
580 -69, 0, 21, 23, 24, 0, 0, 0, 25, 12,
581 0, 0, 0, 26, 0, 13, 14, 15, 16, 17,
582 18, 19, 20, 0, 0, 0, 0, 22, 21, 0,
583 0, 23, 24, -71, 0, 0, 25, 0, 0, 0,
584 0, 26, 22, 0, 0, 0, 23, 24, 0, 0,
585 0, 25, 0, 0, 0, 0, 26, 0, 0, 0,
586 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
587 0, 0, 23, 24, 0, 0, 0, 25, 0, 0,
588 0, 0, 26, 58, 59, 60, 61, 62, 63, 64,
589 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
590 75, 76, 0, 0, 0, 0, 77, 0, 0, 0,
591 0, 0, 0, 0, 0, 78, 58, 59, 60, 61,
592 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
593 72, 73, 74, 75, 76, 0, 0, 0, 0, 77,
594 0, 0, 0, 0, 0, 0, 0, 100, 58, 59,
595 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
596 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
597 0, 77, 0, 0, 0, 0, 0, 0, 0, 130,
598 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
599 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
600 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
601 0, 131, 58, 59, 60, 61, 62, 63, 64, 65,
602 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
603 76, 0, 0, 0, 0, 77, 0, 0, 0, 0,
604 0, 0, 0, 132, 58, 59, 60, 61, 62, 63,
605 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
606 74, 75, 76, 0, 0, 0, 0, 77, 0, 0,
607 0, 0, 0, 0, 0, 133, 58, 59, 60, 61,
608 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
609 72, 73, 74, 75, 76, 0, 0, 0, 0, 77,
610 0, 0, 0, 0, 0, 0, 0, 134, 58, 59,
611 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
612 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
613 0, 77, 0, 0, 0, 0, 0, 0, 0, 135,
614 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
615 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
616 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
617 0, 258, 58, 59, 60, 61, 62, 63, 64, 65,
618 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
619 76, 0, 0, 0, 0, 77, 0, 0, 0, 0,
620 0, 0, 0, 259, 58, 59, 60, 61, 62, 63,
621 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
622 74, 75, 76, 0, 0, 0, 0, 77, 0, 0,
623 0, 0, 0, 0, 0, 262, 58, 59, 60, 61,
624 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
625 72, 73, 74, 75, 76, 0, 0, 0, 0, 77,
626 0, 0, 0, 0, 0, 0, 0, 263, 58, 59,
627 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
628 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
629 0, 77, 0, 0, 0, 0, 0, 0, 0, 284,
630 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
631 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
632 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
633 0, 285, 58, 59, 60, 61, 62, 63, 64, 65,
634 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
635 76, 0, 0, 0, 0, 77, 0, 0, 0, 0,
636 0, 0, 0, 304, 58, 59, 60, 61, 62, 63,
637 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
638 74, 75, 76, 0, 0, 0, 0, 77, 0, 0,
639 0, 0, 0, 0, 0, 324, 136, 58, 59, 60,
640 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
641 71, 72, 73, 74, 75, 76, 0, 0, 0, 0,
642 77, 271, 58, 59, 60, 61, 62, 63, 64, 65,
643 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
644 76, 0, 0, 0, 0, 77, 286, 58, 59, 60,
645 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
646 71, 72, 73, 74, 75, 76, 0, 0, 0, 0,
647 77, 58, 59, 60, 61, 62, 63, 64, 65, 66,
648 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
649 0, 0, 0, 0, 77,-32768, 59, 60, 61, 62,
650 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
651 73, 74, 75, 76, 0, 0, 0, 0, 77, 60,
652 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
653 71, 72, 73, 74, 75, 76, 0, 0, 0, 0,
654 77, 61, 62, 63, 64, 65, 66, 67, 68, 69,
655 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
656 0, 77, 62, 63, 64, 65, 66, 67, 68, 69,
657 70, 71, 72, 73, 74, 75, 76, 0, 0, 0,
658 0, 77
659 };
660
661 static const short yycheck[] = { 3,
662 142, 143, 170, 196, 21, 3, 23, 24, 12, 13,
663 86, 15, 16, 41, 175, 0, 42, 43, 20, 9,
664 9, 25, 26, 35, 85, 9, 87, 195, 189, 83,
665 20, 20, 83, 87, 36, 35, 20, 36, 42, 67,
666 68, 45, 88, 86, 48, 49, 50, 51, 85, 53,
667 87, 86, 36, 79, 58, 59, 60, 61, 62, 63,
668 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
669 74, 75, 76, 9, 74, 87, 76, 77, 20, 21,
670 22, 86, 250, 86, 20, 27, 1, 91, 86, 74,
671 86, 89, 253, 8, 78, 80, 74, 83, 76, 77,
672 36, 87, 295, 86, 18, 19, 20, 21, 22, 277,
673 278, 36, 36, 27, 282, 283, 120, 84, 84, 123,
674 35, 36, 75, 38, 74, 75, 76, 77, 204, 89,
675 27, 36, 136, 150, 36, 303, 140, 84, 89, 35,
676 86, 86, 78, 36, 74, 89, 86, 315, 16, 17,
677 18, 19, 20, 21, 22, 89, 298, 299, 84, 27,
678 36, 83, 36, 86, 36, 86, 86, 86, 86, 86,
679 312, 84, 83, 177, 316, 83, 180, 86, 3, 35,
680 87, 36, 324, 36, 201, 83, 86, 62, 83, 193,
681 194, 83, 83, 197, 198, 35, 83, 87, 202, 36,
682 83, 33, 83, 70, 35, 209, 210, 211, 70, 213,
683 18, 126, 127, 86, 0, 0, 24, 25, 26, 27,
684 28, 29, 30, 31, 161, 41, 295, 269, 180, 37,
685 -1, 235, 236, -1, 238, -1, -1, -1, 153, -1,
686 -1, -1, 157, 158, -1, -1, -1, 251, -1, 164,
687 -1, -1, -1, 168, -1, 170, -1, 261, -1, 174,
688 -1, -1, -1, -1, -1, 269, -1, -1, -1, 77,
689 -1, -1, -1, 81, 82, 279, -1, 85, 86, 87,
690 195, -1, 286, 91, 92, -1, 290, 4, 5, 6,
691 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
692 17, 18, 19, 20, 21, 22, -1, -1, -1, -1,
693 27, -1, -1, -1, -1, -1, -1, -1, 322, -1,
694 -1, -1, -1, -1, -1, -1, -1, -1, 243, -1,
695 -1, -1, -1, -1, -1, 250, -1, -1, -1, -1,
696 -1, -1, -1, 258, 259, -1, -1, 262, 263, -1,
697 -1, -1, -1, -1, -1, -1, -1, 1, -1, -1,
698 -1, -1, 277, 278, -1, 9, -1, 282, 283, 284,
699 285, -1, -1, 90, 18, -1, 20, -1, -1, -1,
700 24, 25, 26, 27, 28, 29, 30, 31, 303, -1,
701 -1, -1, 36, 37, -1, 310, 40, 41, -1, -1,
702 315, 316, -1, -1, -1, -1, -1, -1, -1, -1,
703 -1, -1, -1, -1, -1, -1, -1, 61, 62, 63,
704 64, 65, 66, 67, 68, 69, -1, 71, 72, 73,
705 74, -1, -1, 77, 78, 1, -1, 81, 82, 83,
706 84, 85, 86, 9, -1, -1, -1, 91, -1, -1,
707 -1, -1, 18, -1, 20, -1, -1, -1, 24, 25,
708 26, 27, 28, 29, 30, 31, -1, -1, -1, -1,
709 36, 37, -1, -1, 40, 41, 9, 10, 11, 12,
710 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
711 -1, -1, -1, -1, 27, 61, 62, 63, 64, 65,
712 66, 67, 68, 69, -1, 71, 72, 73, 74, -1,
713 -1, 77, 78, 1, -1, 81, 82, 83, 84, 85,
714 86, 9, -1, -1, -1, 91, -1, -1, -1, -1,
715 18, -1, 20, -1, -1, -1, 24, 25, 26, 27,
716 28, 29, 30, 31, -1, -1, -1, -1, 36, 37,
717 -1, -1, 40, 41, 10, 11, 12, 13, 14, 15,
718 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
719 -1, 27, -1, 61, 62, 63, 64, 65, 66, 67,
720 68, 69, -1, 71, 72, 73, 74, -1, -1, 77,
721 78, 1, -1, 81, 82, 83, 84, 85, 86, 9,
722 -1, -1, -1, 91, -1, -1, -1, -1, 18, -1,
723 20, -1, -1, -1, 24, 25, 26, 27, 28, 29,
724 30, 31, -1, -1, -1, -1, 36, 37, -1, -1,
725 40, 41, 12, 13, 14, 15, 16, 17, 18, 19,
726 20, 21, 22, -1, -1, -1, -1, 27, -1, -1,
727 -1, 61, 62, 63, 64, 65, 66, 67, 68, 69,
728 -1, 71, 72, 73, 74, -1, -1, 77, 78, -1,
729 -1, 81, 82, 83, 84, -1, 86, -1, -1, -1,
730 -1, 91, 4, 5, 6, 7, 8, 9, 10, 11,
731 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
732 22, -1, -1, -1, -1, 27, 4, 5, 6, 7,
733 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
734 18, 19, 20, 21, 22, -1, -1, -1, -1, 27,
735 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
736 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
737 18, -1, -1, 27, -1, -1, 24, 25, 26, 27,
738 28, 29, 30, 31, -1, -1, -1, -1, 90, 37,
739 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
740 14, 15, 16, 17, 18, 19, 20, 21, 22, 18,
741 -1, -1, 90, 27, -1, 24, 25, 26, 27, 28,
742 29, 30, 31, -1, 38, 39, -1, -1, 37, 77,
743 -1, -1, -1, 81, 82, -1, 90, -1, 86, 18,
744 -1, -1, -1, 91, 92, 24, 25, 26, 27, 28,
745 29, 30, 31, -1, -1, -1, -1, -1, 37, -1,
746 -1, -1, -1, -1, -1, -1, -1, -1, 77, -1,
747 -1, -1, 81, 82, 88, -1, 85, 86, 87, -1,
748 18, -1, 91, -1, -1, -1, 24, 25, 26, 27,
749 28, 29, 30, 31, -1, -1, -1, 35, 77, 37,
750 -1, -1, 81, 82, 83, -1, -1, 86, 18, -1,
751 -1, -1, 91, -1, 24, 25, 26, 27, 28, 29,
752 30, 31, -1, 18, -1, -1, -1, 37, -1, 24,
753 25, 26, 27, 28, 29, 30, 31, -1, -1, 77,
754 35, -1, 37, 81, 82, -1, -1, -1, 86, 18,
755 -1, -1, -1, 91, -1, 24, 25, 26, 27, 28,
756 29, 30, 31, -1, -1, -1, -1, 77, 37, -1,
757 -1, 81, 82, 83, -1, -1, 86, -1, -1, -1,
758 -1, 91, 77, -1, -1, -1, 81, 82, -1, -1,
759 -1, 86, -1, -1, -1, -1, 91, -1, -1, -1,
760 -1, -1, -1, -1, -1, -1, -1, -1, 77, -1,
761 -1, -1, 81, 82, -1, -1, -1, 86, -1, -1,
762 -1, -1, 91, 4, 5, 6, 7, 8, 9, 10,
763 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
764 21, 22, -1, -1, -1, -1, 27, -1, -1, -1,
765 -1, -1, -1, -1, -1, 36, 4, 5, 6, 7,
766 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
767 18, 19, 20, 21, 22, -1, -1, -1, -1, 27,
768 -1, -1, -1, -1, -1, -1, -1, 35, 4, 5,
769 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
770 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
771 -1, 27, -1, -1, -1, -1, -1, -1, -1, 35,
772 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
773 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
774 -1, -1, -1, 27, -1, -1, -1, -1, -1, -1,
775 -1, 35, 4, 5, 6, 7, 8, 9, 10, 11,
776 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
777 22, -1, -1, -1, -1, 27, -1, -1, -1, -1,
778 -1, -1, -1, 35, 4, 5, 6, 7, 8, 9,
779 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
780 20, 21, 22, -1, -1, -1, -1, 27, -1, -1,
781 -1, -1, -1, -1, -1, 35, 4, 5, 6, 7,
782 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
783 18, 19, 20, 21, 22, -1, -1, -1, -1, 27,
784 -1, -1, -1, -1, -1, -1, -1, 35, 4, 5,
785 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
786 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
787 -1, 27, -1, -1, -1, -1, -1, -1, -1, 35,
788 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
789 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
790 -1, -1, -1, 27, -1, -1, -1, -1, -1, -1,
791 -1, 35, 4, 5, 6, 7, 8, 9, 10, 11,
792 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
793 22, -1, -1, -1, -1, 27, -1, -1, -1, -1,
794 -1, -1, -1, 35, 4, 5, 6, 7, 8, 9,
795 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
796 20, 21, 22, -1, -1, -1, -1, 27, -1, -1,
797 -1, -1, -1, -1, -1, 35, 4, 5, 6, 7,
798 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
799 18, 19, 20, 21, 22, -1, -1, -1, -1, 27,
800 -1, -1, -1, -1, -1, -1, -1, 35, 4, 5,
801 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
802 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
803 -1, 27, -1, -1, -1, -1, -1, -1, -1, 35,
804 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
805 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
806 -1, -1, -1, 27, -1, -1, -1, -1, -1, -1,
807 -1, 35, 4, 5, 6, 7, 8, 9, 10, 11,
808 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
809 22, -1, -1, -1, -1, 27, -1, -1, -1, -1,
810 -1, -1, -1, 35, 4, 5, 6, 7, 8, 9,
811 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
812 20, 21, 22, -1, -1, -1, -1, 27, -1, -1,
813 -1, -1, -1, -1, -1, 35, 3, 4, 5, 6,
814 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
815 17, 18, 19, 20, 21, 22, -1, -1, -1, -1,
816 27, 3, 4, 5, 6, 7, 8, 9, 10, 11,
817 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
818 22, -1, -1, -1, -1, 27, 3, 4, 5, 6,
819 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
820 17, 18, 19, 20, 21, 22, -1, -1, -1, -1,
821 27, 4, 5, 6, 7, 8, 9, 10, 11, 12,
822 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
823 -1, -1, -1, -1, 27, 4, 5, 6, 7, 8,
824 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
825 19, 20, 21, 22, -1, -1, -1, -1, 27, 6,
826 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
827 17, 18, 19, 20, 21, 22, -1, -1, -1, -1,
828 27, 7, 8, 9, 10, 11, 12, 13, 14, 15,
829 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
830 -1, 27, 8, 9, 10, 11, 12, 13, 14, 15,
831 16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
832 -1, 27
833 };
834 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
835 #line 3 "bison.simple"
836
837 /* Skeleton output parser for bison,
838 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
839
840 This program is free software; you can redistribute it and/or modify
841 it under the terms of the GNU General Public License as published by
842 the Free Software Foundation; either version 2, or (at your option)
843 any later version.
844
845 This program is distributed in the hope that it will be useful,
846 but WITHOUT ANY WARRANTY; without even the implied warranty of
847 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
848 GNU General Public License for more details.
849
850 You should have received a copy of the GNU General Public License
851 along with this program; if not, write to the Free Software
852 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
853
854 /* As a special exception, when this file is copied by Bison into a
855 Bison output file, you may use that output file without restriction.
856 This special exception was added by the Free Software Foundation
857 in version 1.24 of Bison. */
858
859 #ifndef alloca
860 #include <malloc.h>
861 #endif /* alloca not defined. */
862
863 /* This is the parser code that is written into each bison parser
864 when the %semantic_parser declaration is not specified in the grammar.
865 It was written by Richard Stallman by simplifying the hairy parser
866 used when %semantic_parser is specified. */
867
868 /* Note: there must be only one dollar sign in this file.
869 It is replaced by the list of actions, each action
870 as one case of the switch. */
871
872 #define yyerrok (yyerrstatus = 0)
873 #define yyclearin (yychar = YYEMPTY)
874 #define YYEMPTY -2
875 #define YYEOF 0
876 #define YYACCEPT return(0)
877 #define YYABORT return(1)
878 #define YYERROR goto yyerrlab1
879 /* Like YYERROR except do call yyerror.
880 This remains here temporarily to ease the
881 transition to the new meaning of YYERROR, for GCC.
882 Once GCC version 2 has supplanted version 1, this can go. */
883 #define YYFAIL goto yyerrlab
884 #define YYRECOVERING() (!!yyerrstatus)
885 #define YYBACKUP(token, value) \
886 do \
887 if (yychar == YYEMPTY && yylen == 1) \
888 { yychar = (token), yylval = (value); \
889 yychar1 = YYTRANSLATE (yychar); \
890 YYPOPSTACK; \
891 goto yybackup; \
892 } \
893 else \
894 { yyerror ("syntax error: cannot back up"); YYERROR; } \
895 while (0)
896
897 #define YYTERROR 1
898 #define YYERRCODE 256
899
900 #ifndef YYPURE
901 #define YYLEX yylex()
902 #endif
903
904 #ifdef YYPURE
905 #ifdef YYLSP_NEEDED
906 #ifdef YYLEX_PARAM
907 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
908 #else
909 #define YYLEX yylex(&yylval, &yylloc)
910 #endif
911 #else /* not YYLSP_NEEDED */
912 #ifdef YYLEX_PARAM
913 #define YYLEX yylex(&yylval, YYLEX_PARAM)
914 #else
915 #define YYLEX yylex(&yylval)
916 #endif
917 #endif /* not YYLSP_NEEDED */
918 #endif
919
920 /* If nonreentrant, generate the variables here */
921
922 #ifndef YYPURE
923
924 int yychar; /* the lookahead symbol */
925 YYSTYPE yylval; /* the semantic value of the */
926 /* lookahead symbol */
927
928 #ifdef YYLSP_NEEDED
929 YYLTYPE yylloc; /* location data for the lookahead */
930 /* symbol */
931 #endif
932
933 int yynerrs; /* number of parse errors so far */
934 #endif /* not YYPURE */
935
936 #if YYDEBUG != 0
937 int yydebug; /* nonzero means print parse trace */
938 /* Since this is uninitialized, it does not stop multiple parsers
939 from coexisting. */
940 #endif
941
942 /* YYINITDEPTH indicates the initial size of the parser's stacks */
943
944 #ifndef YYINITDEPTH
945 #define YYINITDEPTH 200
946 #endif
947
948 /* YYMAXDEPTH is the maximum size the stacks can grow to
949 (effective only if the built-in stack extension method is used). */
950
951 #if YYMAXDEPTH == 0
952 #undef YYMAXDEPTH
953 #endif
954
955 #ifndef YYMAXDEPTH
956 #define YYMAXDEPTH 10000
957 #endif
958
959 /* Prevent warning if -Wstrict-prototypes. */
960 #ifdef __GNUC__
961 int yyparse (void);
962 #endif
963
964 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
965 #define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
966 #else /* not GNU C or C++ */
967 #ifndef __cplusplus
968
969 /* This is the most reliable way to avoid incompatibilities
970 in available built-in functions on various systems. */
971 static void
972 __yy_memcpy (from, to, count)
973 char *from;
974 char *to;
975 int count;
976 {
977 register char *f = from;
978 register char *t = to;
979 register int i = count;
980
981 while (i-- > 0)
982 *t++ = *f++;
983 }
984
985 #else /* __cplusplus */
986
987 /* This is the most reliable way to avoid incompatibilities
988 in available built-in functions on various systems. */
989 static void
__yy_memcpy(char * from,char * to,int count)990 __yy_memcpy (char *from, char *to, int count)
991 {
992 register char *f = from;
993 register char *t = to;
994 register int i = count;
995
996 while (i-- > 0)
997 *t++ = *f++;
998 }
999
1000 #endif
1001 #endif
1002
1003 #line 192 "bison.simple"
1004
1005 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1006 into yyparse. The argument should have type void *.
1007 It should actually point to an object.
1008 Grammar actions can access the variable by casting it
1009 to the proper pointer type. */
1010
1011 #ifdef YYPARSE_PARAM
1012 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1013 #else
1014 #define YYPARSE_PARAM
1015 #define YYPARSE_PARAM_DECL
1016 #endif
1017
1018 int
yyparse(YYPARSE_PARAM)1019 yyparse(YYPARSE_PARAM)
1020 YYPARSE_PARAM_DECL
1021 {
1022 register int yystate;
1023 register int yyn;
1024 register short *yyssp;
1025 register YYSTYPE *yyvsp;
1026 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1027 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
1028
1029 short yyssa[YYINITDEPTH]; /* the state stack */
1030 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
1031
1032 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1033 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
1034
1035 #ifdef YYLSP_NEEDED
1036 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1037 YYLTYPE *yyls = yylsa;
1038 YYLTYPE *yylsp;
1039
1040 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1041 #else
1042 #define YYPOPSTACK (yyvsp--, yyssp--)
1043 #endif
1044
1045 int yystacksize = YYINITDEPTH;
1046
1047 #ifdef YYPURE
1048 int yychar;
1049 YYSTYPE yylval;
1050 int yynerrs;
1051 #ifdef YYLSP_NEEDED
1052 YYLTYPE yylloc;
1053 #endif
1054 #endif
1055
1056 YYSTYPE yyval; /* the variable used to return */
1057 /* semantic values from the action */
1058 /* routines */
1059
1060 int yylen;
1061
1062 #if YYDEBUG != 0
1063 if (yydebug)
1064 fprintf(stderr, "Starting parse\n");
1065 #endif
1066
1067 yystate = 0;
1068 yyerrstatus = 0;
1069 yynerrs = 0;
1070 yychar = YYEMPTY; /* Cause a token to be read. */
1071
1072 /* Initialize stack pointers.
1073 Waste one element of value and location stack
1074 so that they stay on the same level as the state stack.
1075 The wasted elements are never initialized. */
1076
1077 yyssp = yyss - 1;
1078 yyvsp = yyvs;
1079 #ifdef YYLSP_NEEDED
1080 yylsp = yyls;
1081 #endif
1082
1083 /* Push a new state, which is found in yystate . */
1084 /* In all cases, when you get here, the value and location stacks
1085 have just been pushed. so pushing a state here evens the stacks. */
1086 yynewstate:
1087
1088 *++yyssp = yystate;
1089
1090 if (yyssp >= yyss + yystacksize - 1)
1091 {
1092 /* Give user a chance to reallocate the stack */
1093 /* Use copies of these so that the &'s don't force the real ones into memory. */
1094 YYSTYPE *yyvs1 = yyvs;
1095 short *yyss1 = yyss;
1096 #ifdef YYLSP_NEEDED
1097 YYLTYPE *yyls1 = yyls;
1098 #endif
1099
1100 /* Get the current used size of the three stacks, in elements. */
1101 int size = yyssp - yyss + 1;
1102
1103 #ifdef yyoverflow
1104 /* Each stack pointer address is followed by the size of
1105 the data in use in that stack, in bytes. */
1106 #ifdef YYLSP_NEEDED
1107 /* This used to be a conditional around just the two extra args,
1108 but that might be undefined if yyoverflow is a macro. */
1109 yyoverflow("parser stack overflow",
1110 &yyss1, size * sizeof (*yyssp),
1111 &yyvs1, size * sizeof (*yyvsp),
1112 &yyls1, size * sizeof (*yylsp),
1113 &yystacksize);
1114 #else
1115 yyoverflow("parser stack overflow",
1116 &yyss1, size * sizeof (*yyssp),
1117 &yyvs1, size * sizeof (*yyvsp),
1118 &yystacksize);
1119 #endif
1120
1121 yyss = yyss1; yyvs = yyvs1;
1122 #ifdef YYLSP_NEEDED
1123 yyls = yyls1;
1124 #endif
1125 #else /* no yyoverflow */
1126 /* Extend the stack our own way. */
1127 if (yystacksize >= YYMAXDEPTH)
1128 {
1129 yyerror("parser stack overflow");
1130 return 2;
1131 }
1132 yystacksize *= 2;
1133 if (yystacksize > YYMAXDEPTH)
1134 yystacksize = YYMAXDEPTH;
1135 yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
1136 __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1137 yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
1138 __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1139 #ifdef YYLSP_NEEDED
1140 yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
1141 __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1142 #endif
1143 #endif /* no yyoverflow */
1144
1145 yyssp = yyss + size - 1;
1146 yyvsp = yyvs + size - 1;
1147 #ifdef YYLSP_NEEDED
1148 yylsp = yyls + size - 1;
1149 #endif
1150
1151 #if YYDEBUG != 0
1152 if (yydebug)
1153 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1154 #endif
1155
1156 if (yyssp >= yyss + yystacksize - 1)
1157 YYABORT;
1158 }
1159
1160 #if YYDEBUG != 0
1161 if (yydebug)
1162 fprintf(stderr, "Entering state %d\n", yystate);
1163 #endif
1164
1165 goto yybackup;
1166 yybackup:
1167
1168 /* Do appropriate processing given the current state. */
1169 /* Read a lookahead token if we need one and don't already have one. */
1170 /* yyresume: */
1171
1172 /* First try to decide what to do without reference to lookahead token. */
1173
1174 yyn = yypact[yystate];
1175 if (yyn == YYFLAG)
1176 goto yydefault;
1177
1178 /* Not known => get a lookahead token if don't already have one. */
1179
1180 /* yychar is either YYEMPTY or YYEOF
1181 or a valid token in external form. */
1182
1183 if (yychar == YYEMPTY)
1184 {
1185 #if YYDEBUG != 0
1186 if (yydebug)
1187 fprintf(stderr, "Reading a token: ");
1188 #endif
1189 yychar = YYLEX;
1190 }
1191
1192 /* Convert token to internal form (in yychar1) for indexing tables with */
1193
1194 if (yychar <= 0) /* This means end of input. */
1195 {
1196 yychar1 = 0;
1197 yychar = YYEOF; /* Don't call YYLEX any more */
1198
1199 #if YYDEBUG != 0
1200 if (yydebug)
1201 fprintf(stderr, "Now at end of input.\n");
1202 #endif
1203 }
1204 else
1205 {
1206 yychar1 = YYTRANSLATE(yychar);
1207
1208 #if YYDEBUG != 0
1209 if (yydebug)
1210 {
1211 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1212 /* Give the individual parser a way to print the precise meaning
1213 of a token, for further debugging info. */
1214 #ifdef YYPRINT
1215 YYPRINT (stderr, yychar, yylval);
1216 #endif
1217 fprintf (stderr, ")\n");
1218 }
1219 #endif
1220 }
1221
1222 yyn += yychar1;
1223 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1224 goto yydefault;
1225
1226 yyn = yytable[yyn];
1227
1228 /* yyn is what to do for this token type in this state.
1229 Negative => reduce, -yyn is rule number.
1230 Positive => shift, yyn is new state.
1231 New state is final state => don't bother to shift,
1232 just return success.
1233 0, or most negative number => error. */
1234
1235 if (yyn < 0)
1236 {
1237 if (yyn == YYFLAG)
1238 goto yyerrlab;
1239 yyn = -yyn;
1240 goto yyreduce;
1241 }
1242 else if (yyn == 0)
1243 goto yyerrlab;
1244
1245 if (yyn == YYFINAL)
1246 YYACCEPT;
1247
1248 /* Shift the lookahead token. */
1249
1250 #if YYDEBUG != 0
1251 if (yydebug)
1252 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1253 #endif
1254
1255 /* Discard the token being shifted unless it is eof. */
1256 if (yychar != YYEOF)
1257 yychar = YYEMPTY;
1258
1259 *++yyvsp = yylval;
1260 #ifdef YYLSP_NEEDED
1261 *++yylsp = yylloc;
1262 #endif
1263
1264 /* count tokens shifted since error; after three, turn off error status. */
1265 if (yyerrstatus) yyerrstatus--;
1266
1267 yystate = yyn;
1268 goto yynewstate;
1269
1270 /* Do the default action for the current state. */
1271 yydefault:
1272
1273 yyn = yydefact[yystate];
1274 if (yyn == 0)
1275 goto yyerrlab;
1276
1277 /* Do a reduction. yyn is the number of a rule to reduce with. */
1278 yyreduce:
1279 yylen = yyr2[yyn];
1280 if (yylen > 0)
1281 yyval = yyvsp[1-yylen]; /* implement default value of the action */
1282
1283 #if YYDEBUG != 0
1284 if (yydebug)
1285 {
1286 int i;
1287
1288 fprintf (stderr, "Reducing via rule %d (line %d), ",
1289 yyn, yyrline[yyn]);
1290
1291 /* Print the symbols being reduced, and their result. */
1292 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1293 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1294 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1295 }
1296 #endif
1297
1298
1299 switch (yyn) {
1300
1301 case 1:
1302 #line 163 "parse.y"
1303 { yyval.fInt = 0; ;
1304 break;}
1305 case 4:
1306 #line 171 "parse.y"
1307 { gProgram->AddGlobalDecls(yyvsp[-1].fBlock); ;
1308 break;}
1309 case 5:
1310 #line 172 "parse.y"
1311 { yyvsp[-1].fFragment->SetLocations(yyvsp[-2].fLocation, yyvsp[0].fLocation); ;
1312 break;}
1313 case 6:
1314 #line 173 "parse.y"
1315 { yyvsp[-1].fFragment->SetLocations(yyvsp[-2].fLocation, yyvsp[0].fLocation); ;
1316 break;}
1317 case 7:
1318 #line 174 "parse.y"
1319 { EndSubWithParams(yyvsp[-4].fFragment, yyvsp[-2].fBlock, yyvsp[-5].fLocation, yyvsp[0].fLocation); ;
1320 break;}
1321 case 8:
1322 #line 175 "parse.y"
1323 { EndFunction(yyvsp[-4].fFunction, yyvsp[-2].fBlock, yyvsp[-5].fLocation, yyvsp[0].fLocation); ;
1324 break;}
1325 case 9:
1326 #line 176 "parse.y"
1327 { gProgram->AddResource(yyvsp[-1].fResource); ;
1328 break;}
1329 case 10:
1330 #line 180 "parse.y"
1331 { yyval.fFunction = BeginFunction(yyvsp[-1].fFunction, yyvsp[-3].fSymbol, yyvsp[-5].fBool); ;
1332 break;}
1333 case 11:
1334 #line 183 "parse.y"
1335 { yyval.fFragment = BeginSubWithParams(yyvsp[-1].fFragment, yyvsp[-3].fSymbol); ;
1336 break;}
1337 case 12:
1338 #line 186 "parse.y"
1339 { yyval.fBool = 0; ;
1340 break;}
1341 case 13:
1342 #line 187 "parse.y"
1343 { yyval.fBool = 1; ;
1344 break;}
1345 case 14:
1346 #line 190 "parse.y"
1347 { yyval.fFragment = new Fragment(true, yyvsp[-3].fSymbol, yyvsp[0].fStmt); ;
1348 break;}
1349 case 15:
1350 #line 197 "parse.y"
1351 { yyval.fFragment = new Fragment(false, yyvsp[-3].fSymbol, yyvsp[0].fStmt); ;
1352 break;}
1353 case 16:
1354 #line 200 "parse.y"
1355 { yyval.fFragment = yyvsp[-3].fFragment; DefineSubArg(yyval.fFragment, yyvsp[0].fSymbol, yyvsp[-1].fInt); ;
1356 break;}
1357 case 17:
1358 #line 201 "parse.y"
1359 { yyval.fFragment = new Fragment(false); DefineSubArg(yyval.fFragment,yyvsp[0].fSymbol,yyvsp[-1].fInt); ;
1360 break;}
1361 case 19:
1362 #line 205 "parse.y"
1363 { yyval.fFunction = new FunctionDef(); ;
1364 break;}
1365 case 20:
1366 #line 206 "parse.y"
1367 { yyval.fFunction = new FunctionDef(); ;
1368 break;}
1369 case 21:
1370 #line 209 "parse.y"
1371 { yyval.fFunction = yyvsp[-3].fFunction; DefineArg(yyval.fFunction, yyvsp[0].fSymbol, yyvsp[-1].fInt); ;
1372 break;}
1373 case 22:
1374 #line 210 "parse.y"
1375 { yyval.fFunction = new FunctionDef(); DefineArg(yyval.fFunction,yyvsp[0].fSymbol,yyvsp[-1].fInt); ;
1376 break;}
1377 case 23:
1378 #line 213 "parse.y"
1379 { yyval.fInt = FunctionDef::kIntegerArg; ;
1380 break;}
1381 case 24:
1382 #line 214 "parse.y"
1383 { yyval.fInt = FunctionDef::kConstantArg; ;
1384 break;}
1385 case 25:
1386 #line 215 "parse.y"
1387 { yyval.fInt = FunctionDef::kReferenceArg; ;
1388 break;}
1389 case 26:
1390 #line 216 "parse.y"
1391 { yyval.fInt = FunctionDef::kConstRefArg; ;
1392 break;}
1393 case 27:
1394 #line 217 "parse.y"
1395 { yyval.fInt = FunctionDef::kSensorArg; ;
1396 break;}
1397 case 28:
1398 #line 218 "parse.y"
1399 { yyval.fInt = FunctionDef::kPointerArg; ;
1400 break;}
1401 case 29:
1402 #line 219 "parse.y"
1403 { yyval.fInt = FunctionDef::kConstPtrArg; ;
1404 break;}
1405 case 30:
1406 #line 223 "parse.y"
1407 { yyvsp[-2].fBlock->Add(yyvsp[0].fStmt); yyval.fBlock = yyvsp[-2].fBlock; ;
1408 break;}
1409 case 31:
1410 #line 224 "parse.y"
1411 { yyval.fBlock = new BlockStmt(); yyval.fBlock->Add(yyvsp[0].fStmt); ;
1412 break;}
1413 case 32:
1414 #line 227 "parse.y"
1415 { yyval.fStmt = yyvsp[0].fDeclareStmt; ;
1416 break;}
1417 case 33:
1418 #line 228 "parse.y"
1419 { yyval.fStmt = yyvsp[-2].fDeclareStmt; yyvsp[-2].fDeclareStmt->SetInitialValue(yyvsp[0].fExpr); ;
1420 break;}
1421 case 34:
1422 #line 231 "parse.y"
1423 { yyval.fDeclareStmt = MakeDeclareStmt(yyvsp[-1].fSymbol, yyvsp[0].fLocation, 0, false, false); ;
1424 break;}
1425 case 35:
1426 #line 232 "parse.y"
1427 { yyval.fDeclareStmt = MakeDeclareStmt(yyvsp[-4].fSymbol, yyvsp[-3].fLocation, yyvsp[-1].fExpr, false, false); ;
1428 break;}
1429 case 36:
1430 #line 233 "parse.y"
1431 { yyval.fDeclareStmt = MakeDeclareStmt(yyvsp[-1].fSymbol, yyvsp[0].fLocation, 0, true, false); ;
1432 break;}
1433 case 37:
1434 #line 236 "parse.y"
1435 { BeginScope(); ;
1436 break;}
1437 case 38:
1438 #line 236 "parse.y"
1439 { yyval.fStmt = EndScope(yyvsp[-1].fBlock); ;
1440 break;}
1441 case 39:
1442 #line 239 "parse.y"
1443 { yyvsp[-1].fBlock->Add(yyvsp[0].fStmt); yyval.fBlock = yyvsp[-1].fBlock; ;
1444 break;}
1445 case 40:
1446 #line 240 "parse.y"
1447 { yyval.fBlock = new BlockStmt(); ;
1448 break;}
1449 case 41:
1450 #line 244 "parse.y"
1451 { yyval.fStmt = new BlockStmt(); ;
1452 break;}
1453 case 43:
1454 #line 246 "parse.y"
1455 { yyval.fStmt = yyvsp[-1].fCaseStmt; yyvsp[-1].fCaseStmt->SetStmt(yyvsp[0].fStmt); ;
1456 break;}
1457 case 44:
1458 #line 247 "parse.y"
1459 { yyval.fStmt = new LabelStmt(yyvsp[-2].fSymbol, yyvsp[-3].fLocation->GetLoc(), yyvsp[0].fStmt); delete yyvsp[-3].fLocation; ;
1460 break;}
1461 case 45:
1462 #line 248 "parse.y"
1463 { yyerrok; yyval.fStmt = new BlockStmt(); ;
1464 break;}
1465 case 47:
1466 #line 250 "parse.y"
1467 { yyvsp[-1].fStmt->SetLocation(yyvsp[0].fLocation); ;
1468 break;}
1469 case 48:
1470 #line 255 "parse.y"
1471 { yyval.fStmt = new WhileStmt(yyvsp[-3].fExpr, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-1].fLocation); ;
1472 break;}
1473 case 49:
1474 #line 256 "parse.y"
1475 { yyval.fStmt = new DoStmt(yyvsp[-2].fExpr, yyvsp[-5].fStmt); yyval.fStmt->SetLocation(yyvsp[-6].fLocation); ;
1476 break;}
1477 case 50:
1478 #line 257 "parse.y"
1479 { yyval.fStmt = new RepeatStmt(yyvsp[-3].fExpr, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-1].fLocation); ;
1480 break;}
1481 case 51:
1482 #line 258 "parse.y"
1483 { yyval.fStmt = new SwitchStmt(yyvsp[-3].fExpr, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-1].fLocation); ;
1484 break;}
1485 case 52:
1486 #line 259 "parse.y"
1487 { yyval.fStmt = new IfStmt(yyvsp[-3].fExpr, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-1].fLocation); ;
1488 break;}
1489 case 53:
1490 #line 260 "parse.y"
1491 { yyval.fStmt = new IfStmt(yyvsp[-5].fExpr, yyvsp[-2].fStmt, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-3].fLocation); ;
1492 break;}
1493 case 54:
1494 #line 261 "parse.y"
1495 { yyval.fStmt = new MonitorStmt(yyvsp[-4].fExpr, yyvsp[-1].fStmt, yyvsp[0].fBlock, yyvsp[-6].fLocation->GetLoc()); delete yyvsp[-6].fLocation; yyval.fStmt->SetLocation(yyvsp[-2].fLocation); ;
1496 break;}
1497 case 55:
1498 #line 262 "parse.y"
1499 { yyval.fStmt = MakeAcquireStmt(yyvsp[-4].fExpr, yyvsp[-1].fStmt, yyvsp[0].fStmt, yyvsp[-6].fLocation); yyval.fStmt->SetLocation(yyvsp[-2].fLocation); ;
1500 break;}
1501 case 56:
1502 #line 263 "parse.y"
1503 { yyval.fStmt = new ForStmt(yyvsp[-7].fStmt, yyvsp[-5].fExpr, yyvsp[-3].fStmt, yyvsp[0].fStmt); yyval.fStmt->SetLocation(yyvsp[-1].fLocation); ;
1504 break;}
1505 case 57:
1506 #line 264 "parse.y"
1507 { yyval.fStmt = new GotoStmt(yyvsp[-2].fSymbol, sSavedLoc); ;
1508 break;}
1509 case 58:
1510 #line 268 "parse.y"
1511 { yyval.fStmt = yyvsp[-2].fAsmStmt; ;
1512 break;}
1513 case 59:
1514 #line 269 "parse.y"
1515 { yyval.fStmt = new JumpStmt(yyvsp[-1].fInt, sSavedLoc); ;
1516 break;}
1517 case 60:
1518 #line 270 "parse.y"
1519 { yyval.fStmt = new TaskStmt((UByte)yyvsp[-3].fInt, yyvsp[-1].fSymbol, sSavedLoc); ;
1520 break;}
1521 case 61:
1522 #line 271 "parse.y"
1523 { yyval.fStmt = yyvsp[-2].fCall; yyvsp[-2].fCall->SetName(yyvsp[-4].fSymbol); yyvsp[-2].fCall->SetLocation(yyvsp[-5].fLocation->GetLoc()); delete yyvsp[-5].fLocation; ;
1524 break;}
1525 case 62:
1526 #line 272 "parse.y"
1527 { yyval.fStmt = yyvsp[-1].fBlock; ;
1528 break;}
1529 case 64:
1530 #line 277 "parse.y"
1531 { yyval.fStmt = new ExprStmt(yyvsp[0].fExpr); ;
1532 break;}
1533 case 65:
1534 #line 278 "parse.y"
1535 { CheckLValue(yyvsp[-2].fExpr); yyval.fStmt = MakeAssignStmt(yyvsp[-2].fExpr, yyvsp[-1].fInt, yyvsp[0].fExpr); ;
1536 break;}
1537 case 66:
1538 #line 279 "parse.y"
1539 { CheckLValue(yyvsp[-2].fExpr); yyval.fStmt = MakeAssign2Stmt(yyvsp[-2].fExpr, yyvsp[-1].fInt, yyvsp[0].fExpr); ;
1540 break;}
1541 case 67:
1542 #line 280 "parse.y"
1543 { CheckLValue(yyvsp[-2].fExpr); yyval.fStmt = new AssignStmt(yyvsp[-2].fExpr, yyvsp[0].fExpr); ;
1544 break;}
1545 case 69:
1546 #line 285 "parse.y"
1547 { yyval.fStmt = 0; ;
1548 break;}
1549 case 71:
1550 #line 289 "parse.y"
1551 { yyval.fExpr = 0; ;
1552 break;}
1553 case 73:
1554 #line 294 "parse.y"
1555 { yyval.fStmt = 0; ;
1556 break;}
1557 case 74:
1558 #line 298 "parse.y"
1559 { yyvsp[-1].fBlock->Add(yyvsp[0].fStmt); yyval.fBlock = yyvsp[-1].fBlock; ;
1560 break;}
1561 case 75:
1562 #line 299 "parse.y"
1563 { yyval.fBlock = new BlockStmt(); ;
1564 break;}
1565 case 76:
1566 #line 302 "parse.y"
1567 { yyval.fStmt = yyvsp[0].fStmt; ;
1568 break;}
1569 case 77:
1570 #line 303 "parse.y"
1571 { yyval.fStmt = MakeCatchStmt(yyvsp[-2].fExpr, yyvsp[0].fStmt, yyvsp[-4].fLocation); ;
1572 break;}
1573 case 78:
1574 #line 307 "parse.y"
1575 { yyval.fStmt = yyvsp[0].fStmt; ;
1576 break;}
1577 case 79:
1578 #line 310 "parse.y"
1579 { yyval.fCaseStmt = MakeCaseStmt(yyvsp[-1].fExpr, sSavedLoc); ;
1580 break;}
1581 case 80:
1582 #line 311 "parse.y"
1583 { yyval.fCaseStmt = new CaseStmt(CaseStmt::kDefaultValue, sSavedLoc); ;
1584 break;}
1585 case 82:
1586 #line 315 "parse.y"
1587 { yyval.fCall = new CallStmt(); ;
1588 break;}
1589 case 83:
1590 #line 318 "parse.y"
1591 { yyval.fCall = yyvsp[-2].fCall; yyval.fCall->AddParam(yyvsp[0].fExpr); ;
1592 break;}
1593 case 84:
1594 #line 319 "parse.y"
1595 { yyval.fCall = new CallStmt(); yyval.fCall->AddParam(yyvsp[0].fExpr); ;
1596 break;}
1597 case 85:
1598 #line 322 "parse.y"
1599 { yyval.fExpr = new AtomExpr(kRCX_ConstantType, yyvsp[-1].fInt, sSavedLoc); ;
1600 break;}
1601 case 86:
1602 #line 323 "parse.y"
1603 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '+', yyvsp[0].fExpr); ;
1604 break;}
1605 case 87:
1606 #line 324 "parse.y"
1607 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '-', yyvsp[0].fExpr); ;
1608 break;}
1609 case 88:
1610 #line 325 "parse.y"
1611 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '*', yyvsp[0].fExpr); ;
1612 break;}
1613 case 89:
1614 #line 326 "parse.y"
1615 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '/', yyvsp[0].fExpr); ;
1616 break;}
1617 case 90:
1618 #line 327 "parse.y"
1619 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '&', yyvsp[0].fExpr); ;
1620 break;}
1621 case 91:
1622 #line 328 "parse.y"
1623 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '|', yyvsp[0].fExpr); ;
1624 break;}
1625 case 92:
1626 #line 329 "parse.y"
1627 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '%', yyvsp[0].fExpr); ;
1628 break;}
1629 case 93:
1630 #line 330 "parse.y"
1631 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, LEFT, yyvsp[0].fExpr); ;
1632 break;}
1633 case 94:
1634 #line 331 "parse.y"
1635 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, RIGHT, yyvsp[0].fExpr); ;
1636 break;}
1637 case 95:
1638 #line 332 "parse.y"
1639 { yyval.fExpr = MakeBinaryExpr(yyvsp[-2].fExpr, '^', yyvsp[0].fExpr); ;
1640 break;}
1641 case 96:
1642 #line 333 "parse.y"
1643 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kEqualTo, yyvsp[0].fExpr); ;
1644 break;}
1645 case 97:
1646 #line 334 "parse.y"
1647 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kLessOrEqual, yyvsp[0].fExpr); ;
1648 break;}
1649 case 98:
1650 #line 335 "parse.y"
1651 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kGreaterOrEqual, yyvsp[0].fExpr); ;
1652 break;}
1653 case 99:
1654 #line 336 "parse.y"
1655 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kNotEqualTo, yyvsp[0].fExpr); ;
1656 break;}
1657 case 100:
1658 #line 337 "parse.y"
1659 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kLessThan, yyvsp[0].fExpr); ;
1660 break;}
1661 case 101:
1662 #line 338 "parse.y"
1663 { yyval.fExpr = new RelExpr(yyvsp[-2].fExpr, RelExpr::kGreaterThan, yyvsp[0].fExpr); ;
1664 break;}
1665 case 102:
1666 #line 339 "parse.y"
1667 { yyval.fExpr = new AtomExpr(kRCX_ConstantType, 1, sSavedLoc); ;
1668 break;}
1669 case 103:
1670 #line 340 "parse.y"
1671 { yyval.fExpr = new AtomExpr(kRCX_ConstantType, 0, sSavedLoc); ;
1672 break;}
1673 case 104:
1674 #line 341 "parse.y"
1675 { yyval.fExpr = new NegateExpr(yyvsp[0].fExpr); ;
1676 break;}
1677 case 105:
1678 #line 342 "parse.y"
1679 { yyval.fExpr = new LogicalExpr(yyvsp[-2].fExpr, LogicalExpr::kLogicalAnd, yyvsp[0].fExpr); ;
1680 break;}
1681 case 106:
1682 #line 343 "parse.y"
1683 { yyval.fExpr = new LogicalExpr(yyvsp[-2].fExpr, LogicalExpr::kLogicalOr, yyvsp[0].fExpr); ;
1684 break;}
1685 case 107:
1686 #line 345 "parse.y"
1687 { yyval.fExpr = MakeBinaryExpr(new AtomExpr(kRCX_ConstantType, 0, yyvsp[0].fExpr->GetLoc()), '-', yyvsp[0].fExpr); ;
1688 break;}
1689 case 108:
1690 #line 346 "parse.y"
1691 { yyval.fExpr = MakeUnaryExpr('~', yyvsp[0].fExpr); ;
1692 break;}
1693 case 109:
1694 #line 348 "parse.y"
1695 { yyval.fExpr = MakeUnaryExpr(ABS, yyvsp[-1].fExpr); ;
1696 break;}
1697 case 110:
1698 #line 349 "parse.y"
1699 { yyval.fExpr = MakeUnaryExpr(SIGN, yyvsp[-1].fExpr); ;
1700 break;}
1701 case 111:
1702 #line 351 "parse.y"
1703 { yyval.fExpr = yyvsp[-1].fExpr; ;
1704 break;}
1705 case 112:
1706 #line 352 "parse.y"
1707 { yyval.fExpr = MakeVarExpr(yyvsp[0].fSymbol, yyvsp[-1].fLocation); ;
1708 break;}
1709 case 113:
1710 #line 353 "parse.y"
1711 { yyval.fExpr = MakeArrayExpr(yyvsp[-3].fSymbol, yyvsp[-4].fLocation, yyvsp[-1].fExpr); ;
1712 break;}
1713 case 114:
1714 #line 354 "parse.y"
1715 { yyval.fExpr = MakeValueExpr(yyvsp[0].fExpr); ;
1716 break;}
1717 case 115:
1718 #line 356 "parse.y"
1719 { yyval.fExpr = MakeIncDecExpr(yyvsp[-1].fExpr, yyvsp[0].fInt, false, yyvsp[-1].fExpr->GetLoc()); ;
1720 break;}
1721 case 116:
1722 #line 357 "parse.y"
1723 { yyval.fExpr = MakeIncDecExpr(yyvsp[0].fExpr, yyvsp[-1].fInt, true, yyvsp[0].fExpr->GetLoc()); ;
1724 break;}
1725 case 117:
1726 #line 359 "parse.y"
1727 { yyval.fExpr = new SensorExpr(yyvsp[-1].fExpr); ;
1728 break;}
1729 case 118:
1730 #line 360 "parse.y"
1731 { yyval.fExpr = new TypeExpr(yyvsp[-1].fExpr); ;
1732 break;}
1733 case 119:
1734 #line 361 "parse.y"
1735 { yyval.fExpr = new EventSrcExpr(yyvsp[-1].fExpr, gProgram->GetTarget()->fType); ;
1736 break;}
1737 case 120:
1738 #line 362 "parse.y"
1739 { yyval.fExpr = MakeTaskIdExpr(yyvsp[-1].fLocation); ;
1740 break;}
1741 case 121:
1742 #line 363 "parse.y"
1743 { yyval.fExpr = MakeIndirectExpr(yyvsp[-4].fExpr, yyvsp[-1].fExpr); ;
1744 break;}
1745 case 122:
1746 #line 364 "parse.y"
1747 { yyval.fExpr = new TernaryExpr(yyvsp[-4].fExpr, yyvsp[-2].fExpr, yyvsp[0].fExpr); ;
1748 break;}
1749 case 123:
1750 #line 365 "parse.y"
1751 { yyval.fExpr = MakeAddrOfExpr(yyvsp[0].fSymbol, yyvsp[-2].fLocation, (Expr *)0); ;
1752 break;}
1753 case 124:
1754 #line 366 "parse.y"
1755 { yyval.fExpr = MakeAddrOfExpr(yyvsp[-3].fSymbol, yyvsp[-5].fLocation, yyvsp[-1].fExpr); ;
1756 break;}
1757 case 125:
1758 #line 367 "parse.y"
1759 { yyval.fExpr = MakeDerefExpr(yyvsp[0].fSymbol, yyvsp[-2].fLocation); ;
1760 break;}
1761 case 126:
1762 #line 370 "parse.y"
1763 { LexCurrentLocation(sSavedLoc); ;
1764 break;}
1765 case 127:
1766 #line 373 "parse.y"
1767 { yyval.fLocation = new LocationNode(); ;
1768 break;}
1769 case 128:
1770 #line 376 "parse.y"
1771 { yyval.fAsmStmt = yyvsp[-2].fAsmStmt; yyvsp[-2].fAsmStmt->Add(yyvsp[0].fField); ;
1772 break;}
1773 case 129:
1774 #line 377 "parse.y"
1775 { yyval.fAsmStmt = new AsmStmt(); yyval.fAsmStmt->Add(yyvsp[0].fField); ;
1776 break;}
1777 case 130:
1778 #line 378 "parse.y"
1779 { yyval.fAsmStmt = new AsmStmt(); ;
1780 break;}
1781 case 131:
1782 #line 382 "parse.y"
1783 { yyval.fField = MakeConstField(yyvsp[0].fExpr); ;
1784 break;}
1785 case 132:
1786 #line 383 "parse.y"
1787 { yyval.fField = new EAField(yyvsp[0].fExpr); ;
1788 break;}
1789 case 133:
1790 #line 384 "parse.y"
1791 { yyval.fField = new EAField(yyvsp[-2].fExpr, GetConstantValue(yyvsp[0].fExpr)); ;
1792 break;}
1793 case 134:
1794 #line 388 "parse.y"
1795 { yyval.fResource=yyvsp[-1].fResource; yyvsp[-1].fResource->SetInfo((RCX_ChunkType)GetConstantValue(yyvsp[-4].fExpr), yyvsp[-3].fSymbol); ;
1796 break;}
1797 case 135:
1798 #line 391 "parse.y"
1799 { yyval.fResource = yyvsp[-2].fResource; yyvsp[-2].fResource->Add(yyvsp[0].fInt); ;
1800 break;}
1801 case 136:
1802 #line 392 "parse.y"
1803 { yyval.fResource = new Resource(); yyval.fResource->Add(yyvsp[0].fInt); ;
1804 break;}
1805 case 137:
1806 #line 393 "parse.y"
1807 { yyval.fResource = new Resource(); ;
1808 break;}
1809 case 138:
1810 #line 396 "parse.y"
1811 { yyval.fInt = GetConstantValue(yyvsp[0].fExpr); ;
1812 break;}
1813 }
1814 /* the action file gets copied in in place of this dollarsign */
1815 #line 487 "bison.simple"
1816
1817 yyvsp -= yylen;
1818 yyssp -= yylen;
1819 #ifdef YYLSP_NEEDED
1820 yylsp -= yylen;
1821 #endif
1822
1823 #if YYDEBUG != 0
1824 if (yydebug)
1825 {
1826 short *ssp1 = yyss - 1;
1827 fprintf (stderr, "state stack now");
1828 while (ssp1 != yyssp)
1829 fprintf (stderr, " %d", *++ssp1);
1830 fprintf (stderr, "\n");
1831 }
1832 #endif
1833
1834 *++yyvsp = yyval;
1835
1836 #ifdef YYLSP_NEEDED
1837 yylsp++;
1838 if (yylen == 0)
1839 {
1840 yylsp->first_line = yylloc.first_line;
1841 yylsp->first_column = yylloc.first_column;
1842 yylsp->last_line = (yylsp-1)->last_line;
1843 yylsp->last_column = (yylsp-1)->last_column;
1844 yylsp->text = 0;
1845 }
1846 else
1847 {
1848 yylsp->last_line = (yylsp+yylen-1)->last_line;
1849 yylsp->last_column = (yylsp+yylen-1)->last_column;
1850 }
1851 #endif
1852
1853 /* Now "shift" the result of the reduction.
1854 Determine what state that goes to,
1855 based on the state we popped back to
1856 and the rule number reduced by. */
1857
1858 yyn = yyr1[yyn];
1859
1860 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1861 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1862 yystate = yytable[yystate];
1863 else
1864 yystate = yydefgoto[yyn - YYNTBASE];
1865
1866 goto yynewstate;
1867
1868 yyerrlab: /* here on detecting error */
1869
1870 if (! yyerrstatus)
1871 /* If not already recovering from an error, report this error. */
1872 {
1873 ++yynerrs;
1874
1875 #ifdef YYERROR_VERBOSE
1876 yyn = yypact[yystate];
1877
1878 if (yyn > YYFLAG && yyn < YYLAST)
1879 {
1880 int size = 0;
1881 char *msg;
1882 int x, count;
1883
1884 count = 0;
1885 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1886 for (x = (yyn < 0 ? -yyn : 0);
1887 x < (sizeof(yytname) / sizeof(char *)); x++)
1888 if (yycheck[x + yyn] == x)
1889 size += strlen(yytname[x]) + 15, count++;
1890 msg = (char *) malloc(size + 15);
1891 if (msg != 0)
1892 {
1893 strcpy(msg, "parse error");
1894
1895 if (count < 5)
1896 {
1897 count = 0;
1898 for (x = (yyn < 0 ? -yyn : 0);
1899 x < (sizeof(yytname) / sizeof(char *)); x++)
1900 if (yycheck[x + yyn] == x)
1901 {
1902 strcat(msg, count == 0 ? ", expecting `" : " or `");
1903 strcat(msg, yytname[x]);
1904 strcat(msg, "'");
1905 count++;
1906 }
1907 }
1908 yyerror(msg);
1909 free(msg);
1910 }
1911 else
1912 yyerror ("parse error; also virtual memory exceeded");
1913 }
1914 else
1915 #endif /* YYERROR_VERBOSE */
1916 yyerror("parse error");
1917 }
1918
1919 goto yyerrlab1;
1920 yyerrlab1: /* here on error raised explicitly by an action */
1921
1922 if (yyerrstatus == 3)
1923 {
1924 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1925
1926 /* return failure if at end of input */
1927 if (yychar == YYEOF)
1928 YYABORT;
1929
1930 #if YYDEBUG != 0
1931 if (yydebug)
1932 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1933 #endif
1934
1935 yychar = YYEMPTY;
1936 }
1937
1938 /* Else will try to reuse lookahead token
1939 after shifting the error token. */
1940
1941 yyerrstatus = 3; /* Each real token shifted decrements this */
1942
1943 goto yyerrhandle;
1944
1945 yyerrdefault: /* current state does not do anything special for the error token. */
1946
1947 #if 0
1948 /* This is wrong; only states that explicitly want error tokens
1949 should shift them. */
1950 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1951 if (yyn) goto yydefault;
1952 #endif
1953
1954 yyerrpop: /* pop the current state because it cannot handle the error token */
1955
1956 if (yyssp == yyss) YYABORT;
1957 yyvsp--;
1958 yystate = *--yyssp;
1959 #ifdef YYLSP_NEEDED
1960 yylsp--;
1961 #endif
1962
1963 #if YYDEBUG != 0
1964 if (yydebug)
1965 {
1966 short *ssp1 = yyss - 1;
1967 fprintf (stderr, "Error: state stack now");
1968 while (ssp1 != yyssp)
1969 fprintf (stderr, " %d", *++ssp1);
1970 fprintf (stderr, "\n");
1971 }
1972 #endif
1973
1974 yyerrhandle:
1975
1976 yyn = yypact[yystate];
1977 if (yyn == YYFLAG)
1978 goto yyerrdefault;
1979
1980 yyn += YYTERROR;
1981 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1982 goto yyerrdefault;
1983
1984 yyn = yytable[yyn];
1985 if (yyn < 0)
1986 {
1987 if (yyn == YYFLAG)
1988 goto yyerrpop;
1989 yyn = -yyn;
1990 goto yyreduce;
1991 }
1992 else if (yyn == 0)
1993 goto yyerrpop;
1994
1995 if (yyn == YYFINAL)
1996 YYACCEPT;
1997
1998 #if YYDEBUG != 0
1999 if (yydebug)
2000 fprintf(stderr, "Shifting error token, ");
2001 #endif
2002
2003 *++yyvsp = yylval;
2004 #ifdef YYLSP_NEEDED
2005 *++yylsp = yylloc;
2006 #endif
2007
2008 yystate = yyn;
2009 goto yynewstate;
2010 }
2011 #line 400 "parse.y"
2012
2013
2014
yyerror(const char * msg)2015 void yyerror(const char *msg)
2016 {
2017 Error(kErr_Parser, msg).RaiseLex();
2018 }
2019
2020