/[ascend]/trunk/base/generic/compiler/ascParse_no_yacc.c
ViewVC logotype

Contents of /trunk/base/generic/compiler/ascParse_no_yacc.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1523 - (show annotations) (download) (as text)
Sat Jun 30 14:55:05 2007 UTC (13 years ago) by jpye
File MIME type: text/x-csrc
File size: 184540 byte(s)
Little bit on trying to fix debian build.
1 /* A Bison parser, made by GNU Bison 2.3. */
2
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6 Free Software Foundation, Inc.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
22
23 /* As a special exception, you may create a larger work that contains
24 part or all of the Bison parser skeleton and distribute that work
25 under terms of your choice, so long as that work isn't itself a
26 parser generator using the skeleton or a modified version thereof
27 as a parser skeleton. Alternatively, if you modify or redistribute
28 the parser skeleton itself, you may (at your option) remove this
29 special exception, which will cause the skeleton and the resulting
30 Bison output files to be licensed under the GNU General Public
31 License without this special exception.
32
33 This special exception was added by the Free Software Foundation in
34 version 2.2 of Bison. */
35
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37 simplifying the original so-called "semantic" parser. */
38
39 /* All symbols defined below should begin with yy or YY, to avoid
40 infringing on user name space. This should be done even for local
41 variables, as they might otherwise be expanded by user macros.
42 There are some unavoidable exceptions within include files to
43 define necessary library symbols; they are noted "INFRINGES ON
44 USER NAME SPACE" below. */
45
46 /* Identify Bison output. */
47 #define YYBISON 1
48
49 /* Bison version. */
50 #define YYBISON_VERSION "2.3"
51
52 /* Skeleton name. */
53 #define YYSKELETON_NAME "yacc.c"
54
55 /* Pure parsers. */
56 #define YYPURE 0
57
58 /* Using locations. */
59 #define YYLSP_NEEDED 0
60
61 /* Substitute the variable and function names. */
62 #define yyparse zz_parse
63 #define yylex zz_lex
64 #define yyerror zz_error
65 #define yylval zz_lval
66 #define yychar zz_char
67 #define yydebug zz_debug
68 #define yynerrs zz_nerrs
69
70
71 /* Tokens. */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74 /* Put the tokens into the symbol table, so that GDB and other debuggers
75 know about them. */
76 enum yytokentype {
77 ADD_TOK = 258,
78 ALIASES_TOK = 259,
79 AND_TOK = 260,
80 ANY_TOK = 261,
81 AREALIKE_TOK = 262,
82 ARETHESAME_TOK = 263,
83 ARRAY_TOK = 264,
84 ASSERT_TOK = 265,
85 ATOM_TOK = 266,
86 BEQ_TOK = 267,
87 BNE_TOK = 268,
88 BREAK_TOK = 269,
89 CALL_TOK = 270,
90 CARD_TOK = 271,
91 CASE_TOK = 272,
92 CHOICE_TOK = 273,
93 CHECK_TOK = 274,
94 CONDITIONAL_TOK = 275,
95 CONSTANT_TOK = 276,
96 CONTINUE_TOK = 277,
97 CREATE_TOK = 278,
98 DATA_TOK = 279,
99 DECREASING_TOK = 280,
100 DEFAULT_TOK = 281,
101 DEFINITION_TOK = 282,
102 DIMENSION_TOK = 283,
103 DIMENSIONLESS_TOK = 284,
104 DO_TOK = 285,
105 ELSE_TOK = 286,
106 END_TOK = 287,
107 EXPECT_TOK = 288,
108 EXTERNAL_TOK = 289,
109 FALSE_TOK = 290,
110 FALLTHRU_TOK = 291,
111 FIX_TOK = 292,
112 FOR_TOK = 293,
113 FREE_TOK = 294,
114 FROM_TOK = 295,
115 GLOBAL_TOK = 296,
116 IF_TOK = 297,
117 IMPORT_TOK = 298,
118 IN_TOK = 299,
119 INPUT_TOK = 300,
120 INCREASING_TOK = 301,
121 INTERACTIVE_TOK = 302,
122 INTERSECTION_TOK = 303,
123 ISA_TOK = 304,
124 _IS_T = 305,
125 ISREFINEDTO_TOK = 306,
126 MAXIMIZE_TOK = 307,
127 MAXINTEGER_TOK = 308,
128 MAXREAL_TOK = 309,
129 METHODS_TOK = 310,
130 METHOD_TOK = 311,
131 MINIMIZE_TOK = 312,
132 MODEL_TOK = 313,
133 NOT_TOK = 314,
134 NOTES_TOK = 315,
135 OF_TOK = 316,
136 OR_TOK = 317,
137 OTHERWISE_TOK = 318,
138 OUTPUT_TOK = 319,
139 PATCH_TOK = 320,
140 PROD_TOK = 321,
141 PROVIDE_TOK = 322,
142 REFINES_TOK = 323,
143 REPLACE_TOK = 324,
144 REQUIRE_TOK = 325,
145 RETURN_TOK = 326,
146 RUN_TOK = 327,
147 SATISFIED_TOK = 328,
148 SELECT_TOK = 329,
149 SIZE_TOK = 330,
150 STOP_TOK = 331,
151 SUCHTHAT_TOK = 332,
152 SUM_TOK = 333,
153 SWITCH_TOK = 334,
154 THEN_TOK = 335,
155 TRUE_TOK = 336,
156 UNION_TOK = 337,
157 UNITS_TOK = 338,
158 UNIVERSAL_TOK = 339,
159 WHEN_TOK = 340,
160 WHERE_TOK = 341,
161 WHILE_TOK = 342,
162 WILLBE_TOK = 343,
163 WILLBETHESAME_TOK = 344,
164 WILLNOTBETHESAME_TOK = 345,
165 ASSIGN_TOK = 346,
166 CASSIGN_TOK = 347,
167 DBLCOLON_TOK = 348,
168 USE_TOK = 349,
169 LEQ_TOK = 350,
170 GEQ_TOK = 351,
171 NEQ_TOK = 352,
172 DOTDOT_TOK = 353,
173 WITH_TOK = 354,
174 VALUE_TOK = 355,
175 WITH_VALUE_T = 356,
176 REAL_TOK = 357,
177 INTEGER_TOK = 358,
178 IDENTIFIER_TOK = 359,
179 BRACEDTEXT_TOK = 360,
180 SYMBOL_TOK = 361,
181 DQUOTE_TOK = 362,
182 UPLUS_TOK = 363,
183 UMINUS_TOK = 364
184 };
185 #endif
186 /* Tokens. */
187 #define ADD_TOK 258
188 #define ALIASES_TOK 259
189 #define AND_TOK 260
190 #define ANY_TOK 261
191 #define AREALIKE_TOK 262
192 #define ARETHESAME_TOK 263
193 #define ARRAY_TOK 264
194 #define ASSERT_TOK 265
195 #define ATOM_TOK 266
196 #define BEQ_TOK 267
197 #define BNE_TOK 268
198 #define BREAK_TOK 269
199 #define CALL_TOK 270
200 #define CARD_TOK 271
201 #define CASE_TOK 272
202 #define CHOICE_TOK 273
203 #define CHECK_TOK 274
204 #define CONDITIONAL_TOK 275
205 #define CONSTANT_TOK 276
206 #define CONTINUE_TOK 277
207 #define CREATE_TOK 278
208 #define DATA_TOK 279
209 #define DECREASING_TOK 280
210 #define DEFAULT_TOK 281
211 #define DEFINITION_TOK 282
212 #define DIMENSION_TOK 283
213 #define DIMENSIONLESS_TOK 284
214 #define DO_TOK 285
215 #define ELSE_TOK 286
216 #define END_TOK 287
217 #define EXPECT_TOK 288
218 #define EXTERNAL_TOK 289
219 #define FALSE_TOK 290
220 #define FALLTHRU_TOK 291
221 #define FIX_TOK 292
222 #define FOR_TOK 293
223 #define FREE_TOK 294
224 #define FROM_TOK 295
225 #define GLOBAL_TOK 296
226 #define IF_TOK 297
227 #define IMPORT_TOK 298
228 #define IN_TOK 299
229 #define INPUT_TOK 300
230 #define INCREASING_TOK 301
231 #define INTERACTIVE_TOK 302
232 #define INTERSECTION_TOK 303
233 #define ISA_TOK 304
234 #define _IS_T 305
235 #define ISREFINEDTO_TOK 306
236 #define MAXIMIZE_TOK 307
237 #define MAXINTEGER_TOK 308
238 #define MAXREAL_TOK 309
239 #define METHODS_TOK 310
240 #define METHOD_TOK 311
241 #define MINIMIZE_TOK 312
242 #define MODEL_TOK 313
243 #define NOT_TOK 314
244 #define NOTES_TOK 315
245 #define OF_TOK 316
246 #define OR_TOK 317
247 #define OTHERWISE_TOK 318
248 #define OUTPUT_TOK 319
249 #define PATCH_TOK 320
250 #define PROD_TOK 321
251 #define PROVIDE_TOK 322
252 #define REFINES_TOK 323
253 #define REPLACE_TOK 324
254 #define REQUIRE_TOK 325
255 #define RETURN_TOK 326
256 #define RUN_TOK 327
257 #define SATISFIED_TOK 328
258 #define SELECT_TOK 329
259 #define SIZE_TOK 330
260 #define STOP_TOK 331
261 #define SUCHTHAT_TOK 332
262 #define SUM_TOK 333
263 #define SWITCH_TOK 334
264 #define THEN_TOK 335
265 #define TRUE_TOK 336
266 #define UNION_TOK 337
267 #define UNITS_TOK 338
268 #define UNIVERSAL_TOK 339
269 #define WHEN_TOK 340
270 #define WHERE_TOK 341
271 #define WHILE_TOK 342
272 #define WILLBE_TOK 343
273 #define WILLBETHESAME_TOK 344
274 #define WILLNOTBETHESAME_TOK 345
275 #define ASSIGN_TOK 346
276 #define CASSIGN_TOK 347
277 #define DBLCOLON_TOK 348
278 #define USE_TOK 349
279 #define LEQ_TOK 350
280 #define GEQ_TOK 351
281 #define NEQ_TOK 352
282 #define DOTDOT_TOK 353
283 #define WITH_TOK 354
284 #define VALUE_TOK 355
285 #define WITH_VALUE_T 356
286 #define REAL_TOK 357
287 #define INTEGER_TOK 358
288 #define IDENTIFIER_TOK 359
289 #define BRACEDTEXT_TOK 360
290 #define SYMBOL_TOK 361
291 #define DQUOTE_TOK 362
292 #define UPLUS_TOK 363
293 #define UMINUS_TOK 364
294
295
296
297
298 /* Copy the first part of user declarations. */
299 #line 31 "base/generic/compiler/ascParse.y"
300
301 #include <stdio.h>
302 #include <stdarg.h>
303 #include <limits.h> /* need DBL_MAX and LONG_MAX */
304 #include <float.h> /* on a NeXT they are in here */
305
306 #include <compiler/parser.h>
307
308 #include <utilities/ascMalloc.h>
309 #include <general/list.h>
310 #include <general/dstring.h>
311 #include <compiler/compiler.h>
312 #include <compiler/scanner.h>
313 #include <compiler/symtab.h> /* the global string/symbol table */
314 #include <compiler/notate.h> /* notes database wrapper */
315 #include <compiler/braced.h>
316 #include <compiler/fractions.h>
317 #include <compiler/dimen.h>
318 #include <compiler/functype.h>
319 #include <compiler/func.h>
320 #include <compiler/expr_types.h>
321 #include <compiler/name.h>
322 #include <compiler/nameio.h>
323 #include <compiler/instance_enum.h>
324 #include <compiler/extfunc.h>
325 #include <compiler/packages.h>
326 #include <compiler/sets.h>
327 #include <compiler/exprs.h>
328 #include <compiler/exprio.h>
329 #include <compiler/vlist.h>
330 #include <compiler/vlistio.h> /* for debugging only */
331 #include <compiler/stattypes.h>
332 #include <compiler/slist.h>
333 #include <compiler/statement.h>
334 #include <compiler/statio.h>
335 #include <compiler/units.h>
336 #include <compiler/when.h>
337 #include <compiler/select.h>
338 #include <compiler/switch.h>
339 #include <compiler/proc.h>
340 #include <compiler/watchpt.h>
341 #include <compiler/module.h>
342 #include <compiler/child.h>
343 #include <compiler/type_desc.h>
344 #include <compiler/type_descio.h>
345 #include <compiler/typedef.h>
346 #include <compiler/library.h>
347 #include <compiler/syntax.h>
348 #include <compiler/lexer.h>
349
350 /* 1 ==> expr can find missing , w/o shift/reduce conflicts */
351 #define COMMAEXPR_NOTBUGGY 0
352 #if COMMAEXPR_NOTBUGGY
353 #include <compiler/exprio.h>
354 #endif /* for CommaExpr if working. */
355
356 int g_compiler_warnings = 1; /* level of whine to allow */
357
358 #include <compiler/redirectFile.h>
359 #ifndef ASCERR
360 # error "ASCERR not defined"
361 #endif
362
363 extern int zz_error(char *);
364 /* provided at the end of this file.
365 * it increments g_untrapped_error, the global defined below
366 */
367
368 static unsigned long g_header_linenum = 0;
369 static unsigned int g_untrapped_error = 0;
370 /* if g_untrapped_error is set to 1, the current definition
371 * should be abandoned even if nothing else detectable by
372 * typedef.c exists. basically any syntax error should cause a type
373 * to be abandoned, but not all cause the parser to barf.
374 */
375
376 /* the last seen method name while processing a method */
377 static symchar *g_proc_name=NULL;
378
379 /* the last seen ATOM/MODEL/constant type and refinement base */
380 static symchar *g_type_name=NULL;
381 static symchar *g_refines_name=NULL;
382 /*
383 * g_type_name is used by the scanner when closing a module to check if
384 * the parser is in the middle of parsing a MODEL or ATOM type
385 * definition.
386 * g_type_name == NULL implies that the parser is in between
387 * definitions. This depends on proper
388 * resets to NULL at END of type productions.
389 * g_type_name != NULL implies that the parser is in the middle
390 * of a type definition and gives the name
391 * of that type.
392 */
393
394 static symchar *g_end_identifier = NULL;
395 /* This variable gets reset every time we see an ``END_TOK''. If the
396 * token after END_TOK is missing (i.e., ``END;'') or if it is recognized
397 * (e.g., FOR_TOK), set this variable to NULL. When we see an
398 * ``END_TOK IDENTIFIER_TOK'', set this variable to the pointer into the
399 * symbol table returned by the scanner.
400 */
401
402 static struct StatementList *g_model_parameters=NULL;
403 /* this is the statementlist of the parameterized type
404 */
405
406 static struct StatementList *g_parameter_wheres=NULL;
407 /* this is the where list of a parameterized type. restrictions on args
408 */
409
410 static struct StatementList *g_parameter_reduction=NULL;
411 /* this is the statementlist of the REFINES clause
412 * at present both might be null, which is bad.
413 */
414
415 static struct Set *g_typeargs=NULL;
416 /* optional args to a typename in part declaration.
417 * it is set in the production type_identifier. in
418 * contexts where args are not allowed, use IDENTIFIER_TOK instead of the
419 * type_identifier production.
420 */
421
422 static struct Set *g_callargs=NULL;
423 /* optional args to a user defined method.
424 * it is set in the production call_identifier. in
425 * contexts where args are not allowed, use IDENTIFIER_TOK instead of the
426 * type_identifier production.
427 */
428
429 static struct gl_list_t *g_notelist = NULL;
430 /*
431 * Notes accumulator until a type commits or destroys it.
432 */
433
434 static int g_defaulted; /* used for atoms,constants */
435
436 static CONST dim_type *g_dim_ptr; /* dim of last units parsed, or so */
437 static CONST dim_type *g_atom_dim_ptr; /* dim of DIMENSION decl */
438 static CONST dim_type *g_default_dim_ptr; /* dim of default value parsed */
439
440 static double g_default_double;
441 static long g_default_long;
442 symchar *g_default_symbol;
443 #define DOUBLECONSTANT 0
444 #define LONGCONSTANT 1
445 #define BOOLEANCONSTANT 2
446 #define SYMBOLCONSTANT 3
447 static int g_constant_type = DOUBLECONSTANT;
448 static CONST struct Units *g_units_ptr;
449
450 int g_parse_relns = 1;
451 /* Should we parse relations?
452 * 0 indicates don't parse relations
453 * 1 indicates process them
454 */
455
456 /* Forward declaration of error message reporting
457 * functions provided at the end of this file.
458 */
459 static void ErrMsg_Generic(CONST char *);
460 static void ErrMsg_CommaName(CONST char *, struct Name *);
461 #if COMMAEXPR_NOTBUGGY
462 static void ErrMsg_CommaExpr(CONST char *, struct Expr *);
463 #endif /* COMMAEXPR_NOTBUGGY */
464 static void ErrMsg_NullDefPointer(CONST char *);
465 static void ErrMsg_ParensBrackets(CONST char *);
466 static void WarnMsg_MismatchEnd(CONST char *, CONST char *,
467 unsigned long, CONST char *);
468 static CONST char *TokenAsString(unsigned long);
469
470 static void error_reporter_current_line(const error_severity_t sev, const char *fmt,...);
471
472 /** @page ascend-notes About 'NOTES' in ASCEND
473 *
474 * The parser will now parse a NOTES block as well as in-lined NOTES. As
475 * a matter of fact, the parser would probably parse FORTRAN now since it
476 * is very lenient. For the in-lined NOTES, I accept any "doubly-quoted"
477 * string after an `fname'. I am currently dropping the NOTE on the
478 * floor. Ideally, we should only accept an inline NOTE when we are
479 * creating a new thing, like in an IS_A statement or a labeled relation.
480 * That means either adding the optional_note to fname and whining at the
481 * user when he/she uses the in-lined notes incorrectly, or coming up
482 * with a fvarnotelist and fnamenote that accepts fnames and
483 * optional_notes in a list or a stand-alone form.
484 *
485 * For the block NOTES statement, the symtax is
486 *
487 * NOTES ( SYMBOL_TOK ( fvarlist BRACEDTEXT_TOK )+ )+ END NOTES ';'
488 *
489 * Here I am using () as part of the meta-language to describe the syntax
490 * to you, they are not part of the formal grammer. An example is
491 *
492 * NOTES
493 * 'text' a,b,c { Here is some text }
494 * d { Here is more text }
495 * 'html' SELF { <bold>html sucks</bold> }
496 * END NOTES;
497 *
498 * Note that the only punctuation is the `,' between the members of the
499 * fvarlist and the closing `;'. Right now, the term `SELF' would be
500 * eaten in the fvarlist production. I'm not sure if this is what we
501 * should do (which requires having the notes processing do something
502 * special when it sees SELF in the fvarlist), or if we should create
503 * a SELF_TOK token. The latter is certainly easier to implement from
504 * the parser's perspective, which is why I did it that way.
505 *
506 * The block NOTES statement doesn't do anything with its stuff either,
507 * the symbols and {bracedText} get dropped on the floor and I destroy
508 * the fvarlist, but that all that happens.
509 *
510 * The `notes_body' and `noteslist' productions return `notes_ptr', which
511 * right now is a `void*' until we can decide what type of data structure
512 * we want to handle NOTES.
513 *
514 * As an amusing side note, the parser will currently eat the following:
515 *
516 * NOTES
517 * 'fun' name "put some text here" {put more text here}
518 * END NOTES;
519 *
520 * Like I said, this is so the parser will eat them; it's not being real
521 * smart about what it does with them.
522 *
523 * For debugging the NOTES stuff, set the DEBUG_NOTES macro to the
524 * following:
525 *
526 * #define DEBUG_NOTES(s) FPRINTF(stderr,"****DISCARDED NOTES:\n%s****\n",(s))
527 *
528 * To completely ignore the NOTES, set DEBUG_NOTES to the following:
529 *
530 * #define DEBUG_NOTES(s) 0
531 *
532 * Note that if you do the latter, you'll get `statement with no effect'
533 * warnings from gcc -Wall.
534 *
535 * -- Mark Thomas Thursday, 13 March 1997
536 */
537 /* #define DEBUG_NOTES(s) 0 */
538 #define DEBUG_NOTES(s) ERROR_REPORTER_NOLINE(ASC_USER_WARNING,"Discarded note: %s", (s))
539
540 /*
541 * Because the ascend types and notes are not tightly bound to each other,
542 * what with notes being stored in a database,
543 * We collect notes locally until the type associated with a batch of notes
544 * is approved by typedef and other error checks. Then we process the
545 * collected notes, commiting them to the database.
546 *
547 * NOTES made via ADD NOTES do not require a type check first and the
548 * type may not even exist yet in the library.
549 *
550 * ProcessNotes(keep); Clear up collected list, commit them if keep != 0.
551 * CollectNote(note); Add a note to the collected list.
552 */
553 static void ProcessNotes(int);
554 static void CollectNote(struct Note *);
555
556 /* For 'inline' notes, note on DQUOTE_TOK from scanner.l:
557 * Remember that DQUOTE_TOK is a string value which is local to the
558 * production that finds it. It must be copied if you want to
559 * keep it.
560 */
561
562 /* MS VC++ won't compiler Bison output unless we switch this */
563 #ifdef _MSC_VER
564 # define __STDC__
565 #endif
566
567
568
569 /* Enabling traces. */
570 #ifndef YYDEBUG
571 # define YYDEBUG 0
572 #endif
573
574 /* Enabling verbose error messages. */
575 #ifdef YYERROR_VERBOSE
576 # undef YYERROR_VERBOSE
577 # define YYERROR_VERBOSE 1
578 #else
579 # define YYERROR_VERBOSE 0
580 #endif
581
582 /* Enabling the token table. */
583 #ifndef YYTOKEN_TABLE
584 # define YYTOKEN_TABLE 0
585 #endif
586
587 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
588 typedef union YYSTYPE
589 #line 304 "base/generic/compiler/ascParse.y"
590 {
591 double real_value;
592 long int_value;
593 struct fraction frac_value;
594 symchar *id_ptr;
595 CONST char *braced_ptr; /* pointer for units, explanations, tables */
596 symchar *sym_ptr; /* pointer for symbols */
597 CONST char *dquote_ptr; /* for text in "double quotes" */
598 struct Name *nptr;
599 struct Expr *eptr;
600 struct Set *sptr;
601 struct VariableList *lptr;
602 struct Statement *statptr;
603 struct StatementList *slptr;
604 struct SelectList *septr;
605 struct SwitchList *swptr;
606 struct WhenList *wptr;
607 struct NoteTmp *notesptr; /* change this once struct Notes is defined */
608 struct gl_list_t *listp;
609 struct InitProcedure *procptr;
610 CONST dim_type *dimp;
611 struct TypeDescription *tptr;
612 struct UnitDefinition *udefptr;
613 dim_type dimen;
614 enum ForOrder order;
615 enum ForKind fkind;
616 }
617 /* Line 187 of yacc.c. */
618 #line 619 "base/generic/compiler/ascParse.c"
619 YYSTYPE;
620 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
621 # define YYSTYPE_IS_DECLARED 1
622 # define YYSTYPE_IS_TRIVIAL 1
623 #endif
624
625
626
627 /* Copy the second part of user declarations. */
628
629
630 /* Line 216 of yacc.c. */
631 #line 632 "base/generic/compiler/ascParse.c"
632
633 #ifdef short
634 # undef short
635 #endif
636
637 #ifdef YYTYPE_UINT8
638 typedef YYTYPE_UINT8 yytype_uint8;
639 #else
640 typedef unsigned char yytype_uint8;
641 #endif
642
643 #ifdef YYTYPE_INT8
644 typedef YYTYPE_INT8 yytype_int8;
645 #elif (defined __STDC__ || defined __C99__FUNC__ \
646 || defined __cplusplus || defined _MSC_VER)
647 typedef signed char yytype_int8;
648 #else
649 typedef short int yytype_int8;
650 #endif
651
652 #ifdef YYTYPE_UINT16
653 typedef YYTYPE_UINT16 yytype_uint16;
654 #else
655 typedef unsigned short int yytype_uint16;
656 #endif
657
658 #ifdef YYTYPE_INT16
659 typedef YYTYPE_INT16 yytype_int16;
660 #else
661 typedef short int yytype_int16;
662 #endif
663
664 #ifndef YYSIZE_T
665 # ifdef __SIZE_TYPE__
666 # define YYSIZE_T __SIZE_TYPE__
667 # elif defined size_t
668 # define YYSIZE_T size_t
669 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
670 || defined __cplusplus || defined _MSC_VER)
671 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
672 # define YYSIZE_T size_t
673 # else
674 # define YYSIZE_T unsigned int
675 # endif
676 #endif
677
678 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
679
680 #ifndef YY_
681 # if YYENABLE_NLS
682 # if ENABLE_NLS
683 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
684 # define YY_(msgid) dgettext ("bison-runtime", msgid)
685 # endif
686 # endif
687 # ifndef YY_
688 # define YY_(msgid) msgid
689 # endif
690 #endif
691
692 /* Suppress unused-variable warnings by "using" E. */
693 #if ! defined lint || defined __GNUC__
694 # define YYUSE(e) ((void) (e))
695 #else
696 # define YYUSE(e) /* empty */
697 #endif
698
699 /* Identity function, used to suppress warnings about constant conditions. */
700 #ifndef lint
701 # define YYID(n) (n)
702 #else
703 #if (defined __STDC__ || defined __C99__FUNC__ \
704 || defined __cplusplus || defined _MSC_VER)
705 static int
706 YYID (int i)
707 #else
708 static int
709 YYID (i)
710 int i;
711 #endif
712 {
713 return i;
714 }
715 #endif
716
717 #if ! defined yyoverflow || YYERROR_VERBOSE
718
719 /* The parser invokes alloca or malloc; define the necessary symbols. */
720
721 # ifdef YYSTACK_USE_ALLOCA
722 # if YYSTACK_USE_ALLOCA
723 # ifdef __GNUC__
724 # define YYSTACK_ALLOC __builtin_alloca
725 # elif defined __BUILTIN_VA_ARG_INCR
726 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
727 # elif defined _AIX
728 # define YYSTACK_ALLOC __alloca
729 # elif defined _MSC_VER
730 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
731 # define alloca _alloca
732 # else
733 # define YYSTACK_ALLOC alloca
734 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
735 || defined __cplusplus || defined _MSC_VER)
736 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
737 # ifndef _STDLIB_H
738 # define _STDLIB_H 1
739 # endif
740 # endif
741 # endif
742 # endif
743 # endif
744
745 # ifdef YYSTACK_ALLOC
746 /* Pacify GCC's `empty if-body' warning. */
747 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
748 # ifndef YYSTACK_ALLOC_MAXIMUM
749 /* The OS might guarantee only one guard page at the bottom of the stack,
750 and a page size can be as small as 4096 bytes. So we cannot safely
751 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
752 to allow for a few compiler-allocated temporary stack slots. */
753 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
754 # endif
755 # else
756 # define YYSTACK_ALLOC YYMALLOC
757 # define YYSTACK_FREE YYFREE
758 # ifndef YYSTACK_ALLOC_MAXIMUM
759 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
760 # endif
761 # if (defined __cplusplus && ! defined _STDLIB_H \
762 && ! ((defined YYMALLOC || defined malloc) \
763 && (defined YYFREE || defined free)))
764 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
765 # ifndef _STDLIB_H
766 # define _STDLIB_H 1
767 # endif
768 # endif
769 # ifndef YYMALLOC
770 # define YYMALLOC malloc
771 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
772 || defined __cplusplus || defined _MSC_VER)
773 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
774 # endif
775 # endif
776 # ifndef YYFREE
777 # define YYFREE free
778 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
779 || defined __cplusplus || defined _MSC_VER)
780 void free (void *); /* INFRINGES ON USER NAME SPACE */
781 # endif
782 # endif
783 # endif
784 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
785
786
787 #if (! defined yyoverflow \
788 && (! defined __cplusplus \
789 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
790
791 /* A type that is properly aligned for any stack member. */
792 union yyalloc
793 {
794 yytype_int16 yyss;
795 YYSTYPE yyvs;
796 };
797
798 /* The size of the maximum gap between one aligned stack and the next. */
799 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
800
801 /* The size of an array large to enough to hold all stacks, each with
802 N elements. */
803 # define YYSTACK_BYTES(N) \
804 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
805 + YYSTACK_GAP_MAXIMUM)
806
807 /* Copy COUNT objects from FROM to TO. The source and destination do
808 not overlap. */
809 # ifndef YYCOPY
810 # if defined __GNUC__ && 1 < __GNUC__
811 # define YYCOPY(To, From, Count) \
812 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
813 # else
814 # define YYCOPY(To, From, Count) \
815 do \
816 { \
817 YYSIZE_T yyi; \
818 for (yyi = 0; yyi < (Count); yyi++) \
819 (To)[yyi] = (From)[yyi]; \
820 } \
821 while (YYID (0))
822 # endif
823 # endif
824
825 /* Relocate STACK from its old location to the new one. The
826 local variables YYSIZE and YYSTACKSIZE give the old and new number of
827 elements in the stack, and YYPTR gives the new location of the
828 stack. Advance YYPTR to a properly aligned location for the next
829 stack. */
830 # define YYSTACK_RELOCATE(Stack) \
831 do \
832 { \
833 YYSIZE_T yynewbytes; \
834 YYCOPY (&yyptr->Stack, Stack, yysize); \
835 Stack = &yyptr->Stack; \
836 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
837 yyptr += yynewbytes / sizeof (*yyptr); \
838 } \
839 while (YYID (0))
840
841 #endif
842
843 /* YYFINAL -- State number of the termination state. */
844 #define YYFINAL 2
845 /* YYLAST -- Last index in YYTABLE. */
846 #define YYLAST 1102
847
848 /* YYNTOKENS -- Number of terminals. */
849 #define YYNTOKENS 127
850 /* YYNNTS -- Number of nonterminals. */
851 #define YYNNTS 116
852 /* YYNRULES -- Number of rules. */
853 #define YYNRULES 307
854 /* YYNRULES -- Number of states. */
855 #define YYNSTATES 616
856
857 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
858 #define YYUNDEFTOK 2
859 #define YYMAXUTOK 364
860
861 #define YYTRANSLATE(YYX) \
862 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
863
864 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
865 static const yytype_uint8 yytranslate[] =
866 {
867 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
868 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
869 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
870 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
871 121, 122, 116, 113, 108, 114, 124, 115, 2, 2,
872 2, 2, 2, 2, 2, 2, 2, 2, 123, 120,
873 110, 111, 112, 2, 2, 2, 2, 2, 2, 2,
874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
875 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
876 2, 125, 2, 126, 119, 2, 2, 2, 2, 2,
877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
878 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
879 2, 2, 2, 2, 109, 2, 2, 2, 2, 2,
880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
881 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
884 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
885 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
888 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
889 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
890 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
891 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
892 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
893 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
894 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
895 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
896 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
897 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
898 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
899 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
900 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
901 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
902 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
903 105, 106, 107, 117, 118
904 };
905
906 #if YYDEBUG
907 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
908 YYRHS. */
909 static const yytype_uint16 yyprhs[] =
910 {
911 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
912 19, 21, 23, 25, 27, 29, 31, 33, 35, 41,
913 45, 49, 52, 56, 60, 63, 69, 73, 78, 85,
914 90, 96, 103, 108, 114, 121, 128, 135, 138, 139,
915 143, 146, 149, 152, 155, 164, 165, 169, 172, 175,
916 178, 185, 190, 198, 201, 202, 206, 207, 212, 213,
917 217, 223, 229, 230, 232, 238, 241, 244, 248, 249,
918 252, 257, 258, 259, 263, 265, 266, 269, 275, 278,
919 280, 281, 285, 289, 291, 293, 295, 297, 299, 301,
920 303, 305, 307, 309, 311, 313, 315, 317, 319, 321,
921 323, 325, 327, 329, 331, 333, 335, 337, 339, 341,
922 343, 345, 347, 349, 355, 361, 365, 378, 379, 384,
923 389, 393, 395, 400, 402, 407, 408, 411, 412, 415,
924 416, 419, 422, 425, 428, 431, 435, 439, 441, 445,
925 447, 450, 453, 463, 467, 471, 472, 477, 487, 488,
926 491, 500, 501, 503, 505, 507, 509, 511, 513, 516,
927 521, 524, 527, 533, 536, 539, 546, 552, 553, 556,
928 561, 568, 575, 584, 586, 591, 595, 601, 606, 608,
929 610, 612, 614, 617, 620, 625, 632, 634, 639, 643,
930 649, 654, 659, 666, 668, 673, 677, 683, 688, 692,
931 696, 699, 703, 706, 710, 712, 714, 718, 721, 724,
932 726, 730, 735, 738, 741, 744, 747, 750, 753, 756,
933 759, 762, 765, 768, 771, 774, 776, 777, 779, 780,
934 782, 784, 785, 787, 791, 795, 801, 803, 805, 808,
935 811, 812, 814, 817, 819, 820, 822, 824, 826, 828,
936 832, 836, 840, 844, 847, 849, 855, 856, 858, 860,
937 862, 864, 866, 868, 870, 872, 874, 876, 878, 882,
938 886, 890, 894, 898, 902, 906, 910, 913, 917, 921,
939 925, 929, 933, 936, 939, 946, 951, 956, 961, 966,
940 971, 976, 981, 986, 991, 996, 1001, 1006, 1011, 1016,
941 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034
942 };
943
944 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
945 static const yytype_int16 yyrhs[] =
946 {
947 128, 0, -1, -1, 128, 129, -1, 131, -1, 132,
948 -1, 133, -1, 136, -1, 138, -1, 134, -1, 144,
949 -1, 140, -1, 147, -1, 156, -1, 153, -1, 158,
950 -1, 130, -1, 1, -1, 41, 120, 168, 226, 120,
951 -1, 70, 107, 120, -1, 70, 225, 120, -1, 70,
952 225, -1, 67, 107, 120, -1, 67, 225, 120, -1,
953 67, 225, -1, 43, 104, 40, 107, 120, -1, 43,
954 107, 120, -1, 135, 220, 226, 120, -1, 3, 60,
955 44, 104, 179, 120, -1, 137, 164, 226, 120, -1,
956 3, 55, 44, 104, 120, -1, 3, 55, 44, 27,
957 58, 120, -1, 139, 164, 226, 120, -1, 69, 55,
958 44, 104, 120, -1, 69, 55, 44, 27, 58, 120,
959 -1, 155, 141, 168, 162, 226, 120, -1, 142, 68,
960 104, 234, 143, 120, -1, 11, 104, -1, -1, 26,
961 239, 231, -1, 26, 35, -1, 26, 81, -1, 26,
962 106, -1, 155, 145, -1, 21, 104, 68, 104, 234,
963 146, 228, 120, -1, -1, 92, 239, 231, -1, 92,
964 81, -1, 92, 35, -1, 92, 106, -1, 155, 148,
965 168, 162, 226, 120, -1, 149, 150, 151, 120, -1,
966 149, 150, 151, 68, 104, 152, 120, -1, 58, 104,
967 -1, -1, 121, 168, 122, -1, -1, 86, 121, 168,
968 122, -1, -1, 121, 168, 122, -1, 154, 168, 162,
969 226, 120, -1, 65, 104, 38, 104, 120, -1, -1,
970 84, -1, 157, 168, 162, 226, 120, -1, 27, 104,
971 -1, 159, 120, -1, 83, 160, 226, -1, -1, 160,
972 161, -1, 104, 111, 105, 120, -1, -1, -1, 55,
973 163, 164, -1, 165, -1, -1, 165, 166, -1, 167,
974 120, 168, 226, 120, -1, 56, 104, -1, 169, -1,
975 -1, 169, 170, 120, -1, 169, 1, 120, -1, 171,
976 -1, 172, -1, 173, -1, 175, -1, 176, -1, 182,
977 -1, 183, -1, 184, -1, 185, -1, 186, -1, 187,
978 -1, 193, -1, 189, -1, 202, -1, 201, -1, 195,
979 -1, 198, -1, 199, -1, 200, -1, 203, -1, 204,
980 -1, 205, -1, 207, -1, 211, -1, 210, -1, 212,
981 -1, 215, -1, 218, -1, 219, -1, 159, -1, 222,
982 49, 178, 180, 181, -1, 222, 88, 178, 180, 181,
983 -1, 222, 4, 224, -1, 222, 4, 121, 222, 122,
984 86, 222, 49, 104, 61, 104, 174, -1, -1, 101,
985 121, 229, 122, -1, 222, 50, 104, 180, -1, 222,
986 51, 178, -1, 104, -1, 104, 121, 229, 122, -1,
987 104, -1, 104, 121, 229, 122, -1, -1, 56, 104,
988 -1, -1, 61, 104, -1, -1, 101, 240, -1, 222,
989 7, -1, 222, 8, -1, 222, 89, -1, 222, 90,
990 -1, 224, 91, 240, -1, 224, 92, 240, -1, 188,
991 -1, 224, 123, 188, -1, 240, -1, 57, 240, -1,
992 52, 240, -1, 224, 123, 104, 121, 190, 120, 191,
993 192, 122, -1, 222, 123, 45, -1, 222, 123, 64,
994 -1, -1, 120, 224, 123, 24, -1, 224, 123, 104,
995 121, 222, 120, 103, 122, 194, -1, -1, 44, 224,
996 -1, 38, 104, 44, 240, 196, 197, 168, 226, -1,
997 -1, 46, -1, 25, -1, 23, -1, 33, -1, 19,
998 -1, 30, -1, 72, 224, -1, 72, 224, 93, 224,
999 -1, 37, 222, -1, 39, 222, -1, 34, 104, 121,
1000 222, 122, -1, 15, 177, -1, 10, 240, -1, 42,
1001 240, 80, 168, 206, 226, -1, 87, 240, 30, 168,
1002 226, -1, -1, 31, 168, -1, 85, 222, 208, 226,
1003 -1, 224, 123, 85, 222, 208, 226, -1, 85, 121,
1004 222, 122, 208, 226, -1, 224, 123, 85, 121, 222,
1005 122, 208, 226, -1, 209, -1, 17, 229, 123, 168,
1006 -1, 63, 123, 168, -1, 209, 17, 229, 123, 168,
1007 -1, 209, 63, 123, 168, -1, 14, -1, 22, -1,
1008 36, -1, 71, -1, 76, 227, -1, 94, 224, -1,
1009 74, 222, 213, 226, -1, 74, 121, 222, 122, 213,
1010 226, -1, 214, -1, 17, 229, 123, 168, -1, 63,
1011 123, 168, -1, 214, 17, 229, 123, 168, -1, 214,
1012 63, 123, 168, -1, 79, 222, 216, 226, -1, 79,
1013 121, 222, 122, 216, 226, -1, 217, -1, 17, 229,
1014 123, 168, -1, 63, 123, 168, -1, 217, 17, 229,
1015 123, 168, -1, 217, 63, 123, 168, -1, 20, 168,
1016 226, -1, 60, 220, 226, -1, 106, 221, -1, 220,
1017 106, 221, -1, 222, 105, -1, 221, 222, 105, -1,
1018 223, -1, 224, -1, 223, 108, 224, -1, 223, 224,
1019 -1, 225, 228, -1, 104, -1, 225, 124, 104, -1,
1020 225, 125, 229, 126, -1, 32, 20, -1, 32, 38,
1021 -1, 32, 42, -1, 32, 47, -1, 32, 55, -1,
1022 32, 60, -1, 32, 74, -1, 32, 79, -1, 32,
1023 83, -1, 32, 41, -1, 32, 85, -1, 32, 87,
1024 -1, 32, 104, -1, 32, -1, -1, 105, -1, -1,
1025 107, -1, 230, -1, -1, 240, -1, 240, 98, 240,
1026 -1, 230, 108, 240, -1, 230, 108, 240, 98, 240,
1027 -1, 103, -1, 232, -1, 102, 233, -1, 103, 105,
1028 -1, -1, 105, -1, 28, 235, -1, 29, -1, -1,
1029 116, -1, 236, -1, 104, -1, 103, -1, 236, 115,
1030 236, -1, 236, 116, 236, -1, 236, 119, 237, -1,
1031 121, 236, 122, -1, 239, 238, -1, 103, -1, 121,
1032 103, 115, 103, 122, -1, -1, 113, -1, 114, -1,
1033 103, -1, 53, -1, 232, -1, 54, -1, 81, -1,
1034 35, -1, 6, -1, 106, -1, 224, -1, 125, 229,
1035 126, -1, 240, 113, 240, -1, 240, 114, 240, -1,
1036 240, 116, 240, -1, 240, 115, 240, -1, 240, 119,
1037 240, -1, 240, 5, 240, -1, 240, 62, 240, -1,
1038 59, 240, -1, 240, 241, 240, -1, 240, 242, 240,
1039 -1, 240, 44, 240, -1, 240, 109, 240, -1, 240,
1040 77, 240, -1, 113, 240, -1, 114, 240, -1, 73,
1041 121, 224, 108, 232, 122, -1, 73, 121, 224, 122,
1042 -1, 78, 121, 229, 122, -1, 78, 125, 229, 126,
1043 -1, 66, 121, 229, 122, -1, 66, 125, 229, 126,
1044 -1, 82, 121, 229, 122, -1, 82, 125, 229, 126,
1045 -1, 48, 121, 229, 122, -1, 48, 125, 229, 126,
1046 -1, 16, 121, 229, 122, -1, 16, 125, 229, 126,
1047 -1, 18, 121, 229, 122, -1, 18, 125, 229, 126,
1048 -1, 104, 121, 240, 122, -1, 121, 240, 122, -1,
1049 111, -1, 110, -1, 112, -1, 95, -1, 96, -1,
1050 97, -1, 12, -1, 13, -1
1051 };
1052
1053 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1054 static const yytype_uint16 yyrline[] =
1055 {
1056 0, 423, 423, 425, 429, 430, 431, 432, 433, 434,
1057 435, 436, 437, 438, 439, 440, 441, 442, 449, 494,
1058 498, 503, 511, 515, 520, 528, 534, 543, 574, 582,
1059 605, 618, 626, 647, 659, 667, 719, 730, 739, 744,
1060 749, 756, 763, 773, 812, 847, 852, 857, 864, 871,
1061 881, 922, 931, 944, 953, 956, 964, 967, 975, 978,
1062 985, 1017, 1031, 1034, 1041, 1071, 1080, 1085, 1105, 1108,
1063 1116, 1126, 1130, 1129, 1143, 1151, 1154, 1179, 1193, 1202,
1064 1210, 1213, 1221, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
1065 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
1066 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
1067 1256, 1257, 1258, 1262, 1303, 1332, 1336, 1387, 1390, 1397,
1068 1409, 1436, 1441, 1449, 1454, 1463, 1466, 1474, 1477, 1485,
1069 1488, 1495, 1502, 1509, 1516, 1523, 1527, 1534, 1547, 1564,
1070 1574, 1582, 1593, 1606, 1613, 1621, 1624, 1631, 1652, 1655,
1071 1662, 1684, 1687, 1691, 1698, 1702, 1706, 1710, 1717, 1721,
1072 1728, 1735, 1742, 1753, 1764, 1770, 1780, 1790, 1793, 1800,
1073 1811, 1823, 1830, 1840, 1847, 1851, 1855, 1859, 1866, 1870,
1074 1874, 1878, 1882, 1889, 1896, 1907, 1917, 1924, 1928, 1932,
1075 1936, 1943, 1954, 1964, 1971, 1975, 1979, 1983, 1990, 2000,
1076 2037, 2046, 2061, 2066, 2075, 2086, 2090, 2095, 2108, 2128,
1077 2132, 2137, 2152, 2157, 2162, 2167, 2172, 2177, 2182, 2187,
1078 2192, 2197, 2202, 2207, 2212, 2217, 2226, 2229, 2237, 2240,
1079 2247, 2252, 2258, 2262, 2266, 2271, 2279, 2285, 2294, 2298,
1080 2320, 2324, 2345, 2349, 2354, 2360, 2364, 2371, 2375, 2379,
1081 2383, 2387, 2391, 2398, 2405, 2409, 2417, 2420, 2424, 2431,
1082 2435, 2439, 2443, 2447, 2451, 2455, 2459, 2463, 2467, 2471,
1083 2476, 2481, 2486, 2491, 2496, 2501, 2506, 2510, 2515, 2520,
1084 2525, 2530, 2535, 2539, 2543, 2547, 2551, 2558, 2562, 2569,
1085 2573, 2580, 2584, 2591, 2595, 2602, 2606, 2613, 2617, 2628,
1086 2635, 2639, 2643, 2647, 2651, 2655, 2662, 2666
1087 };
1088 #endif
1089
1090 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1091 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1092 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1093 static const char *const yytname[] =
1094 {
1095 "$end", "error", "$undefined", "ADD_TOK", "ALIASES_TOK", "AND_TOK",
1096 "ANY_TOK", "AREALIKE_TOK", "ARETHESAME_TOK", "ARRAY_TOK", "ASSERT_TOK",
1097 "ATOM_TOK", "BEQ_TOK", "BNE_TOK", "BREAK_TOK", "CALL_TOK", "CARD_TOK",
1098 "CASE_TOK", "CHOICE_TOK", "CHECK_TOK", "CONDITIONAL_TOK", "CONSTANT_TOK",
1099 "CONTINUE_TOK", "CREATE_TOK", "DATA_TOK", "DECREASING_TOK",
1100 "DEFAULT_TOK", "DEFINITION_TOK", "DIMENSION_TOK", "DIMENSIONLESS_TOK",
1101 "DO_TOK", "ELSE_TOK", "END_TOK", "EXPECT_TOK", "EXTERNAL_TOK",
1102 "FALSE_TOK", "FALLTHRU_TOK", "FIX_TOK", "FOR_TOK", "FREE_TOK",
1103 "FROM_TOK", "GLOBAL_TOK", "IF_TOK", "IMPORT_TOK", "IN_TOK", "INPUT_TOK",
1104 "INCREASING_TOK", "INTERACTIVE_TOK", "INTERSECTION_TOK", "ISA_TOK",
1105 "_IS_T", "ISREFINEDTO_TOK", "MAXIMIZE_TOK", "MAXINTEGER_TOK",
1106 "MAXREAL_TOK", "METHODS_TOK", "METHOD_TOK", "MINIMIZE_TOK", "MODEL_TOK",
1107 "NOT_TOK", "NOTES_TOK", "OF_TOK", "OR_TOK", "OTHERWISE_TOK",
1108 "OUTPUT_TOK", "PATCH_TOK", "PROD_TOK", "PROVIDE_TOK", "REFINES_TOK",
1109 "REPLACE_TOK", "REQUIRE_TOK", "RETURN_TOK", "RUN_TOK", "SATISFIED_TOK",
1110 "SELECT_TOK", "SIZE_TOK", "STOP_TOK", "SUCHTHAT_TOK", "SUM_TOK",
1111 "SWITCH_TOK", "THEN_TOK", "TRUE_TOK", "UNION_TOK", "UNITS_TOK",
1112 "UNIVERSAL_TOK", "WHEN_TOK", "WHERE_TOK", "WHILE_TOK", "WILLBE_TOK",
1113 "WILLBETHESAME_TOK", "WILLNOTBETHESAME_TOK", "ASSIGN_TOK", "CASSIGN_TOK",
1114 "DBLCOLON_TOK", "USE_TOK", "LEQ_TOK", "GEQ_TOK", "NEQ_TOK", "DOTDOT_TOK",
1115 "WITH_TOK", "VALUE_TOK", "WITH_VALUE_T", "REAL_TOK", "INTEGER_TOK",
1116 "IDENTIFIER_TOK", "BRACEDTEXT_TOK", "SYMBOL_TOK", "DQUOTE_TOK", "','",
1117 "'|'", "'<'", "'='", "'>'", "'+'", "'-'", "'/'", "'*'", "UPLUS_TOK",
1118 "UMINUS_TOK", "'^'", "';'", "'('", "')'", "':'", "'.'", "'['", "']'",
1119 "$accept", "definitions", "definition", "global_def", "require_file",
1120 "provide_module", "import", "add_notes_def", "add_notes_head",
1121 "add_method_def", "add_method_head", "replace_method_def",
1122 "replace_method_head", "atom_def", "atom_head", "atom_id", "default_val",
1123 "constant_def", "constant_head", "constant_val", "model_def",
1124 "model_head", "model_id", "optional_model_parameters",
1125 "optional_parameter_wheres", "optional_parameter_reduction", "patch_def",
1126 "patch_head", "universal", "definition_def", "definition_id",
1127 "units_def", "units_statement", "unitdeflist", "unitdef", "methods",
1128 "@1", "proclist", "proclistf", "procedure", "procedure_id",
1129 "fstatements", "statements", "statement", "isa_statement",
1130 "willbe_statement", "aliases_statement", "optional_set_values",
1131 "is_statement", "isrefinedto_statement", "call_identifier",
1132 "type_identifier", "optional_method", "optional_of",
1133 "optional_with_value", "arealike_statement", "arethesame_statement",
1134 "willbethesame_statement", "willnotbethesame_statement",
1135 "assignment_statement", "relation_statement", "relation",
1136 "blackbox_statement", "input_args", "output_args", "data_args",
1137 "glassbox_statement", "optional_scope", "for_statement",
1138 "optional_direction", "forexprend", "run_statement", "fix_statement",
1139 "free_statement", "external_statement", "call_statement",
1140 "assert_statement", "if_statement", "while_statement", "optional_else",
1141 "when_statement", "whenlist", "whenlistf", "flow_statement",
1142 "use_statement", "select_statement", "selectlist", "selectlistf",
1143 "switch_statement", "switchlist", "switchlistf", "conditional_statement",
1144 "notes_statement", "notes_body", "noteslist", "fvarlist", "varlist",
1145 "fname", "name", "end", "optional_bracedtext", "optional_notes", "set",
1146 "setexprlist", "number", "realnumber", "opunits", "dims", "dimensions",
1147 "dimexpr", "fraction", "fractail", "optional_sign", "expr", "relop",
1148 "logrelop", 0
1149 };
1150 #endif
1151
1152 # ifdef YYPRINT
1153 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1154 token YYLEX-NUM. */
1155 static const yytype_uint16 yytoknum[] =
1156 {
1157 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1158 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1159 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1160 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1161 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1162 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1163 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1164 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1165 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1166 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1167 355, 356, 357, 358, 359, 360, 361, 362, 44, 124,
1168 60, 61, 62, 43, 45, 47, 42, 363, 364, 94,
1169 59, 40, 41, 58, 46, 91, 93
1170 };
1171 # endif
1172
1173 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1174 static const yytype_uint8 yyr1[] =
1175 {
1176 0, 127, 128, 128, 129, 129, 129, 129, 129, 129,
1177 129, 129, 129, 129, 129, 129, 129, 129, 130, 131,
1178 131, 131, 132, 132, 132, 133, 133, 134, 135, 136,
1179 137, 137, 138, 139, 139, 140, 141, 142, 143, 143,
1180 143, 143, 143, 144, 145, 146, 146, 146, 146, 146,
1181 147, 148, 148, 149, 150, 150, 151, 151, 152, 152,
1182 153, 154, 155, 155, 156, 157, 158, 159, 160, 160,
1183 161, 162, 163, 162, 164, 165, 165, 166, 167, 168,
1184 169, 169, 169, 170, 170, 170, 170, 170, 170, 170,
1185 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
1186 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
1187 170, 170, 170, 171, 172, 173, 173, 174, 174, 175,
1188 176, 177, 177, 178, 178, 179, 179, 180, 180, 181,
1189 181, 182, 183, 184, 185, 186, 186, 187, 187, 188,
1190 188, 188, 189, 190, 191, 192, 192, 193, 194, 194,
1191 195, 196, 196, 196, 197, 197, 197, 197, 198, 198,
1192 199, 200, 201, 202, 203, 204, 205, 206, 206, 207,
1193 207, 207, 207, 208, 209, 209, 209, 209, 210, 210,
1194 210, 210, 210, 211, 212, 212, 213, 214, 214, 214,
1195 214, 215, 215, 216, 217, 217, 217, 217, 218, 219,
1196 220, 220, 221, 221, 222, 223, 223, 223, 224, 225,
1197 225, 225, 226, 226, 226, 226, 226, 226, 226, 226,
1198 226, 226, 226, 226, 226, 226, 227, 227, 228, 228,
1199 229, 229, 230, 230, 230, 230, 231, 231, 232, 232,
1200 233, 233, 234, 234, 234, 235, 235, 236, 236, 236,
1201 236, 236, 236, 237, 238, 238, 239, 239, 239, 240,
1202 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1203 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1204 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1205 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
1206 241, 241, 241, 241, 241, 241, 242, 242
1207 };
1208
1209 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1210 static const yytype_uint8 yyr2[] =
1211 {
1212 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1213 1, 1, 1, 1, 1, 1, 1, 1, 5, 3,
1214 3, 2, 3, 3, 2, 5, 3, 4, 6, 4,
1215 5, 6, 4, 5, 6, 6, 6, 2, 0, 3,
1216 2, 2, 2, 2, 8, 0, 3, 2, 2, 2,
1217 6, 4, 7, 2, 0, 3, 0, 4, 0, 3,
1218 5, 5, 0, 1, 5, 2, 2, 3, 0, 2,
1219 4, 0, 0, 3, 1, 0, 2, 5, 2, 1,
1220 0, 3, 3, 1, 1, 1, 1, 1, 1, 1,
1221 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1222 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1223 1, 1, 1, 5, 5, 3, 12, 0, 4, 4,
1224 3, 1, 4, 1, 4, 0, 2, 0, 2, 0,
1225 2, 2, 2, 2, 2, 3, 3, 1, 3, 1,
1226 2, 2, 9, 3, 3, 0, 4, 9, 0, 2,
1227 8, 0, 1, 1, 1, 1, 1, 1, 2, 4,
1228 2, 2, 5, 2, 2, 6, 5, 0, 2, 4,
1229 6, 6, 8, 1, 4, 3, 5, 4, 1, 1,
1230 1, 1, 2, 2, 4, 6, 1, 4, 3, 5,
1231 4, 4, 6, 1, 4, 3, 5, 4, 3, 3,
1232 2, 3, 2, 3, 1, 1, 3, 2, 2, 1,
1233 3, 4, 2, 2, 2, 2, 2, 2, 2, 2,
1234 2, 2, 2, 2, 2, 1, 0, 1, 0, 1,
1235 1, 0, 1, 3, 3, 5, 1, 1, 2, 2,
1236 0, 1, 2, 1, 0, 1, 1, 1, 1, 3,
1237 3, 3, 3, 2, 1, 5, 0, 1, 1, 1,
1238 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
1239 3, 3, 3, 3, 3, 3, 2, 3, 3, 3,
1240 3, 3, 2, 2, 6, 4, 4, 4, 4, 4,
1241 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1242 1, 1, 1, 1, 1, 1, 1, 1
1243 };
1244
1245 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1246 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1247 means the default is an error. */
1248 static const yytype_uint16 yydefact[] =
1249 {
1250 2, 0, 1, 17, 0, 0, 0, 0, 0, 0,
1251 0, 0, 68, 63, 3, 16, 4, 5, 6, 9,
1252 0, 7, 75, 8, 75, 11, 10, 12, 14, 80,
1253 0, 13, 80, 15, 0, 0, 0, 65, 80, 0,
1254 0, 0, 209, 0, 24, 0, 0, 21, 0, 0,
1255 0, 0, 74, 0, 71, 0, 0, 0, 0, 80,
1256 0, 43, 80, 54, 71, 66, 0, 0, 0, 0,
1257 26, 0, 22, 23, 0, 231, 0, 19, 20, 225,
1258 0, 69, 67, 200, 0, 204, 205, 228, 0, 0,
1259 0, 0, 76, 0, 0, 72, 0, 0, 265, 0,
1260 178, 0, 0, 0, 80, 179, 0, 264, 180, 0,
1261 0, 0, 0, 0, 0, 260, 262, 0, 0, 0,
1262 0, 181, 0, 0, 0, 226, 0, 0, 263, 0,
1263 0, 0, 0, 240, 259, 209, 266, 0, 0, 0,
1264 231, 112, 0, 83, 84, 85, 86, 87, 88, 89,
1265 90, 91, 92, 93, 137, 95, 94, 98, 99, 100,
1266 101, 97, 96, 102, 103, 104, 105, 107, 106, 108,
1267 109, 110, 111, 0, 267, 261, 139, 37, 0, 53,
1268 71, 0, 71, 80, 56, 0, 0, 0, 125, 0,
1269 0, 0, 210, 267, 0, 230, 232, 0, 0, 212,
1270 213, 221, 214, 215, 216, 217, 218, 219, 220, 222,
1271 223, 224, 0, 0, 202, 0, 207, 229, 208, 201,
1272 27, 29, 78, 80, 32, 75, 0, 82, 164, 121,
1273 163, 231, 231, 231, 231, 0, 0, 160, 0, 161,
1274 0, 231, 231, 141, 140, 276, 0, 231, 231, 158,
1275 0, 0, 0, 227, 182, 231, 231, 0, 0, 231,
1276 231, 0, 0, 0, 183, 241, 238, 239, 0, 282,
1277 283, 0, 0, 81, 0, 131, 132, 0, 0, 0,
1278 0, 133, 134, 0, 0, 0, 0, 306, 307, 0,
1279 0, 0, 303, 304, 305, 0, 301, 300, 302, 0,
1280 0, 0, 0, 0, 0, 0, 0, 0, 244, 0,
1281 0, 0, 0, 0, 0, 30, 0, 0, 18, 25,
1282 61, 211, 0, 0, 0, 33, 0, 203, 206, 0,
1283 73, 60, 231, 0, 0, 0, 0, 198, 0, 0,
1284 80, 0, 0, 199, 0, 0, 0, 0, 0, 231,
1285 0, 0, 186, 0, 0, 0, 231, 0, 0, 193,
1286 0, 0, 0, 231, 0, 0, 173, 80, 0, 299,
1287 268, 0, 115, 123, 127, 127, 120, 127, 135, 136,
1288 0, 209, 138, 274, 279, 275, 281, 280, 269, 270,
1289 272, 271, 273, 277, 278, 244, 0, 0, 243, 38,
1290 0, 55, 80, 0, 51, 64, 31, 126, 28, 234,
1291 233, 34, 70, 0, 0, 294, 295, 296, 297, 0,
1292 151, 167, 292, 293, 288, 289, 159, 0, 285, 0,
1293 0, 80, 184, 231, 0, 286, 287, 0, 0, 80,
1294 191, 231, 0, 290, 291, 0, 0, 80, 169, 231,
1295 0, 0, 298, 0, 231, 0, 129, 119, 129, 0,
1296 0, 0, 45, 35, 248, 247, 245, 0, 242, 246,
1297 256, 0, 50, 0, 58, 0, 77, 122, 162, 153,
1298 152, 0, 80, 0, 0, 0, 0, 80, 188, 0,
1299 80, 0, 80, 195, 0, 80, 0, 80, 175, 0,
1300 80, 166, 0, 0, 128, 0, 113, 114, 0, 0,
1301 0, 0, 267, 256, 228, 0, 0, 0, 256, 40,
1302 41, 42, 257, 258, 0, 36, 57, 80, 0, 235,
1303 156, 154, 157, 155, 80, 168, 165, 284, 185, 187,
1304 80, 190, 192, 194, 80, 197, 171, 174, 80, 177,
1305 0, 124, 130, 0, 170, 0, 0, 0, 48, 47,
1306 49, 0, 0, 252, 249, 250, 251, 0, 236, 39,
1307 237, 0, 52, 0, 189, 196, 176, 0, 0, 145,
1308 0, 0, 143, 46, 44, 254, 0, 253, 59, 150,
1309 0, 172, 0, 0, 0, 148, 0, 0, 0, 142,
1310 144, 0, 147, 0, 0, 0, 149, 0, 117, 146,
1311 255, 0, 116, 231, 0, 118
1312 };
1313
1314 /* YYDEFGOTO[NTERM-NUM]. */
1315 static const yytype_int16 yydefgoto[] =
1316 {
1317 -1, 1, 14, 15, 16, 17, 18, 19, 20, 21,
1318 22, 23, 24, 25, 59, 60, 471, 26, 61, 514,
1319 27, 62, 63, 184, 312, 528, 28, 29, 30, 31,
1320 32, 33, 34, 48, 81, 96, 225, 51, 52, 92,
1321 93, 54, 55, 142, 143, 144, 145, 612, 146, 147,
1322 230, 374, 317, 456, 506, 148, 149, 150, 151, 152,
1323 153, 154, 155, 510, 579, 593, 156, 602, 157, 481,
1324 534, 158, 159, 160, 161, 162, 163, 164, 165, 483,
1325 166, 365, 366, 167, 168, 169, 351, 352, 170, 358,
1326 359, 171, 172, 50, 83, 84, 85, 193, 87, 82,
1327 254, 218, 194, 195, 569, 175, 266, 399, 468, 469,
1328 566, 587, 524, 196, 304, 305
1329 };
1330
1331 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1332 STATE-NUM. */
1333 #define YYPACT_NINF -437
1334 static const yytype_int16 yypact[] =
1335 {
1336 -437, 1006, -437, -437, 88, -83, -54, -52, 18, 17,
1337 81, 79, -437, -437, -437, -437, -437, -437, -437, -437,
1338 43, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1339 1, -437, -437, -437, 64, 120, 167, -437, -437, 164,
1340 106, 195, -437, 134, 31, 214, 140, 47, -13, 166,
1341 -22, 248, 228, 248, 230, 531, 182, 183, 184, -437,
1342 222, -437, -437, 170, 230, -437, -12, 188, 248, 186,
1343 -437, 190, -437, -437, 191, 681, -11, -437, -437, 998,
1344 187, -437, -437, 166, 194, 77, -437, 9, 166, 180,
1345 181, 198, -437, 185, 189, -437, 248, 193, -437, 681,
1346 -437, 202, 92, 103, -437, -437, 203, -437, -437, 166,
1347 204, 166, 681, 125, 681, -437, -437, 681, 681, 43,
1348 130, -437, 166, 197, -81, 206, 131, -78, -437, 132,
1349 -53, 681, 166, 210, 216, 205, -437, 681, 681, 681,
1350 681, -437, 208, -437, -437, -437, -437, -437, -437, -437,
1351 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1352 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1353 -437, -437, -437, 21, 50, -437, 889, -437, 255, -437,
1354 230, 220, 230, -437, 241, 248, 272, 213, 283, 224,
1355 225, 229, -437, -437, 231, 240, 737, 300, 239, -437,
1356 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1357 -437, -437, 256, 257, -437, 166, -437, -437, -437, 166,
1358 -437, -437, -437, -437, -437, -437, 243, -437, 889, 247,
1359 -437, 681, 681, 681, 681, 248, 249, -437, 316, -437,
1360 748, 681, 681, 889, 889, -437, -22, 681, 681, 271,
1361 166, 166, 0, -437, -437, 681, 681, 166, 13, 681,
1362 681, 166, 14, 777, -437, -437, -437, -437, 681, 250,
1363 250, 270, 245, -437, 25, -437, -437, 268, 273, 268,
1364 268, -437, -437, 681, 681, 611, 681, -437, -437, 681,
1365 681, 681, -437, -437, -437, 681, -437, -437, -437, 681,
1366 681, 681, 681, 681, 681, 681, 287, 248, 86, 248,
1367 253, 266, -41, 274, 277, -437, 289, 278, -437, -437,
1368 -437, -437, 681, 681, 279, -437, 280, -437, -437, 248,
1369 -437, -437, 681, 254, 275, 282, 276, -437, 166, 681,
1370 -437, 284, 285, -437, 286, 288, 166, -14, 291, 681,
1371 293, 248, 27, 296, 294, 299, 681, 301, 248, 32,
1372 303, 302, 304, 681, 306, 248, 44, -437, 383, -437,
1373 -437, 166, -437, 309, 344, 344, -437, 344, 889, 889,
1374 58, 310, -437, 126, 126, 126, 900, 900, 76, 76,
1375 250, 250, 250, 116, 152, 86, 312, -71, -437, 396,
1376 313, -437, -437, 305, -437, -437, -437, -437, -437, 863,
1377 889, -437, -437, 314, 315, -437, -437, -437, -437, 317,
1378 661, 405, -437, -437, -437, -437, -437, 141, -437, 0,
1379 318, -437, -437, 681, 319, -437, -437, 13, 321, -437,
1380 -437, 681, 323, -437, -437, 14, 324, -437, -437, 681,
1381 326, 248, -437, 328, 681, 336, 350, -437, 350, 166,
1382 14, 681, 360, -437, -437, -437, -437, 57, -437, 91,
1383 -17, 333, -437, 332, 334, 681, -437, -437, -437, -437,
1384 -437, 23, -437, 248, 216, 335, 248, -437, -437, 339,
1385 -437, 248, -437, -437, 341, -437, 248, -437, -437, 342,
1386 -437, -437, 370, 337, -437, 681, -437, -437, 345, 248,
1387 349, 149, 24, 39, 363, 78, 57, 57, 160, -437,
1388 -437, -437, -437, -437, 174, -437, -437, -437, 352, 889,
1389 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1390 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1391 166, -437, 889, 14, -437, 166, 371, 430, -437, -437,
1392 -437, 174, 357, -437, 362, 362, -437, -56, 216, -437,
1393 -437, 361, -437, 248, -437, -437, -437, 433, 248, 365,
1394 364, 366, -437, -437, -437, -437, 386, -437, -437, -437,
1395 382, -437, 166, 368, 427, 456, 389, 446, 388, -437,
1396 -437, 166, -437, 406, 410, 491, -437, 395, 417, -437,
1397 -437, 398, -437, 681, 399, -437
1398 };
1399
1400 /* YYPGOTO[NTERM-NUM]. */
1401 static const yytype_int16 yypgoto[] =
1402 {
1403 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1404 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1405 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1406 -437, -437, 467, -437, -437, -57, -437, -20, -437, -437,
1407 -437, -24, -437, -437, -437, -437, -437, -437, -437, -437,
1408 -437, -1, -437, -201, 65, -437, -437, -437, -437, -437,
1409 -437, 242, -437, -437, -437, -437, -437, -437, -437, -437,
1410 -437, -437, -437, -437, -437, -437, -437, -437, -437, -437,
1411 -437, -436, -437, -437, -437, -437, 99, -437, -437, 94,
1412 -437, -437, -437, 414, 441, -42, -437, -49, 207, -48,
1413 -437, 20, -129, -437, -26, -426, -437, 143, -437, -430,
1414 -437, -437, -338, 51, -437, -437
1415 };
1416
1417 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1418 positive, shift that token. If negative, reduce the rule which
1419 number is the opposite. If zero, do what YYDEFACT says.
1420 If YYTABLE_NINF, syntax error. */
1421 #define YYTABLE_NINF -206
1422 static const yytype_int16 yytable[] =
1423 {
1424 86, 485, 89, 90, 53, 94, 174, 185, 64, 496,
1425 79, 272, 56, 173, 68, 186, 197, 349, 519, 79,
1426 189, 37, 57, 42, 509, 274, 42, 403, 275, 276,
1427 356, 363, 464, 465, 86, 180, 216, 515, 182, 86,
1428 251, 213, 530, 257, 433, 466, 531, 585, 226, 441,
1429 467, 42, 39, 532, -205, 40, 533, -205, -205, 58,
1430 86, 449, 86, 350, 520, 586, 38, 237, 261, 239,
1431 277, 278, 279, 249, 558, 86, 357, 364, 86, 404,
1432 235, 86, 252, 264, 88, 258, 564, 565, 262, 521,
1433 434, 80, 187, 198, 427, 442, 522, 523, 570, -205,
1434 -205, -205, 333, 334, 335, 336, 176, 450, 428, 280,
1435 281, 282, 341, 342, 397, 398, 217, 578, 344, 345,
1436 559, 42, 41, 307, 43, 309, 353, 354, -205, 42,
1437 360, 361, -205, 74, 75, 570, 45, 313, -205, -205,
1438 -205, 283, 284, 35, -205, 560, 371, -205, 36, 49,
1439 228, 73, 522, 523, -205, 74, 75, 286, -205, 310,
1440 464, 465, 42, 240, 66, 243, 328, 78, 244, 245,
1441 86, 74, 75, 285, 457, 561, 458, 213, 467, 459,
1442 567, 42, 263, 42, 65, 215, 46, 337, 269, 270,
1443 271, 301, 302, 516, 517, 303, 289, 518, 343, 329,
1444 563, 347, 86, 414, 69, 330, 516, 517, 86, 348,
1445 518, 67, 86, 231, 290, 355, 44, 232, 47, 362,
1446 430, 292, 293, 294, 233, 372, 70, 438, 234, 299,
1447 300, 301, 302, 71, 446, 303, 296, 297, 298, 299,
1448 300, 301, 302, 133, 484, 303, 241, 292, 293, 294,
1449 242, 247, 255, 259, 72, 248, 256, 260, 76, 396,
1450 77, 400, 296, 297, 298, 299, 300, 301, 302, 556,
1451 42, 303, 557, 522, 523, 286, 133, 568, 376, 377,
1452 79, 413, 287, 288, 91, 95, 177, 178, 179, 86,
1453 181, 183, 188, 190, 191, 192, 419, 426, 212, 214,
1454 220, 221, 222, 432, 489, 223, 229, 236, 238, 224,
1455 440, 253, 494, 227, 289, 265, 421, 448, 250, 368,
1456 499, 267, 86, 306, 308, 503, 268, 311, 273, 453,
1457 314, 86, 290, 315, 378, 379, 176, 383, 460, 316,
1458 384, 385, 386, 451, 318, 319, 387, 291, 322, 320,
1459 388, 389, 390, 391, 392, 393, 394, 321, 324, 325,
1460 339, 326, 327, 331, 346, 292, 293, 294, 332, 303,
1461 338, 370, 373, 409, 410, 401, 415, 375, 473, 295,
1462 296, 297, 298, 299, 300, 301, 302, 402, 286, 303,
1463 420, 395, 369, 407, 405, 287, 288, 406, 408, 411,
1464 412, 416, 418, 501, 417, 455, 422, 488, 424, 474,
1465 86, 423, 512, 429, 425, 493, 431, 508, 435, 511,
1466 436, 437, 470, 498, 439, 443, 445, 289, 444, 447,
1467 454, 461, 463, 472, 476, 536, 482, 477, 538, 478,
1468 504, 487, 490, 542, 492, 290, 495, 497, 546, 500,
1469 502, 505, 513, 525, 526, 527, 550, 537, 535, 551,
1470 291, 554, 540, 539, 544, 548, 541, 553, 543, 555,
1471 217, 545, 572, 547, 581, 582, 549, 584, 292, 293,
1472 294, 518, 590, 588, 614, 592, 597, 594, 595, 596,
1473 599, 600, 295, 296, 297, 298, 299, 300, 301, 302,
1474 601, 86, 303, 571, 603, 452, 86, 604, 577, 607,
1475 573, 605, 368, 580, 608, 609, 574, 610, 611, 613,
1476 575, 615, 141, 507, 576, 589, 529, 382, 486, 219,
1477 591, 491, 97, 246, 562, 583, 0, 98, 462, 0,
1478 0, 99, 0, 598, 0, 100, 101, 102, -79, 103,
1479 0, 104, 606, 105, 0, 0, 552, 0, 0, 0,
1480 0, 0, -79, -79, 0, 106, 107, 108, 109, 110,
1481 111, 0, 0, 112, 0, 0, 0, 0, 0, 113,
1482 0, 0, 0, 114, 115, 116, -79, 0, 117, 0,
1483 118, 119, 0, 0, -79, 0, 0, 120, 0, 0,
1484 0, 0, 121, 122, 123, 124, 0, 125, 0, 126,
1485 127, 0, 128, 129, 12, 0, 130, 98, 131, 0,
1486 0, 0, 0, 0, 0, 132, 0, 102, 0, 103,
1487 0, 0, 0, 133, 134, 135, 0, 136, 0, 0,
1488 0, 0, 0, 0, 137, 138, 107, 0, 0, 0,
1489 0, 0, 139, -79, 0, 0, 140, 0, 0, 113,
1490 0, 0, 0, 114, 115, 116, 286, 0, 117, 0,
1491 118, 0, 0, 287, 288, 0, 0, 120, 0, 0,
1492 0, 0, 0, 0, 123, 0, 479, 98, 0, 126,
1493 0, 0, 128, 129, 0, 0, 380, 102, 0, 103,
1494 0, 0, 0, 0, 0, 289, 0, 480, 0, 0,
1495 0, 0, 0, 133, 134, 381, 107, 136, 0, 0,
1496 0, 0, 0, 290, 137, 138, 0, 0, 0, 113,
1497 0, 0, 139, 0, 115, 116, 140, 0, 291, 0,
1498 118, 0, 286, 0, 0, 0, 0, 120, 0, 287,
1499 288, 0, 0, 286, 123, 0, 292, 293, 294, 126,
1500 287, 288, 128, 129, 0, 0, 0, 0, 0, 0,
1501 295, 296, 297, 298, 299, 300, 301, 302, 0, 0,
1502 303, 289, 286, 133, 134, 135, 0, 136, 0, 287,
1503 288, 0, 289, 0, 137, 138, 0, 0, 0, 290,
1504 0, 0, 139, 0, 0, 0, 140, 367, 0, 0,
1505 290, 0, 0, 0, 291, 0, 0, 0, 0, 0,
1506 0, 289, 0, 0, 0, 291, 0, 0, 340, 0,
1507 0, 0, 292, 293, 294, 323, 0, 0, 0, 290,
1508 0, 0, 0, 292, 293, 294, 295, 296, 297, 298,
1509 299, 300, 301, 302, 291, 0, 303, 295, 296, 297,
1510 298, 299, 300, 301, 302, 0, 0, 303, 286, 0,
1511 0, 0, 292, 293, 294, 287, 288, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 295, 296, 297, 298,
1513 299, 300, 301, 302, 286, 0, 303, 0, 0, 0,
1514 0, 287, 288, 0, 0, 286, 0, 289, 0, 0,
1515 0, 0, 287, 288, 0, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 290, 0, 0, 0, 0,
1517 0, 0, 0, 289, 0, 0, 0, 0, 0, 0,
1518 291, 0, 0, 0, 289, 0, 0, 0, 0, 0,
1519 0, 290, 0, 0, 0, 0, 0, 0, 292, 293,
1520 294, 475, 290, 0, 0, 0, 291, 0, 0, 0,
1521 0, 0, 295, 296, 297, 298, 299, 300, 301, 302,
1522 0, 0, 303, 0, 292, 293, 294, 0, 0, 0,
1523 0, 0, 0, 0, 0, 292, 293, 294, 295, 296,
1524 297, 298, 299, 300, 301, 302, 2, 3, 303, 4,
1525 296, 297, 298, 299, 300, 301, 302, -62, 199, 303,
1526 0, 0, 0, 0, 0, 0, 0, -62, 0, 0,
1527 0, 0, 0, 5, 0, 0, 200, 0, 0, 201,
1528 202, 0, 0, 0, 0, 203, 0, 6, 0, 7,
1529 0, 0, 0, 204, 0, 0, 0, 0, 205, 0,
1530 0, 0, 0, 0, -62, 0, 0, 0, 0, 0,
1531 0, 8, 206, 9, 0, 10, 11, 207, 0, 0,
1532 0, 208, 0, 209, 0, 210, 0, 0, 0, 12,
1533 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 211
1535 };
1536
1537 static const yytype_int16 yycheck[] =
1538 {
1539 49, 427, 50, 51, 24, 53, 55, 64, 32, 445,
1540 32, 140, 11, 55, 38, 27, 27, 17, 35, 32,
1541 68, 104, 21, 104, 460, 4, 104, 68, 7, 8,
1542 17, 17, 103, 104, 83, 59, 85, 467, 62, 88,
1543 121, 83, 19, 121, 17, 116, 23, 103, 96, 17,
1544 121, 104, 104, 30, 4, 107, 33, 7, 8, 58,
1545 109, 17, 111, 63, 81, 121, 120, 109, 121, 111,
1546 49, 50, 51, 122, 35, 124, 63, 63, 127, 120,
1547 104, 130, 124, 132, 106, 127, 516, 517, 130, 106,
1548 63, 104, 104, 104, 108, 63, 113, 114, 524, 49,
1549 50, 51, 231, 232, 233, 234, 55, 63, 122, 88,
1550 89, 90, 241, 242, 28, 29, 107, 553, 247, 248,
1551 81, 104, 104, 180, 107, 182, 255, 256, 104, 104,
1552 259, 260, 108, 124, 125, 561, 55, 185, 88, 89,
1553 90, 91, 92, 55, 120, 106, 121, 123, 60, 106,
1554 99, 120, 113, 114, 104, 124, 125, 5, 108, 183,
1555 103, 104, 104, 112, 44, 114, 215, 120, 117, 118,
1556 219, 124, 125, 123, 375, 513, 377, 219, 121, 121,
1557 518, 104, 131, 104, 120, 108, 107, 235, 137, 138,
1558 139, 115, 116, 115, 116, 119, 44, 119, 246, 223,
1559 122, 250, 251, 332, 40, 225, 115, 116, 257, 251,
1560 119, 44, 261, 121, 62, 257, 9, 125, 11, 261,
1561 349, 95, 96, 97, 121, 274, 120, 356, 125, 113,
1562 114, 115, 116, 38, 363, 119, 110, 111, 112, 113,
1563 114, 115, 116, 102, 103, 119, 121, 95, 96, 97,
1564 125, 121, 121, 121, 120, 125, 125, 125, 44, 307,
1565 120, 309, 110, 111, 112, 113, 114, 115, 116, 120,
1566 104, 119, 123, 113, 114, 5, 102, 103, 279, 280,
1567 32, 329, 12, 13, 56, 55, 104, 104, 104, 338,
1568 68, 121, 104, 107, 104, 104, 338, 346, 111, 105,
1569 120, 120, 104, 351, 433, 120, 104, 104, 104, 120,
1570 358, 105, 441, 120, 44, 105, 340, 365, 121, 268,
1571 449, 105, 371, 68, 104, 454, 121, 86, 120, 371,
1572 58, 380, 62, 120, 283, 284, 285, 286, 380, 56,
1573 289, 290, 291, 367, 120, 120, 295, 77, 108, 120,
1574 299, 300, 301, 302, 303, 304, 305, 126, 58, 120,
1575 44, 105, 105, 120, 93, 95, 96, 97, 121, 119,
1576 121, 126, 104, 322, 323, 122, 122, 104, 402, 109,
1577 110, 111, 112, 113, 114, 115, 116, 121, 5, 119,
1578 339, 104, 122, 104, 120, 12, 13, 120, 120, 120,
1579 120, 126, 126, 451, 122, 61, 122, 431, 122, 104,
1580 459, 126, 461, 122, 126, 439, 123, 459, 122, 461,
1581 126, 122, 26, 447, 123, 122, 122, 44, 126, 123,
1582 121, 121, 120, 120, 120, 483, 31, 122, 486, 122,
1583 104, 123, 123, 491, 123, 62, 123, 123, 496, 123,
1584 122, 101, 92, 120, 122, 121, 86, 122, 482, 122,
1585 77, 509, 123, 487, 123, 123, 490, 122, 492, 120,
1586 107, 495, 120, 497, 103, 45, 500, 120, 95, 96,
1587 97, 119, 49, 122, 613, 120, 104, 123, 122, 103,
1588 122, 64, 109, 110, 111, 112, 113, 114, 115, 116,
1589 44, 550, 119, 527, 115, 122, 555, 61, 550, 103,
1590 534, 123, 461, 555, 104, 24, 540, 122, 101, 121,
1591 544, 122, 55, 458, 548, 573, 475, 285, 429, 88,
1592 578, 437, 1, 119, 514, 561, -1, 6, 395, -1,
1593 -1, 10, -1, 592, -1, 14, 15, 16, 17, 18,
1594 -1, 20, 601, 22, -1, -1, 505, -1, -1, -1,
1595 -1, -1, 31, 32, -1, 34, 35, 36, 37, 38,
1596 39, -1, -1, 42, -1, -1, -1, -1, -1, 48,
1597 -1, -1, -1, 52, 53, 54, 55, -1, 57, -1,
1598 59, 60, -1, -1, 63, -1, -1, 66, -1, -1,
1599 -1, -1, 71, 72, 73, 74, -1, 76, -1, 78,
1600 79, -1, 81, 82, 83, -1, 85, 6, 87, -1,
1601 -1, -1, -1, -1, -1, 94, -1, 16, -1, 18,
1602 -1, -1, -1, 102, 103, 104, -1, 106, -1, -1,
1603 -1, -1, -1, -1, 113, 114, 35, -1, -1, -1,
1604 -1, -1, 121, 122, -1, -1, 125, -1, -1, 48,
1605 -1, -1, -1, 52, 53, 54, 5, -1, 57, -1,
1606 59, -1, -1, 12, 13, -1, -1, 66, -1, -1,
1607 -1, -1, -1, -1, 73, -1, 25, 6, -1, 78,
1608 -1, -1, 81, 82, -1, -1, 85, 16, -1, 18,
1609 -1, -1, -1, -1, -1, 44, -1, 46, -1, -1,
1610 -1, -1, -1, 102, 103, 104, 35, 106, -1, -1,
1611 -1, -1, -1, 62, 113, 114, -1, -1, -1, 48,
1612 -1, -1, 121, -1, 53, 54, 125, -1, 77, -1,
1613 59, -1, 5, -1, -1, -1, -1, 66, -1, 12,
1614 13, -1, -1, 5, 73, -1, 95, 96, 97, 78,
1615 12, 13, 81, 82, -1, -1, -1, -1, -1, -1,
1616 109, 110, 111, 112, 113, 114, 115, 116, -1, -1,
1617 119, 44, 5, 102, 103, 104, -1, 106, -1, 12,
1618 13, -1, 44, -1, 113, 114, -1, -1, -1, 62,
1619 -1, -1, 121, -1, -1, -1, 125, 30, -1, -1,
1620 62, -1, -1, -1, 77, -1, -1, -1, -1, -1,
1621 -1, 44, -1, -1, -1, 77, -1, -1, 80, -1,
1622 -1, -1, 95, 96, 97, 98, -1, -1, -1, 62,
1623 -1, -1, -1, 95, 96, 97, 109, 110, 111, 112,
1624 113, 114, 115, 116, 77, -1, 119, 109, 110, 111,
1625 112, 113, 114, 115, 116, -1, -1, 119, 5, -1,
1626 -1, -1, 95, 96, 97, 12, 13, -1, -1, -1,
1627 -1, -1, -1, -1, -1, -1, 109, 110, 111, 112,
1628 113, 114, 115, 116, 5, -1, 119, -1, -1, -1,
1629 -1, 12, 13, -1, -1, 5, -1, 44, -1, -1,
1630 -1, -1, 12, 13, -1, -1, -1, -1, -1, -1,
1631 -1, -1, -1, -1, -1, 62, -1, -1, -1, -1,
1632 -1, -1, -1, 44, -1, -1, -1, -1, -1, -1,
1633 77, -1, -1, -1, 44, -1, -1, -1, -1, -1,
1634 -1, 62, -1, -1, -1, -1, -1, -1, 95, 96,
1635 97, 98, 62, -1, -1, -1, 77, -1, -1, -1,
1636 -1, -1, 109, 110, 111, 112, 113, 114, 115, 116,
1637 -1, -1, 119, -1, 95, 96, 97, -1, -1, -1,
1638 -1, -1, -1, -1, -1, 95, 96, 97, 109, 110,
1639 111, 112, 113, 114, 115, 116, 0, 1, 119, 3,
1640 110, 111, 112, 113, 114, 115, 116, 11, 20, 119,
1641 -1, -1, -1, -1, -1, -1, -1, 21, -1, -1,
1642 -1, -1, -1, 27, -1, -1, 38, -1, -1, 41,
1643 42, -1, -1, -1, -1, 47, -1, 41, -1, 43,
1644 -1, -1, -1, 55, -1, -1, -1, -1, 60, -1,
1645 -1, -1, -1, -1, 58, -1, -1, -1, -1, -1,
1646 -1, 65, 74, 67, -1, 69, 70, 79, -1, -1,
1647 -1, 83, -1, 85, -1, 87, -1, -1, -1, 83,
1648 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1649 -1, -1, 104
1650 };
1651
1652 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1653 symbol of state STATE-NUM. */
1654 static const yytype_uint8 yystos[] =
1655 {
1656 0, 128, 0, 1, 3, 27, 41, 43, 65, 67,
1657 69, 70, 83, 84, 129, 130, 131, 132, 133, 134,
1658 135, 136, 137, 138, 139, 140, 144, 147, 153, 154,
1659 155, 156, 157, 158, 159, 55, 60, 104, 120, 104,
1660 107, 104, 104, 107, 225, 55, 107, 225, 160, 106,
1661 220, 164, 165, 164, 168, 169, 11, 21, 58, 141,
1662 142, 145, 148, 149, 168, 120, 44, 44, 168, 40,
1663 120, 38, 120, 120, 124, 125, 44, 120, 120, 32,
1664 104, 161, 226, 221, 222, 223, 224, 225, 106, 226,
1665 226, 56, 166, 167, 226, 55, 162, 1, 6, 10,
1666 14, 15, 16, 18, 20, 22, 34, 35, 36, 37,
1667 38, 39, 42, 48, 52, 53, 54, 57, 59, 60,
1668 66, 71, 72, 73, 74, 76, 78, 79, 81, 82,
1669 85, 87, 94, 102, 103, 104, 106, 113, 114, 121,
1670 125, 159, 170, 171, 172, 173, 175, 176, 182, 183,
1671 184, 185, 186, 187, 188, 189, 193, 195, 198, 199,
1672 200, 201, 202, 203, 204, 205, 207, 210, 211, 212,
1673 215, 218, 219, 222, 224, 232, 240, 104, 104, 104,
1674 168, 68, 168, 121, 150, 162, 27, 104, 104, 226,
1675 107, 104, 104, 224, 229, 230, 240, 27, 104, 20,
1676 38, 41, 42, 47, 55, 60, 74, 79, 83, 85,
1677 87, 104, 111, 222, 105, 108, 224, 107, 228, 221,
1678 120, 120, 104, 120, 120, 163, 226, 120, 240, 104,
1679 177, 121, 125, 121, 125, 168, 104, 222, 104, 222,
1680 240, 121, 125, 240, 240, 240, 220, 121, 125, 224,
1681 121, 121, 222, 105, 227, 121, 125, 121, 222, 121,
1682 125, 121, 222, 240, 224, 105, 233, 105, 121, 240,
1683 240, 240, 229, 120, 4, 7, 8, 49, 50, 51,
1684 88, 89, 90, 91, 92, 123, 5, 12, 13, 44,
1685 62, 77, 95, 96, 97, 109, 110, 111, 112, 113,
1686 114, 115, 116, 119, 241, 242, 68, 162, 104, 162,
1687 168, 86, 151, 226, 58, 120, 56, 179, 120, 120,
1688 120, 126, 108, 98, 58, 120, 105, 105, 224, 168,
1689 164, 120, 121, 229, 229, 229, 229, 226, 121, 44,
1690 80, 229, 229, 226, 229, 229, 93, 224, 222, 17,
1691 63, 213, 214, 229, 229, 222, 17, 63, 216, 217,
1692 229, 229, 222, 17, 63, 208, 209, 30, 240, 122,
1693 126, 121, 224, 104, 178, 104, 178, 178, 240, 240,
1694 85, 104, 188, 240, 240, 240, 240, 240, 240, 240,
1695 240, 240, 240, 240, 240, 104, 226, 28, 29, 234,
1696 226, 122, 121, 68, 120, 120, 120, 104, 120, 240,
1697 240, 120, 120, 226, 229, 122, 126, 122, 126, 222,
1698 240, 168, 122, 126, 122, 126, 224, 108, 122, 122,
1699 229, 123, 226, 17, 63, 122, 126, 122, 229, 123,
1700 226, 17, 63, 122, 126, 122, 229, 123, 226, 17,
1701 63, 168, 122, 222, 121, 61, 180, 180, 180, 121,
1702 222, 121, 234, 120, 103, 104, 116, 121, 235, 236,
1703 26, 143, 120, 168, 104, 98, 120, 122, 122, 25,
1704 46, 196, 31, 206, 103, 232, 213, 123, 168, 229,
1705 123, 216, 123, 168, 229, 123, 208, 123, 168, 229,
1706 123, 226, 122, 229, 104, 101, 181, 181, 222, 208,
1707 190, 222, 224, 92, 146, 236, 115, 116, 119, 35,
1708 81, 106, 113, 114, 239, 120, 122, 121, 152, 240,
1709 19, 23, 30, 33, 197, 168, 226, 122, 226, 168,
1710 123, 168, 226, 168, 123, 168, 226, 168, 123, 168,
1711 86, 122, 240, 122, 226, 120, 120, 123, 35, 81,
1712 106, 239, 228, 122, 236, 236, 237, 239, 103, 231,
1713 232, 168, 120, 168, 168, 168, 168, 222, 208, 191,
1714 222, 103, 45, 231, 120, 103, 121, 238, 122, 226,
1715 49, 226, 120, 192, 123, 122, 103, 104, 224, 122,
1716 64, 44, 194, 115, 61, 123, 224, 103, 104, 24,
1717 122, 101, 174, 121, 229, 122
1718 };
1719
1720 #define yyerrok (yyerrstatus = 0)
1721 #define yyclearin (yychar = YYEMPTY)
1722 #define YYEMPTY (-2)
1723 #define YYEOF 0
1724
1725 #define YYACCEPT goto yyacceptlab
1726 #define YYABORT goto yyabortlab
1727 #define YYERROR goto yyerrorlab
1728
1729
1730 /* Like YYERROR except do call yyerror. This remains here temporarily
1731 to ease the transition to the new meaning of YYERROR, for GCC.
1732 Once GCC version 2 has supplanted version 1, this can go. */
1733
1734 #define YYFAIL goto yyerrlab
1735
1736 #define YYRECOVERING() (!!yyerrstatus)
1737
1738 #define YYBACKUP(Token, Value) \
1739 do \
1740 if (yychar == YYEMPTY && yylen == 1) \
1741 { \
1742 yychar = (Token); \
1743 yylval = (Value); \
1744 yytoken = YYTRANSLATE (yychar); \
1745 YYPOPSTACK (1); \
1746 goto yybackup; \
1747 } \
1748 else \
1749 { \
1750 yyerror (YY_("syntax error: cannot back up")); \
1751 YYERROR; \
1752 } \
1753 while (YYID (0))
1754
1755
1756 #define YYTERROR 1
1757 #define YYERRCODE 256
1758
1759
1760 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1761 If N is 0, then set CURRENT to the empty location which ends
1762 the previous symbol: RHS[0] (always defined). */
1763
1764 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1765 #ifndef YYLLOC_DEFAULT
1766 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1767 do \
1768 if (YYID (N)) \
1769 { \
1770 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1771 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1772 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1773 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1774 } \
1775 else \
1776 { \
1777 (Current).first_line = (Current).last_line = \
1778 YYRHSLOC (Rhs, 0).last_line; \
1779 (Current).first_column = (Current).last_column = \
1780 YYRHSLOC (Rhs, 0).last_column; \
1781 } \
1782 while (YYID (0))
1783 #endif
1784
1785
1786 /* YY_LOCATION_PRINT -- Print the location on the stream.
1787 This macro was not mandated originally: define only if we know
1788 we won't break user code: when these are the locations we know. */
1789
1790 #ifndef YY_LOCATION_PRINT
1791 # if YYLTYPE_IS_TRIVIAL
1792 # define YY_LOCATION_PRINT(File, Loc) \
1793 fprintf (File, "%d.%d-%d.%d", \
1794 (Loc).first_line, (Loc).first_column, \
1795 (Loc).last_line, (Loc).last_column)
1796 # else
1797 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1798 # endif
1799 #endif
1800
1801
1802 /* YYLEX -- calling `yylex' with the right arguments. */
1803
1804 #ifdef YYLEX_PARAM
1805 # define YYLEX yylex (YYLEX_PARAM)
1806 #else
1807 # define YYLEX yylex ()
1808 #endif
1809
1810 /* Enable debugging if requested. */
1811 #if YYDEBUG
1812
1813 # ifndef YYFPRINTF
1814 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1815 # define YYFPRINTF fprintf
1816 # endif
1817
1818 # define YYDPRINTF(Args) \
1819 do { \
1820 if (yydebug) \
1821 YYFPRINTF Args; \
1822 } while (YYID (0))
1823
1824 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1825 do { \
1826 if (yydebug) \
1827 { \
1828 YYFPRINTF (stderr, "%s ", Title); \
1829 yy_symbol_print (stderr, \
1830 Type, Value); \
1831 YYFPRINTF (stderr, "\n"); \
1832 } \
1833 } while (YYID (0))
1834
1835
1836 /*--------------------------------.
1837 | Print this symbol on YYOUTPUT. |
1838 `--------------------------------*/
1839
1840 /*ARGSUSED*/
1841 #if (defined __STDC__ || defined __C99__FUNC__ \
1842 || defined __cplusplus || defined _MSC_VER)
1843 static void
1844 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1845 #else
1846 static void
1847 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1848 FILE *yyoutput;
1849 int yytype;
1850 YYSTYPE const * const yyvaluep;
1851 #endif
1852 {
1853 if (!yyvaluep)
1854 return;
1855 # ifdef YYPRINT
1856 if (yytype < YYNTOKENS)
1857 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1858 # else
1859 YYUSE (yyoutput);
1860 # endif
1861 switch (yytype)
1862 {
1863 default:
1864 break;
1865 }
1866 }
1867
1868
1869 /*--------------------------------.
1870 | Print this symbol on YYOUTPUT. |
1871 `--------------------------------*/
1872
1873 #if (defined __STDC__ || defined __C99__FUNC__ \
1874 || defined __cplusplus || defined _MSC_VER)
1875 static void
1876 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1877 #else
1878 static void
1879 yy_symbol_print (yyoutput, yytype, yyvaluep)
1880 FILE *yyoutput;
1881 int yytype;
1882 YYSTYPE const * const yyvaluep;
1883 #endif
1884 {
1885 if (yytype < YYNTOKENS)
1886 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1887 else
1888 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1889
1890 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1891 YYFPRINTF (yyoutput, ")");
1892 }
1893
1894 /*------------------------------------------------------------------.
1895 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1896 | TOP (included). |
1897 `------------------------------------------------------------------*/
1898
1899 #if (defined __STDC__ || defined __C99__FUNC__ \
1900 || defined __cplusplus || defined _MSC_VER)
1901 static void
1902 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1903 #else
1904 static void
1905 yy_stack_print (bottom, top)
1906 yytype_int16 *bottom;
1907 yytype_int16 *top;
1908 #endif
1909 {
1910 YYFPRINTF (stderr, "Stack now");
1911 for (; bottom <= top; ++bottom)
1912 YYFPRINTF (stderr, " %d", *bottom);
1913 YYFPRINTF (stderr, "\n");
1914 }
1915
1916 # define YY_STACK_PRINT(Bottom, Top) \
1917 do { \
1918 if (yydebug) \
1919 yy_stack_print ((Bottom), (Top)); \
1920 } while (YYID (0))
1921
1922
1923 /*------------------------------------------------.
1924 | Report that the YYRULE is going to be reduced. |
1925 `------------------------------------------------*/
1926
1927 #if (defined __STDC__ || defined __C99__FUNC__ \
1928 || defined __cplusplus || defined _MSC_VER)
1929 static void
1930 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1931 #else
1932 static void
1933 yy_reduce_print (yyvsp, yyrule)
1934 YYSTYPE *yyvsp;
1935 int yyrule;
1936 #endif
1937 {
1938 int yynrhs = yyr2[yyrule];
1939 int yyi;
1940 unsigned long int yylno = yyrline[yyrule];
1941 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1942 yyrule - 1, yylno);
1943 /* The symbols being reduced. */
1944 for (yyi = 0; yyi < yynrhs; yyi++)
1945 {
1946 fprintf (stderr, " $%d = ", yyi + 1);
1947 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1948 &(yyvsp[(yyi + 1) - (yynrhs)])
1949 );
1950 fprintf (stderr, "\n");
1951 }
1952 }
1953
1954 # define YY_REDUCE_PRINT(Rule) \
1955 do { \
1956 if (yydebug) \
1957 yy_reduce_print (yyvsp, Rule); \
1958 } while (YYID (0))
1959
1960 /* Nonzero means print parse trace. It is left uninitialized so that
1961 multiple parsers can coexist. */
1962 int yydebug;
1963 #else /* !YYDEBUG */
1964 # define YYDPRINTF(Args)
1965 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1966 # define YY_STACK_PRINT(Bottom, Top)
1967 # define YY_REDUCE_PRINT(Rule)
1968 #endif /* !YYDEBUG */
1969
1970
1971 /* YYINITDEPTH -- initial size of the parser's stacks. */
1972 #ifndef YYINITDEPTH
1973 # define YYINITDEPTH 200
1974 #endif
1975
1976 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1977 if the built-in stack extension method is used).
1978
1979 Do not make this value too large; the results are undefined if
1980 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1981 evaluated with infinite-precision integer arithmetic. */
1982
1983 #ifndef YYMAXDEPTH
1984 # define YYMAXDEPTH 10000
1985 #endif
1986
1987
1988
1989 #if YYERROR_VERBOSE
1990
1991 # ifndef yystrlen
1992 # if defined __GLIBC__ && defined _STRING_H
1993 # define yystrlen strlen
1994 # else
1995 /* Return the length of YYSTR. */
1996 #if (defined __STDC__ || defined __C99__FUNC__ \
1997 || defined __cplusplus || defined _MSC_VER)
1998 static YYSIZE_T
1999 yystrlen (const char *yystr)
2000 #else
2001 static YYSIZE_T
2002 yystrlen (yystr)
2003 const char *yystr;
2004 #endif
2005 {
2006 YYSIZE_T yylen;
2007 for (yylen = 0; yystr[yylen]; yylen++)
2008 continue;
2009 return yylen;
2010 }
2011 # endif
2012 # endif
2013
2014 # ifndef yystpcpy
2015 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2016 # define yystpcpy stpcpy
2017 # else
2018 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2019 YYDEST. */
2020 #if (defined __STDC__ || defined __C99__FUNC__ \
2021 || defined __cplusplus || defined _MSC_VER)
2022 static char *
2023 yystpcpy (char *yydest, const char *yysrc)
2024 #else
2025 static char *
2026 yystpcpy (yydest, yysrc)
2027 char *yydest;
2028 const char *yysrc;
2029 #endif
2030 {
2031 char *yyd = yydest;
2032 const char *yys = yysrc;
2033
2034 while ((*yyd++ = *yys++) != '\0')
2035 continue;
2036
2037 return yyd - 1;
2038 }
2039 # endif
2040 # endif
2041
2042 # ifndef yytnamerr
2043 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2044 quotes and backslashes, so that it's suitable for yyerror. The
2045 heuristic is that double-quoting is unnecessary unless the string
2046 contains an apostrophe, a comma, or backslash (other than
2047 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2048 null, do not copy; instead, return the length of what the result
2049 would have been. */
2050 static YYSIZE_T
2051 yytnamerr (char *yyres, const char *yystr)
2052 {
2053 if (*yystr == '"')
2054 {
2055 YYSIZE_T yyn = 0;
2056 char const *yyp = yystr;
2057
2058 for (;;)
2059 switch (*++yyp)
2060 {
2061 case '\'':
2062 case ',':
2063 goto do_not_strip_quotes;
2064
2065 case '\\':
2066 if (*++yyp != '\\')
2067 goto do_not_strip_quotes;
2068 /* Fall through. */
2069 default:
2070 if (yyres)
2071 yyres[yyn] = *yyp;
2072 yyn++;
2073 break;
2074
2075 case '"':
2076 if (yyres)
2077 yyres[yyn] = '\0';
2078 return yyn;
2079 }
2080 do_not_strip_quotes: ;
2081 }
2082
2083 if (! yyres)
2084 return yystrlen (yystr);
2085
2086 return yystpcpy (yyres, yystr) - yyres;
2087 }
2088 # endif
2089
2090 /* Copy into YYRESULT an error message about the unexpected token
2091 YYCHAR while in state YYSTATE. Return the number of bytes copied,
2092 including the terminating null byte. If YYRESULT is null, do not
2093 copy anything; just return the number of bytes that would be
2094 copied. As a special case, return 0 if an ordinary "syntax error"
2095 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
2096 size calculation. */
2097 static YYSIZE_T
2098 yysyntax_error (char *yyresult, int yystate, int yychar)
2099 {
2100 int yyn = yypact[yystate];
2101
2102 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2103 return 0;
2104 else
2105 {
2106 int yytype = YYTRANSLATE (yychar);
2107 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2108 YYSIZE_T yysize = yysize0;
2109 YYSIZE_T yysize1;
2110 int yysize_overflow = 0;
2111 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2112 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2113 int yyx;
2114
2115 # if 0
2116 /* This is so xgettext sees the translatable formats that are
2117 constructed on the fly. */
2118 YY_("syntax error, unexpected %s");
2119 YY_("syntax error, unexpected %s, expecting %s");
2120 YY_("syntax error, unexpected %s, expecting %s or %s");
2121 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2122 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2123 # endif
2124 char *yyfmt;
2125 char const *yyf;
2126 static char const yyunexpected[] = "syntax error, unexpected %s";
2127 static char const yyexpecting[] = ", expecting %s";
2128 static char const yyor[] = " or %s";
2129 char yyformat[sizeof yyunexpected
2130 + sizeof yyexpecting - 1
2131 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2132 * (sizeof yyor - 1))];
2133 char const *yyprefix = yyexpecting;
2134
2135 /* Start YYX at -YYN if negative to avoid negative indexes in
2136 YYCHECK. */
2137 int yyxbegin = yyn < 0 ? -yyn : 0;
2138
2139 /* Stay within bounds of both yycheck and yytname. */
2140 int yychecklim = YYLAST - yyn + 1;
2141 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2142 int yycount = 1;
2143
2144 yyarg[0] = yytname[yytype];
2145 yyfmt = yystpcpy (yyformat, yyunexpected);
2146
2147 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2148 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2149 {
2150 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2151 {
2152 yycount = 1;
2153 yysize = yysize0;
2154 yyformat[sizeof yyunexpected - 1] = '\0';
2155 break;
2156 }
2157 yyarg[yycount++] = yytname[yyx];
2158 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2159 yysize_overflow |= (yysize1 < yysize);
2160 yysize = yysize1;
2161 yyfmt = yystpcpy (yyfmt, yyprefix);
2162 yyprefix = yyor;
2163 }
2164
2165 yyf = YY_(yyformat);
2166 yysize1 = yysize + yystrlen (yyf);
2167 yysize_overflow |= (yysize1 < yysize);
2168 yysize = yysize1;
2169
2170 if (yysize_overflow)
2171 return YYSIZE_MAXIMUM;
2172
2173 if (yyresult)
2174 {
2175 /* Avoid sprintf, as that infringes on the user's name space.
2176 Don't have undefined behavior even if the translation
2177 produced a string with the wrong number of "%s"s. */
2178 char *yyp = yyresult;
2179 int yyi = 0;
2180 while ((*yyp = *yyf) != '\0')
2181 {
2182 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2183 {
2184 yyp += yytnamerr (yyp, yyarg[yyi++]);
2185 yyf += 2;
2186 }
2187 else
2188 {
2189 yyp++;
2190 yyf++;
2191 }
2192 }
2193 }
2194 return yysize;
2195 }
2196 }
2197 #endif /* YYERROR_VERBOSE */
2198
2199
2200 /*-----------------------------------------------.
2201 | Release the memory associated to this symbol. |
2202 `-----------------------------------------------*/
2203
2204 /*ARGSUSED*/
2205 #if (defined __STDC__ || defined __C99__FUNC__ \
2206 || defined __cplusplus || defined _MSC_VER)
2207 static void
2208 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2209 #else
2210 static void
2211 yydestruct (yymsg, yytype, yyvaluep)
2212 const char *yymsg;
2213 int yytype;
2214 YYSTYPE *yyvaluep;
2215 #endif
2216 {
2217 YYUSE (yyvaluep);
2218
2219 if (!yymsg)
2220 yymsg = "Deleting";
2221 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2222
2223 switch (yytype)
2224 {
2225
2226 default:
2227 break;
2228 }
2229 }
2230
2231
2232 /* Prevent warnings from -Wmissing-prototypes. */
2233
2234 #ifdef YYPARSE_PARAM
2235 #if defined __STDC__ || defined __cplusplus
2236 int yyparse (void *YYPARSE_PARAM);
2237 #else
2238 int yyparse ();
2239 #endif
2240 #else /* ! YYPARSE_PARAM */
2241 #if defined __STDC__ || defined __cplusplus
2242 int yyparse (void);
2243 #else
2244 int yyparse ();
2245 #endif
2246 #endif /* ! YYPARSE_PARAM */
2247
2248
2249
2250 /* The look-ahead symbol. */
2251 int yychar;
2252
2253 /* The semantic value of the look-ahead symbol. */
2254 YYSTYPE yylval;
2255
2256 /* Number of syntax errors so far. */
2257 int yynerrs;
2258
2259
2260
2261 /*----------.
2262 | yyparse. |
2263 `----------*/
2264
2265 #ifdef YYPARSE_PARAM
2266 #if (defined __STDC__ || defined __C99__FUNC__ \
2267 || defined __cplusplus || defined _MSC_VER)
2268 int
2269 yyparse (void *YYPARSE_PARAM)
2270 #else
2271 int
2272 yyparse (YYPARSE_PARAM)
2273 void *YYPARSE_PARAM;
2274 #endif
2275 #else /* ! YYPARSE_PARAM */
2276 #if (defined __STDC__ || defined __C99__FUNC__ \
2277 || defined __cplusplus || defined _MSC_VER)
2278 int
2279 yyparse (void)
2280 #else
2281 int
2282 yyparse ()
2283
2284 #endif
2285 #endif
2286 {
2287
2288 int yystate;
2289 int yyn;
2290 int yyresult;
2291 /* Number of tokens to shift before error messages enabled. */
2292 int yyerrstatus;
2293 /* Look-ahead token as an internal (translated) token number. */
2294 int yytoken = 0;
2295 #if YYERROR_VERBOSE
2296 /* Buffer for error messages, and its allocated size. */
2297 char yymsgbuf[128];
2298 char *yymsg = yymsgbuf;
2299 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2300 #endif
2301
2302 /* Three stacks and their tools:
2303 `yyss': related to states,
2304 `yyvs': related to semantic values,
2305 `yyls': related to locations.
2306
2307 Refer to the stacks thru separate pointers, to allow yyoverflow
2308 to reallocate them elsewhere. */
2309
2310 /* The state stack. */
2311 yytype_int16 yyssa[YYINITDEPTH];
2312 yytype_int16 *yyss = yyssa;
2313 yytype_int16 *yyssp;
2314
2315 /* The semantic value stack. */
2316 YYSTYPE yyvsa[YYINITDEPTH];
2317 YYSTYPE *yyvs = yyvsa;
2318 YYSTYPE *yyvsp;
2319
2320
2321
2322 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2323
2324 YYSIZE_T yystacksize = YYINITDEPTH;
2325
2326 /* The variables used to return semantic value and location from the
2327 action routines. */
2328 YYSTYPE yyval;
2329
2330
2331 /* The number of symbols on the RHS of the reduced rule.
2332 Keep to zero when no symbol should be popped. */
2333 int yylen = 0;
2334
2335 YYDPRINTF ((stderr, "Starting parse\n"));
2336
2337 yystate = 0;