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