]> git.saurik.com Git - bison.git/blob - src/parse-gram.c
* src/files.c: Include "stdio-safer.h"; this fixes a typo in
[bison.git] / src / parse-gram.c
1 /* A Bison parser, made by GNU Bison 2.0a. */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
20
21 /* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
26 /* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36 /* Identify Bison output. */
37 #define YYBISON 1
38
39 /* Skeleton name. */
40 #define YYSKELETON_NAME "yacc.c"
41
42 /* Pure parsers. */
43 #define YYPURE 1
44
45 /* Using locations. */
46 #define YYLSP_NEEDED 1
47
48 /* Substitute the variable and function names. */
49 #define yyparse gram_parse
50 #define yylex gram_lex
51 #define yyerror gram_error
52 #define yylval gram_lval
53 #define yychar gram_char
54 #define yydebug gram_debug
55 #define yynerrs gram_nerrs
56 #define yylloc gram_lloc
57
58 /* Tokens. */
59 #ifndef YYTOKENTYPE
60 # define YYTOKENTYPE
61 /* Put the tokens into the symbol table, so that GDB and other debuggers
62 know about them. */
63 enum yytokentype {
64 GRAM_EOF = 0,
65 STRING = 258,
66 INT = 259,
67 PERCENT_TOKEN = 260,
68 PERCENT_NTERM = 261,
69 PERCENT_TYPE = 262,
70 PERCENT_DESTRUCTOR = 263,
71 PERCENT_PRINTER = 264,
72 PERCENT_UNION = 265,
73 PERCENT_LEFT = 266,
74 PERCENT_RIGHT = 267,
75 PERCENT_NONASSOC = 268,
76 PERCENT_PREC = 269,
77 PERCENT_DPREC = 270,
78 PERCENT_MERGE = 271,
79 PERCENT_DEBUG = 272,
80 PERCENT_DEFAULT_PREC = 273,
81 PERCENT_DEFINE = 274,
82 PERCENT_DEFINES = 275,
83 PERCENT_ERROR_VERBOSE = 276,
84 PERCENT_EXPECT = 277,
85 PERCENT_EXPECT_RR = 278,
86 PERCENT_FILE_PREFIX = 279,
87 PERCENT_GLR_PARSER = 280,
88 PERCENT_INITIAL_ACTION = 281,
89 PERCENT_LEX_PARAM = 282,
90 PERCENT_LOCATIONS = 283,
91 PERCENT_NAME_PREFIX = 284,
92 PERCENT_NO_DEFAULT_PREC = 285,
93 PERCENT_NO_LINES = 286,
94 PERCENT_NONDETERMINISTIC_PARSER = 287,
95 PERCENT_OUTPUT = 288,
96 PERCENT_PARSE_PARAM = 289,
97 PERCENT_PURE_PARSER = 290,
98 PERCENT_SKELETON = 291,
99 PERCENT_START = 292,
100 PERCENT_TOKEN_TABLE = 293,
101 PERCENT_VERBOSE = 294,
102 PERCENT_YACC = 295,
103 TYPE = 296,
104 EQUAL = 297,
105 SEMICOLON = 298,
106 PIPE = 299,
107 ID = 300,
108 ID_COLON = 301,
109 PERCENT_PERCENT = 302,
110 PROLOGUE = 303,
111 EPILOGUE = 304,
112 BRACED_CODE = 305
113 };
114 #endif
115 #define GRAM_EOF 0
116 #define STRING 258
117 #define INT 259
118 #define PERCENT_TOKEN 260
119 #define PERCENT_NTERM 261
120 #define PERCENT_TYPE 262
121 #define PERCENT_DESTRUCTOR 263
122 #define PERCENT_PRINTER 264
123 #define PERCENT_UNION 265
124 #define PERCENT_LEFT 266
125 #define PERCENT_RIGHT 267
126 #define PERCENT_NONASSOC 268
127 #define PERCENT_PREC 269
128 #define PERCENT_DPREC 270
129 #define PERCENT_MERGE 271
130 #define PERCENT_DEBUG 272
131 #define PERCENT_DEFAULT_PREC 273
132 #define PERCENT_DEFINE 274
133 #define PERCENT_DEFINES 275
134 #define PERCENT_ERROR_VERBOSE 276
135 #define PERCENT_EXPECT 277
136 #define PERCENT_EXPECT_RR 278
137 #define PERCENT_FILE_PREFIX 279
138 #define PERCENT_GLR_PARSER 280
139 #define PERCENT_INITIAL_ACTION 281
140 #define PERCENT_LEX_PARAM 282
141 #define PERCENT_LOCATIONS 283
142 #define PERCENT_NAME_PREFIX 284
143 #define PERCENT_NO_DEFAULT_PREC 285
144 #define PERCENT_NO_LINES 286
145 #define PERCENT_NONDETERMINISTIC_PARSER 287
146 #define PERCENT_OUTPUT 288
147 #define PERCENT_PARSE_PARAM 289
148 #define PERCENT_PURE_PARSER 290
149 #define PERCENT_SKELETON 291
150 #define PERCENT_START 292
151 #define PERCENT_TOKEN_TABLE 293
152 #define PERCENT_VERBOSE 294
153 #define PERCENT_YACC 295
154 #define TYPE 296
155 #define EQUAL 297
156 #define SEMICOLON 298
157 #define PIPE 299
158 #define ID 300
159 #define ID_COLON 301
160 #define PERCENT_PERCENT 302
161 #define PROLOGUE 303
162 #define EPILOGUE 304
163 #define BRACED_CODE 305
164
165
166
167
168 /* Copy the first part of user declarations. */
169 #line 1 "parse-gram.y"
170 /* Bison Grammar Parser -*- C -*-
171
172 Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
173
174 This file is part of Bison, the GNU Compiler Compiler.
175
176 This program is free software; you can redistribute it and/or modify
177 it under the terms of the GNU General Public License as published by
178 the Free Software Foundation; either version 2 of the License, or
179 (at your option) any later version.
180
181 This program is distributed in the hope that it will be useful,
182 but WITHOUT ANY WARRANTY; without even the implied warranty of
183 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
184 GNU General Public License for more details.
185
186 You should have received a copy of the GNU General Public License
187 along with this program; if not, write to the Free Software
188 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
189 02110-1301 USA
190 */
191
192 #include "system.h"
193
194 #include "complain.h"
195 #include "conflicts.h"
196 #include "files.h"
197 #include "getargs.h"
198 #include "gram.h"
199 #include "muscle_tab.h"
200 #include "output.h"
201 #include "quotearg.h"
202 #include "reader.h"
203 #include "symlist.h"
204
205 #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
206 static YYLTYPE lloc_default (YYLTYPE const *, int);
207
208 #define YY_LOCATION_PRINT(File, Loc) \
209 location_print (File, Loc)
210
211 /* Request detailed syntax error messages, and pass them to GRAM_ERROR.
212 FIXME: depends on the undocumented availability of YYLLOC. */
213 #undef yyerror
214 #define yyerror(Msg) \
215 gram_error (&yylloc, Msg)
216 static void gram_error (location const *, char const *);
217
218 #define YYPRINT(File, Type, Value) \
219 print_token_value (File, Type, &Value)
220 static void print_token_value (FILE *, int, YYSTYPE const *);
221
222 static void add_param (char const *, char *, location);
223
224 symbol_class current_class = unknown_sym;
225 uniqstr current_type = 0;
226 symbol *current_lhs;
227 location current_lhs_location;
228 assoc current_assoc;
229 int current_prec = 0;
230
231
232 /* Enabling traces. */
233 #ifndef YYDEBUG
234 # define YYDEBUG 1
235 #endif
236
237 /* Enabling verbose error messages. */
238 #ifdef YYERROR_VERBOSE
239 # undef YYERROR_VERBOSE
240 # define YYERROR_VERBOSE 1
241 #else
242 # define YYERROR_VERBOSE 1
243 #endif
244
245 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
246 #line 82 "parse-gram.y"
247 typedef union YYSTYPE {
248 symbol *symbol;
249 symbol_list *list;
250 int integer;
251 char *chars;
252 assoc assoc;
253 uniqstr uniqstr;
254 } YYSTYPE;
255 /* Line 191 of yacc.c. */
256 #line 257 "parse-gram.c"
257 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
258 # define YYSTYPE_IS_DECLARED 1
259 # define YYSTYPE_IS_TRIVIAL 1
260 #endif
261
262 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
263 typedef struct YYLTYPE
264 {
265 int first_line;
266 int first_column;
267 int last_line;
268 int last_column;
269 } YYLTYPE;
270 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
271 # define YYLTYPE_IS_DECLARED 1
272 # define YYLTYPE_IS_TRIVIAL 1
273 #endif
274
275
276 /* Copy the second part of user declarations. */
277
278
279 /* Line 214 of yacc.c. */
280 #line 281 "parse-gram.c"
281
282 #if ! defined (yyoverflow) || YYERROR_VERBOSE
283
284 # ifndef YYFREE
285 # define YYFREE free
286 # endif
287 # ifndef YYMALLOC
288 # define YYMALLOC malloc
289 # endif
290
291 /* The parser invokes alloca or malloc; define the necessary symbols. */
292
293 # ifdef YYSTACK_USE_ALLOCA
294 # if YYSTACK_USE_ALLOCA
295 # ifdef __GNUC__
296 # define YYSTACK_ALLOC __builtin_alloca
297 # else
298 # define YYSTACK_ALLOC alloca
299 # endif
300 # endif
301 # endif
302
303 # ifdef YYSTACK_ALLOC
304 /* Pacify GCC's `empty if-body' warning. */
305 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
306 # ifndef YYSTACK_ALLOC_MAXIMUM
307 /* The OS might guarantee only one guard page at the bottom of the stack,
308 and a page size can be as small as 4096 bytes. So we cannot safely
309 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
310 to allow for a few compiler-allocated temporary stack slots. */
311 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
312 # endif
313 # else
314 # if defined (__STDC__) || defined (__cplusplus)
315 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
316 # define YYSIZE_T size_t
317 # else
318 # define YYSIZE_T unsigned long int
319 # endif
320 # define YYSTACK_ALLOC YYMALLOC
321 # define YYSTACK_FREE YYFREE
322 # ifndef YYSTACK_ALLOC_MAXIMUM
323 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
324 # endif
325 # endif
326 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
327
328
329 #if (! defined (yyoverflow) \
330 && (! defined (__cplusplus) \
331 || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
332 && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
333
334 /* A type that is properly aligned for any stack member. */
335 union yyalloc
336 {
337 short int yyss;
338 YYSTYPE yyvs;
339 YYLTYPE yyls;
340 };
341
342 /* The size of the maximum gap between one aligned stack and the next. */
343 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
344
345 /* The size of an array large to enough to hold all stacks, each with
346 N elements. */
347 # define YYSTACK_BYTES(N) \
348 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
349 + 2 * YYSTACK_GAP_MAXIMUM)
350
351 /* Copy COUNT objects from FROM to TO. The source and destination do
352 not overlap. */
353 # ifndef YYCOPY
354 # if defined (__GNUC__) && 1 < __GNUC__
355 # define YYCOPY(To, From, Count) \
356 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
357 # else
358 # define YYCOPY(To, From, Count) \
359 do \
360 { \
361 YYSIZE_T yyi; \
362 for (yyi = 0; yyi < (Count); yyi++) \
363 (To)[yyi] = (From)[yyi]; \
364 } \
365 while (0)
366 # endif
367 # endif
368
369 /* Relocate STACK from its old location to the new one. The
370 local variables YYSIZE and YYSTACKSIZE give the old and new number of
371 elements in the stack, and YYPTR gives the new location of the
372 stack. Advance YYPTR to a properly aligned location for the next
373 stack. */
374 # define YYSTACK_RELOCATE(Stack) \
375 do \
376 { \
377 YYSIZE_T yynewbytes; \
378 YYCOPY (&yyptr->Stack, Stack, yysize); \
379 Stack = &yyptr->Stack; \
380 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
381 yyptr += yynewbytes / sizeof (*yyptr); \
382 } \
383 while (0)
384
385 #endif
386
387 #if defined (__STDC__) || defined (__cplusplus)
388 typedef signed char yysigned_char;
389 #else
390 typedef short int yysigned_char;
391 #endif
392
393 /* YYFINAL -- State number of the termination state. */
394 #define YYFINAL 3
395 /* YYLAST -- Last index in YYTABLE. */
396 #define YYLAST 158
397
398 /* YYNTOKENS -- Number of terminals. */
399 #define YYNTOKENS 51
400 /* YYNNTS -- Number of nonterminals. */
401 #define YYNNTS 25
402 /* YYNRULES -- Number of rules. */
403 #define YYNRULES 79
404 /* YYNRULES -- Number of states. */
405 #define YYNSTATES 108
406
407 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
408 #define YYUNDEFTOK 2
409 #define YYMAXUTOK 305
410
411 #define YYTRANSLATE(YYX) \
412 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
413
414 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
415 static const unsigned char yytranslate[] =
416 {
417 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
442 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
443 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
444 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
445 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
446 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
447 45, 46, 47, 48, 49, 50
448 };
449
450 #if YYDEBUG
451 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
452 YYRHS. */
453 static const unsigned char yyprhs[] =
454 {
455 0, 0, 3, 8, 9, 12, 14, 16, 18, 22,
456 24, 26, 29, 32, 36, 38, 40, 42, 44, 48,
457 50, 52, 56, 58, 60, 63, 65, 67, 69, 71,
458 73, 75, 78, 80, 83, 86, 88, 90, 91, 95,
459 96, 100, 104, 108, 110, 112, 114, 115, 117, 119,
460 122, 124, 126, 129, 132, 136, 138, 141, 143, 146,
461 148, 151, 154, 155, 159, 161, 165, 168, 169, 172,
462 175, 179, 183, 187, 189, 191, 193, 195, 197, 198
463 };
464
465 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
466 static const yysigned_char yyrhs[] =
467 {
468 52, 0, -1, 53, 47, 65, 75, -1, -1, 53,
469 54, -1, 55, -1, 48, -1, 17, -1, 19, 74,
470 74, -1, 20, -1, 21, -1, 22, 4, -1, 23,
471 4, -1, 24, 42, 74, -1, 25, -1, 26, -1,
472 27, -1, 28, -1, 29, 42, 74, -1, 31, -1,
473 32, -1, 33, 42, 74, -1, 34, -1, 35, -1,
474 36, 74, -1, 38, -1, 39, -1, 40, -1, 43,
475 -1, 59, -1, 56, -1, 37, 71, -1, 10, -1,
476 8, 62, -1, 9, 62, -1, 18, -1, 30, -1,
477 -1, 6, 57, 64, -1, -1, 5, 58, 64, -1,
478 7, 41, 62, -1, 60, 61, 62, -1, 11, -1,
479 12, -1, 13, -1, -1, 41, -1, 71, -1, 62,
480 71, -1, 41, -1, 45, -1, 45, 4, -1, 45,
481 73, -1, 45, 4, 73, -1, 63, -1, 64, 63,
482 -1, 66, -1, 65, 66, -1, 67, -1, 55, 43,
483 -1, 1, 43, -1, -1, 46, 68, 69, -1, 70,
484 -1, 69, 44, 70, -1, 69, 43, -1, -1, 70,
485 71, -1, 70, 72, -1, 70, 14, 71, -1, 70,
486 15, 4, -1, 70, 16, 41, -1, 45, -1, 73,
487 -1, 50, -1, 3, -1, 3, -1, -1, 47, 49,
488 -1
489 };
490
491 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
492 static const unsigned short int yyrline[] =
493 {
494 0, 175, 175, 183, 185, 189, 190, 191, 192, 193,
495 194, 195, 196, 197, 198, 203, 207, 208, 209, 210,
496 211, 212, 213, 214, 215, 216, 217, 218, 219, 223,
497 224, 225, 229, 235, 242, 249, 253, 260, 260, 265,
498 265, 270, 280, 295, 296, 297, 301, 302, 308, 309,
499 314, 318, 323, 329, 335, 346, 347, 356, 357, 363,
500 364, 369, 376, 376, 380, 381, 382, 387, 388, 390,
501 392, 394, 396, 401, 402, 406, 412, 421, 426, 428
502 };
503 #endif
504
505 #if YYDEBUG || YYERROR_VERBOSE
506 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
507 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
508 static const char *const yytname[] =
509 {
510 "end of file", "error", "$undefined", "string", "integer", "%token",
511 "%nterm", "%type", "%destructor {...}", "%printer {...}", "%union {...}",
512 "%left", "%right", "%nonassoc", "%prec", "%dprec", "%merge", "%debug",
513 "%default-prec", "%define", "%defines", "%error-verbose", "%expect",
514 "%expect-rr", "%file-prefix", "%glr-parser", "%initial-action {...}",
515 "%lex-param {...}", "%locations", "%name-prefix", "%no-default-prec",
516 "%no-lines", "%nondeterministic-parser", "%output", "%parse-param {...}",
517 "%pure-parser", "%skeleton", "%start", "%token-table", "%verbose",
518 "%yacc", "type", "=", ";", "|", "identifier", "identifier:", "%%",
519 "%{...%}", "epilogue", "{...}", "$accept", "input", "declarations",
520 "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2",
521 "precedence_declaration", "precedence_declarator", "type.opt",
522 "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
523 "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs",
524 "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0
525 };
526 #endif
527
528 /* INFRINGES ON USER NAME SPACE */
529 #ifndef _
530 # define _(msgid) msgid
531 #endif
532
533 # ifdef YYPRINT
534 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
535 token YYLEX-NUM. */
536 static const unsigned short int yytoknum[] =
537 {
538 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
539 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
540 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
541 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
542 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
543 305
544 };
545 # endif
546
547 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
548 static const unsigned char yyr1[] =
549 {
550 0, 51, 52, 53, 53, 54, 54, 54, 54, 54,
551 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
552 54, 54, 54, 54, 54, 54, 54, 54, 54, 55,
553 55, 55, 55, 55, 55, 55, 55, 57, 56, 58,
554 56, 56, 59, 60, 60, 60, 61, 61, 62, 62,
555 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,
556 66, 66, 68, 67, 69, 69, 69, 70, 70, 70,
557 70, 70, 70, 71, 71, 72, 73, 74, 75, 75
558 };
559
560 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
561 static const unsigned char yyr2[] =
562 {
563 0, 2, 4, 0, 2, 1, 1, 1, 3, 1,
564 1, 2, 2, 3, 1, 1, 1, 1, 3, 1,
565 1, 3, 1, 1, 2, 1, 1, 1, 1, 1,
566 1, 2, 1, 2, 2, 1, 1, 0, 3, 0,
567 3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
568 1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
569 2, 2, 0, 3, 1, 3, 2, 0, 2, 2,
570 3, 3, 3, 1, 1, 1, 1, 1, 0, 2
571 };
572
573 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
574 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
575 means the default is an error. */
576 static const unsigned char yydefact[] =
577 {
578 3, 0, 0, 1, 39, 37, 0, 0, 0, 32,
579 43, 44, 45, 7, 35, 0, 9, 10, 0, 0,
580 0, 14, 15, 16, 17, 0, 36, 19, 20, 0,
581 22, 23, 0, 0, 25, 26, 27, 28, 0, 6,
582 4, 5, 30, 29, 46, 0, 0, 0, 76, 73,
583 33, 48, 74, 34, 77, 0, 11, 12, 0, 0,
584 0, 24, 31, 0, 62, 0, 0, 57, 59, 47,
585 0, 50, 51, 55, 40, 38, 41, 49, 8, 13,
586 18, 21, 61, 67, 60, 0, 58, 2, 42, 52,
587 53, 56, 63, 64, 79, 54, 66, 67, 0, 0,
588 0, 75, 68, 69, 65, 70, 71, 72
589 };
590
591 /* YYDEFGOTO[NTERM-NUM]. */
592 static const yysigned_char yydefgoto[] =
593 {
594 -1, 1, 2, 40, 65, 42, 46, 45, 43, 44,
595 70, 50, 73, 74, 66, 67, 68, 83, 92, 93,
596 51, 103, 52, 55, 87
597 };
598
599 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
600 STATE-NUM. */
601 #define YYPACT_NINF -67
602 static const yysigned_char yypact[] =
603 {
604 -67, 5, 110, -67, -67, -67, -34, 0, 0, -67,
605 -67, -67, -67, -67, -67, 13, -67, -67, 20, 31,
606 -17, -67, -67, -67, -67, -6, -67, -67, -67, -5,
607 -67, -67, 13, 0, -67, -67, -67, -67, 68, -67,
608 -67, -67, -67, -67, -3, -37, -37, 0, -67, -67,
609 0, -67, -67, 0, -67, 13, -67, -67, 13, 13,
610 13, -67, -67, -2, -67, 3, 21, -67, -67, -67,
611 0, -67, 6, -67, -37, -37, 0, -67, -67, -67,
612 -67, -67, -67, -67, -67, 1, -67, -67, 0, 39,
613 -67, -67, -32, -1, -67, -67, -67, -67, 0, 43,
614 7, -67, -67, -67, -1, -67, -67, -67
615 };
616
617 /* YYPGOTO[NTERM-NUM]. */
618 static const yysigned_char yypgoto[] =
619 {
620 -67, -67, -67, -67, 50, -67, -67, -67, -67, -67,
621 -67, -7, -56, 8, -67, -13, -67, -67, -67, -41,
622 -33, -67, -66, 29, -67
623 };
624
625 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
626 positive, shift that token. If negative, reduce the rule which
627 number is the opposite. If zero, do what YYDEFACT says.
628 If YYTABLE_NINF, syntax error. */
629 #define YYTABLE_NINF -79
630 static const yysigned_char yytable[] =
631 {
632 62, 53, 48, 48, 71, 3, 90, 47, 72, 48,
633 89, 96, 97, 98, 99, 100, 54, 77, 91, 91,
634 77, -78, 63, 95, 56, 58, 4, 5, 6, 7,
635 8, 9, 10, 11, 12, 57, 59, 60, 69, 14,
636 76, 82, 48, 77, 49, 49, 84, 106, 107, 101,
637 94, 26, 41, 86, 75, 77, 104, 0, 33, 0,
638 102, 61, 0, 88, 0, 105, 0, 64, 85, 63,
639 0, 102, 0, 4, 5, 6, 7, 8, 9, 10,
640 11, 12, 0, 0, 78, 0, 14, 79, 80, 81,
641 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
642 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
643 0, 0, 0, 0, 64, 4, 5, 6, 7, 8,
644 9, 10, 11, 12, 0, 0, 0, 13, 14, 15,
645 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
646 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
647 36, 0, 0, 37, 0, 0, 0, 38, 39
648 };
649
650 static const yysigned_char yycheck[] =
651 {
652 33, 8, 3, 3, 41, 0, 72, 41, 45, 3,
653 4, 43, 44, 14, 15, 16, 3, 50, 74, 75,
654 53, 0, 1, 89, 4, 42, 5, 6, 7, 8,
655 9, 10, 11, 12, 13, 4, 42, 42, 41, 18,
656 47, 43, 3, 76, 45, 45, 43, 4, 41, 50,
657 49, 30, 2, 66, 46, 88, 97, -1, 37, -1,
658 93, 32, -1, 70, -1, 98, -1, 46, 47, 1,
659 -1, 104, -1, 5, 6, 7, 8, 9, 10, 11,
660 12, 13, -1, -1, 55, -1, 18, 58, 59, 60,
661 -1, -1, -1, -1, -1, -1, -1, -1, 30, -1,
662 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
663 -1, -1, -1, -1, 46, 5, 6, 7, 8, 9,
664 10, 11, 12, 13, -1, -1, -1, 17, 18, 19,
665 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
666 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
667 40, -1, -1, 43, -1, -1, -1, 47, 48
668 };
669
670 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
671 symbol of state STATE-NUM. */
672 static const unsigned char yystos[] =
673 {
674 0, 52, 53, 0, 5, 6, 7, 8, 9, 10,
675 11, 12, 13, 17, 18, 19, 20, 21, 22, 23,
676 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
677 34, 35, 36, 37, 38, 39, 40, 43, 47, 48,
678 54, 55, 56, 59, 60, 58, 57, 41, 3, 45,
679 62, 71, 73, 62, 3, 74, 4, 4, 42, 42,
680 42, 74, 71, 1, 46, 55, 65, 66, 67, 41,
681 61, 41, 45, 63, 64, 64, 62, 71, 74, 74,
682 74, 74, 43, 68, 43, 47, 66, 75, 62, 4,
683 73, 63, 69, 70, 49, 73, 43, 44, 14, 15,
684 16, 50, 71, 72, 70, 71, 4, 41
685 };
686
687 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
688 # define YYSIZE_T __SIZE_TYPE__
689 #endif
690 #if ! defined (YYSIZE_T) && defined (size_t)
691 # define YYSIZE_T size_t
692 #endif
693 #if ! defined (YYSIZE_T)
694 # if defined (__STDC__) || defined (__cplusplus)
695 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
696 # define YYSIZE_T size_t
697 # endif
698 #endif
699 #if ! defined (YYSIZE_T)
700 # define YYSIZE_T unsigned int
701 #endif
702
703 #define yyerrok (yyerrstatus = 0)
704 #define yyclearin (yychar = YYEMPTY)
705 #define YYEMPTY (-2)
706 #define YYEOF 0
707
708 #define YYACCEPT goto yyacceptlab
709 #define YYABORT goto yyabortlab
710 #define YYERROR goto yyerrorlab
711
712
713 /* Like YYERROR except do call yyerror. This remains here temporarily
714 to ease the transition to the new meaning of YYERROR, for GCC.
715 Once GCC version 2 has supplanted version 1, this can go. */
716
717 #define YYFAIL goto yyerrlab
718
719 #define YYRECOVERING() (!!yyerrstatus)
720
721 #define YYBACKUP(Token, Value) \
722 do \
723 if (yychar == YYEMPTY && yylen == 1) \
724 { \
725 yychar = (Token); \
726 yylval = (Value); \
727 yytoken = YYTRANSLATE (yychar); \
728 YYPOPSTACK; \
729 goto yybackup; \
730 } \
731 else \
732 { \
733 yyerror (_("syntax error: cannot back up")); \
734 YYERROR; \
735 } \
736 while (0)
737
738
739 #define YYTERROR 1
740 #define YYERRCODE 256
741
742
743 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
744 If N is 0, then set CURRENT to the empty location which ends
745 the previous symbol: RHS[0] (always defined). */
746
747 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
748 #ifndef YYLLOC_DEFAULT
749 # define YYLLOC_DEFAULT(Current, Rhs, N) \
750 do \
751 if (N) \
752 { \
753 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
754 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
755 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
756 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
757 } \
758 else \
759 { \
760 (Current).first_line = (Current).last_line = \
761 YYRHSLOC (Rhs, 0).last_line; \
762 (Current).first_column = (Current).last_column = \
763 YYRHSLOC (Rhs, 0).last_column; \
764 } \
765 while (0)
766 #endif
767
768
769 /* YY_LOCATION_PRINT -- Print the location on the stream.
770 This macro was not mandated originally: define only if we know
771 we won't break user code: when these are the locations we know. */
772
773 #ifndef YY_LOCATION_PRINT
774 # if YYLTYPE_IS_TRIVIAL
775 # define YY_LOCATION_PRINT(File, Loc) \
776 fprintf (File, "%d.%d-%d.%d", \
777 (Loc).first_line, (Loc).first_column, \
778 (Loc).last_line, (Loc).last_column)
779 # else
780 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
781 # endif
782 #endif
783
784
785 /* YYLEX -- calling `yylex' with the right arguments. */
786
787 #ifdef YYLEX_PARAM
788 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
789 #else
790 # define YYLEX yylex (&yylval, &yylloc)
791 #endif
792
793 /* Enable debugging if requested. */
794 #if YYDEBUG
795
796 # ifndef YYFPRINTF
797 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
798 # define YYFPRINTF fprintf
799 # endif
800
801 # define YYDPRINTF(Args) \
802 do { \
803 if (yydebug) \
804 YYFPRINTF Args; \
805 } while (0)
806
807 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
808 do { \
809 if (yydebug) \
810 { \
811 YYFPRINTF (stderr, "%s ", Title); \
812 yysymprint (stderr, \
813 Type, Value, Location); \
814 YYFPRINTF (stderr, "\n"); \
815 } \
816 } while (0)
817
818 /*------------------------------------------------------------------.
819 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
820 | TOP (included). |
821 `------------------------------------------------------------------*/
822
823 #if defined (__STDC__) || defined (__cplusplus)
824 static void
825 yy_stack_print (short int *bottom, short int *top)
826 #else
827 static void
828 yy_stack_print (bottom, top)
829 short int *bottom;
830 short int *top;
831 #endif
832 {
833 YYFPRINTF (stderr, _("Stack now"));
834 for (/* Nothing. */; bottom <= top; ++bottom)
835 YYFPRINTF (stderr, " %d", *bottom);
836 YYFPRINTF (stderr, "\n");
837 }
838
839 # define YY_STACK_PRINT(Bottom, Top) \
840 do { \
841 if (yydebug) \
842 yy_stack_print ((Bottom), (Top)); \
843 } while (0)
844
845
846 /*------------------------------------------------.
847 | Report that the YYRULE is going to be reduced. |
848 `------------------------------------------------*/
849
850 #if defined (__STDC__) || defined (__cplusplus)
851 static void
852 yy_reduce_print (int yyrule)
853 #else
854 static void
855 yy_reduce_print (yyrule)
856 int yyrule;
857 #endif
858 {
859 int yyi;
860 unsigned int yylno = yyrline[yyrule];
861 YYFPRINTF (stderr, _("Reducing stack by rule %d (line %u), "),
862 yyrule - 1, yylno);
863 /* Print the symbols being reduced, and their result. */
864 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
865 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
866 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
867 }
868
869 # define YY_REDUCE_PRINT(Rule) \
870 do { \
871 if (yydebug) \
872 yy_reduce_print (Rule); \
873 } while (0)
874
875 /* Nonzero means print parse trace. It is left uninitialized so that
876 multiple parsers can coexist. */
877 int yydebug;
878 #else /* !YYDEBUG */
879 # define YYDPRINTF(Args)
880 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
881 # define YY_STACK_PRINT(Bottom, Top)
882 # define YY_REDUCE_PRINT(Rule)
883 #endif /* !YYDEBUG */
884
885
886 /* YYINITDEPTH -- initial size of the parser's stacks. */
887 #ifndef YYINITDEPTH
888 # define YYINITDEPTH 200
889 #endif
890
891 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
892 if the built-in stack extension method is used).
893
894 Do not make this value too large; the results are undefined if
895 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
896 evaluated with infinite-precision integer arithmetic. */
897
898 #ifndef YYMAXDEPTH
899 # define YYMAXDEPTH 10000
900 #endif
901
902 \f
903
904 #if YYERROR_VERBOSE
905
906 # ifndef yystrlen
907 # if defined (__GLIBC__) && defined (_STRING_H)
908 # define yystrlen strlen
909 # else
910 /* Return the length of YYSTR. */
911 static YYSIZE_T
912 # if defined (__STDC__) || defined (__cplusplus)
913 yystrlen (const char *yystr)
914 # else
915 yystrlen (yystr)
916 const char *yystr;
917 # endif
918 {
919 const char *yys = yystr;
920
921 while (*yys++ != '\0')
922 continue;
923
924 return yys - yystr - 1;
925 }
926 # endif
927 # endif
928
929 # ifndef yystpcpy
930 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
931 # define yystpcpy stpcpy
932 # else
933 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
934 YYDEST. */
935 static char *
936 # if defined (__STDC__) || defined (__cplusplus)
937 yystpcpy (char *yydest, const char *yysrc)
938 # else
939 yystpcpy (yydest, yysrc)
940 char *yydest;
941 const char *yysrc;
942 # endif
943 {
944 char *yyd = yydest;
945 const char *yys = yysrc;
946
947 while ((*yyd++ = *yys++) != '\0')
948 continue;
949
950 return yyd - 1;
951 }
952 # endif
953 # endif
954
955 #endif /* !YYERROR_VERBOSE */
956
957 \f
958
959 #if YYDEBUG
960 /*--------------------------------.
961 | Print this symbol on YYOUTPUT. |
962 `--------------------------------*/
963
964 #if defined (__STDC__) || defined (__cplusplus)
965 static void
966 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
967 #else
968 static void
969 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
970 FILE *yyoutput;
971 int yytype;
972 YYSTYPE *yyvaluep;
973 YYLTYPE *yylocationp;
974 #endif
975 {
976 /* Pacify ``unused variable'' warnings. */
977 (void) yyvaluep;
978 (void) yylocationp;
979
980 if (yytype < YYNTOKENS)
981 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
982 else
983 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
984
985 YY_LOCATION_PRINT (yyoutput, *yylocationp);
986 fprintf (yyoutput, ": ");
987
988 # ifdef YYPRINT
989 if (yytype < YYNTOKENS)
990 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
991 # endif
992 switch (yytype)
993 {
994 default:
995 break;
996 }
997 YYFPRINTF (yyoutput, ")");
998 }
999
1000 #endif /* ! YYDEBUG */
1001 /*-----------------------------------------------.
1002 | Release the memory associated to this symbol. |
1003 `-----------------------------------------------*/
1004
1005 #if defined (__STDC__) || defined (__cplusplus)
1006 static void
1007 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1008 #else
1009 static void
1010 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1011 const char *yymsg;
1012 int yytype;
1013 YYSTYPE *yyvaluep;
1014 YYLTYPE *yylocationp;
1015 #endif
1016 {
1017 /* Pacify ``unused variable'' warnings. */
1018 (void) yyvaluep;
1019 (void) yylocationp;
1020
1021 if (!yymsg)
1022 yymsg = "Deleting";
1023 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1024
1025 switch (yytype)
1026 {
1027
1028 default:
1029 break;
1030 }
1031 }
1032 \f
1033
1034 /* Prevent warnings from -Wmissing-prototypes. */
1035
1036 #ifdef YYPARSE_PARAM
1037 # if defined (__STDC__) || defined (__cplusplus)
1038 int yyparse (void *YYPARSE_PARAM);
1039 # else
1040 int yyparse ();
1041 # endif
1042 #else /* ! YYPARSE_PARAM */
1043 #if defined (__STDC__) || defined (__cplusplus)
1044 int yyparse (void);
1045 #else
1046 int yyparse ();
1047 #endif
1048 #endif /* ! YYPARSE_PARAM */
1049
1050
1051
1052
1053
1054
1055 /*----------.
1056 | yyparse. |
1057 `----------*/
1058
1059 #ifdef YYPARSE_PARAM
1060 # if defined (__STDC__) || defined (__cplusplus)
1061 int yyparse (void *YYPARSE_PARAM)
1062 # else
1063 int yyparse (YYPARSE_PARAM)
1064 void *YYPARSE_PARAM;
1065 # endif
1066 #else /* ! YYPARSE_PARAM */
1067 #if defined (__STDC__) || defined (__cplusplus)
1068 int
1069 yyparse (void)
1070 #else
1071 int
1072 yyparse ()
1073
1074 #endif
1075 #endif
1076 {
1077 /* The look-ahead symbol. */
1078 int yychar;
1079
1080 /* The semantic value of the look-ahead symbol. */
1081 YYSTYPE yylval;
1082
1083 /* Number of syntax errors so far. */
1084 int yynerrs;
1085 /* Location data for the look-ahead symbol. */
1086 YYLTYPE yylloc;
1087
1088 int yystate;
1089 int yyn;
1090 int yyresult;
1091 /* Number of tokens to shift before error messages enabled. */
1092 int yyerrstatus;
1093 /* Look-ahead token as an internal (translated) token number. */
1094 int yytoken = 0;
1095
1096 /* Three stacks and their tools:
1097 `yyss': related to states,
1098 `yyvs': related to semantic values,
1099 `yyls': related to locations.
1100
1101 Refer to the stacks thru separate pointers, to allow yyoverflow
1102 to reallocate them elsewhere. */
1103
1104 /* The state stack. */
1105 short int yyssa[YYINITDEPTH];
1106 short int *yyss = yyssa;
1107 short int *yyssp;
1108
1109 /* The semantic value stack. */
1110 YYSTYPE yyvsa[YYINITDEPTH];
1111 YYSTYPE *yyvs = yyvsa;
1112 YYSTYPE *yyvsp;
1113
1114 /* The location stack. */
1115 YYLTYPE yylsa[YYINITDEPTH];
1116 YYLTYPE *yyls = yylsa;
1117 YYLTYPE *yylsp;
1118 /* The locations where the error started and ended. */
1119 YYLTYPE yyerror_range[2];
1120
1121 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1122
1123 YYSIZE_T yystacksize = YYINITDEPTH;
1124
1125 /* The variables used to return semantic value and location from the
1126 action routines. */
1127 YYSTYPE yyval;
1128 YYLTYPE yyloc;
1129
1130 /* When reducing, the number of symbols on the RHS of the reduced
1131 rule. */
1132 int yylen;
1133
1134 YYDPRINTF ((stderr, "Starting parse\n"));
1135
1136 yystate = 0;
1137 yyerrstatus = 0;
1138 yynerrs = 0;
1139 yychar = YYEMPTY; /* Cause a token to be read. */
1140
1141 /* Initialize stack pointers.
1142 Waste one element of value and location stack
1143 so that they stay on the same level as the state stack.
1144 The wasted elements are never initialized. */
1145
1146 yyssp = yyss;
1147 yyvsp = yyvs;
1148 yylsp = yyls;
1149 #if YYLTYPE_IS_TRIVIAL
1150 /* Initialize the default location before parsing starts. */
1151 yylloc.first_line = yylloc.last_line = 1;
1152 yylloc.first_column = yylloc.last_column = 0;
1153 #endif
1154
1155
1156 /* User initialization code. */
1157 #line 72 "parse-gram.y"
1158 {
1159 /* Bison's grammar can initial empty locations, hence a default
1160 location is needed. */
1161 yylloc.start.file = yylloc.end.file = current_file;
1162 yylloc.start.line = yylloc.end.line = 1;
1163 yylloc.start.column = yylloc.end.column = 0;
1164 }
1165 /* Line 860 of yacc.c. */
1166 #line 1167 "parse-gram.c"
1167 yyvsp[0] = yylval;
1168 yylsp[0] = yylloc;
1169
1170 goto yysetstate;
1171
1172 /*------------------------------------------------------------.
1173 | yynewstate -- Push a new state, which is found in yystate. |
1174 `------------------------------------------------------------*/
1175 yynewstate:
1176 /* In all cases, when you get here, the value and location stacks
1177 have just been pushed. so pushing a state here evens the stacks.
1178 */
1179 yyssp++;
1180
1181 yysetstate:
1182 *yyssp = yystate;
1183
1184 if (yyss + yystacksize - 1 <= yyssp)
1185 {
1186 /* Get the current used size of the three stacks, in elements. */
1187 YYSIZE_T yysize = yyssp - yyss + 1;
1188
1189 #ifdef yyoverflow
1190 {
1191 /* Give user a chance to reallocate the stack. Use copies of
1192 these so that the &'s don't force the real ones into
1193 memory. */
1194 YYSTYPE *yyvs1 = yyvs;
1195 short int *yyss1 = yyss;
1196 YYLTYPE *yyls1 = yyls;
1197
1198 /* Each stack pointer address is followed by the size of the
1199 data in use in that stack, in bytes. This used to be a
1200 conditional around just the two extra args, but that might
1201 be undefined if yyoverflow is a macro. */
1202 yyoverflow (_("parser stack overflow"),
1203 &yyss1, yysize * sizeof (*yyssp),
1204 &yyvs1, yysize * sizeof (*yyvsp),
1205 &yyls1, yysize * sizeof (*yylsp),
1206 &yystacksize);
1207 yyls = yyls1;
1208 yyss = yyss1;
1209 yyvs = yyvs1;
1210 }
1211 #else /* no yyoverflow */
1212 # ifndef YYSTACK_RELOCATE
1213 goto yyoverflowlab;
1214 # else
1215 /* Extend the stack our own way. */
1216 if (YYMAXDEPTH <= yystacksize)
1217 goto yyoverflowlab;
1218 yystacksize *= 2;
1219 if (YYMAXDEPTH < yystacksize)
1220 yystacksize = YYMAXDEPTH;
1221
1222 {
1223 short int *yyss1 = yyss;
1224 union yyalloc *yyptr =
1225 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1226 if (! yyptr)
1227 goto yyoverflowlab;
1228 YYSTACK_RELOCATE (yyss);
1229 YYSTACK_RELOCATE (yyvs);
1230 YYSTACK_RELOCATE (yyls);
1231 # undef YYSTACK_RELOCATE
1232 if (yyss1 != yyssa)
1233 YYSTACK_FREE (yyss1);
1234 }
1235 # endif
1236 #endif /* no yyoverflow */
1237
1238 yyssp = yyss + yysize - 1;
1239 yyvsp = yyvs + yysize - 1;
1240 yylsp = yyls + yysize - 1;
1241
1242 YYDPRINTF ((stderr, _("Stack size increased to %lu\n"),
1243 (unsigned long int) yystacksize));
1244
1245 if (yyss + yystacksize - 1 <= yyssp)
1246 YYABORT;
1247 }
1248
1249 YYDPRINTF ((stderr, _("Entering state %d\n"), yystate));
1250
1251 goto yybackup;
1252
1253 /*-----------.
1254 | yybackup. |
1255 `-----------*/
1256 yybackup:
1257
1258 /* Do appropriate processing given the current state. */
1259 /* Read a look-ahead token if we need one and don't already have one. */
1260 /* yyresume: */
1261
1262 /* First try to decide what to do without reference to look-ahead token. */
1263
1264 yyn = yypact[yystate];
1265 if (yyn == YYPACT_NINF)
1266 goto yydefault;
1267
1268 /* Not known => get a look-ahead token if don't already have one. */
1269
1270 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1271 if (yychar == YYEMPTY)
1272 {
1273 YYDPRINTF ((stderr, _("Reading a token: ")));
1274 yychar = YYLEX;
1275 }
1276
1277 if (yychar <= YYEOF)
1278 {
1279 yychar = yytoken = YYEOF;
1280 YYDPRINTF ((stderr, _("Now at end of input.\n")));
1281 }
1282 else
1283 {
1284 yytoken = YYTRANSLATE (yychar);
1285 YY_SYMBOL_PRINT (_("Next token is"), yytoken, &yylval, &yylloc);
1286 }
1287
1288 /* If the proper action on seeing token YYTOKEN is to reduce or to
1289 detect an error, take that action. */
1290 yyn += yytoken;
1291 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1292 goto yydefault;
1293 yyn = yytable[yyn];
1294 if (yyn <= 0)
1295 {
1296 if (yyn == 0 || yyn == YYTABLE_NINF)
1297 goto yyerrlab;
1298 yyn = -yyn;
1299 goto yyreduce;
1300 }
1301
1302 if (yyn == YYFINAL)
1303 YYACCEPT;
1304
1305 /* Shift the look-ahead token. */
1306 YY_SYMBOL_PRINT (_("Shifting"), yytoken, &yylval, &yylloc);
1307
1308 /* Discard the token being shifted unless it is eof. */
1309 if (yychar != YYEOF)
1310 yychar = YYEMPTY;
1311
1312 *++yyvsp = yylval;
1313 *++yylsp = yylloc;
1314
1315 /* Count tokens shifted since error; after three, turn off error
1316 status. */
1317 if (yyerrstatus)
1318 yyerrstatus--;
1319
1320 yystate = yyn;
1321 goto yynewstate;
1322
1323
1324 /*-----------------------------------------------------------.
1325 | yydefault -- do the default action for the current state. |
1326 `-----------------------------------------------------------*/
1327 yydefault:
1328 yyn = yydefact[yystate];
1329 if (yyn == 0)
1330 goto yyerrlab;
1331 goto yyreduce;
1332
1333
1334 /*-----------------------------.
1335 | yyreduce -- Do a reduction. |
1336 `-----------------------------*/
1337 yyreduce:
1338 /* yyn is the number of a rule to reduce with. */
1339 yylen = yyr2[yyn];
1340
1341 /* If YYLEN is nonzero, implement the default value of the action:
1342 `$$ = $1'.
1343
1344 Otherwise, the following line sets YYVAL to garbage.
1345 This behavior is undocumented and Bison
1346 users should not rely upon it. Assigning to YYVAL
1347 unconditionally makes the parser a bit smaller, and it avoids a
1348 GCC warning that YYVAL may be used uninitialized. */
1349 yyval = yyvsp[1-yylen];
1350
1351 /* Default location. */
1352 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
1353 YY_REDUCE_PRINT (yyn);
1354 switch (yyn)
1355 {
1356 case 6:
1357 #line 190 "parse-gram.y"
1358 { prologue_augment ((yyvsp[0].chars), (yylsp[0])); }
1359 break;
1360
1361 case 7:
1362 #line 191 "parse-gram.y"
1363 { debug_flag = true; }
1364 break;
1365
1366 case 8:
1367 #line 192 "parse-gram.y"
1368 { muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); }
1369 break;
1370
1371 case 9:
1372 #line 193 "parse-gram.y"
1373 { defines_flag = true; }
1374 break;
1375
1376 case 10:
1377 #line 194 "parse-gram.y"
1378 { error_verbose = true; }
1379 break;
1380
1381 case 11:
1382 #line 195 "parse-gram.y"
1383 { expected_sr_conflicts = (yyvsp[0].integer); }
1384 break;
1385
1386 case 12:
1387 #line 196 "parse-gram.y"
1388 { expected_rr_conflicts = (yyvsp[0].integer); }
1389 break;
1390
1391 case 13:
1392 #line 197 "parse-gram.y"
1393 { spec_file_prefix = (yyvsp[0].chars); }
1394 break;
1395
1396 case 14:
1397 #line 199 "parse-gram.y"
1398 {
1399 nondeterministic_parser = true;
1400 glr_parser = true;
1401 }
1402 break;
1403
1404 case 15:
1405 #line 204 "parse-gram.y"
1406 {
1407 muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0]));
1408 }
1409 break;
1410
1411 case 16:
1412 #line 207 "parse-gram.y"
1413 { add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); }
1414 break;
1415
1416 case 17:
1417 #line 208 "parse-gram.y"
1418 { locations_flag = true; }
1419 break;
1420
1421 case 18:
1422 #line 209 "parse-gram.y"
1423 { spec_name_prefix = (yyvsp[0].chars); }
1424 break;
1425
1426 case 19:
1427 #line 210 "parse-gram.y"
1428 { no_lines_flag = true; }
1429 break;
1430
1431 case 20:
1432 #line 211 "parse-gram.y"
1433 { nondeterministic_parser = true; }
1434 break;
1435
1436 case 21:
1437 #line 212 "parse-gram.y"
1438 { spec_outfile = (yyvsp[0].chars); }
1439 break;
1440
1441 case 22:
1442 #line 213 "parse-gram.y"
1443 { add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); }
1444 break;
1445
1446 case 23:
1447 #line 214 "parse-gram.y"
1448 { pure_parser = true; }
1449 break;
1450
1451 case 24:
1452 #line 215 "parse-gram.y"
1453 { skeleton = (yyvsp[0].chars); }
1454 break;
1455
1456 case 25:
1457 #line 216 "parse-gram.y"
1458 { token_table_flag = true; }
1459 break;
1460
1461 case 26:
1462 #line 217 "parse-gram.y"
1463 { report_flag = report_states; }
1464 break;
1465
1466 case 27:
1467 #line 218 "parse-gram.y"
1468 { yacc_flag = true; }
1469 break;
1470
1471 case 31:
1472 #line 226 "parse-gram.y"
1473 {
1474 grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
1475 }
1476 break;
1477
1478 case 32:
1479 #line 230 "parse-gram.y"
1480 {
1481 typed = true;
1482 MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line);
1483 muscle_insert ("stype", (yyvsp[0].chars));
1484 }
1485 break;
1486
1487 case 33:
1488 #line 236 "parse-gram.y"
1489 {
1490 symbol_list *list;
1491 for (list = (yyvsp[0].list); list; list = list->next)
1492 symbol_destructor_set (list->sym, (yyvsp[-1].chars), (yylsp[-1]));
1493 symbol_list_free ((yyvsp[0].list));
1494 }
1495 break;
1496
1497 case 34:
1498 #line 243 "parse-gram.y"
1499 {
1500 symbol_list *list;
1501 for (list = (yyvsp[0].list); list; list = list->next)
1502 symbol_printer_set (list->sym, (yyvsp[-1].chars), list->location);
1503 symbol_list_free ((yyvsp[0].list));
1504 }
1505 break;
1506
1507 case 35:
1508 #line 250 "parse-gram.y"
1509 {
1510 default_prec = true;
1511 }
1512 break;
1513
1514 case 36:
1515 #line 254 "parse-gram.y"
1516 {
1517 default_prec = false;
1518 }
1519 break;
1520
1521 case 37:
1522 #line 260 "parse-gram.y"
1523 { current_class = nterm_sym; }
1524 break;
1525
1526 case 38:
1527 #line 261 "parse-gram.y"
1528 {
1529 current_class = unknown_sym;
1530 current_type = NULL;
1531 }
1532 break;
1533
1534 case 39:
1535 #line 265 "parse-gram.y"
1536 { current_class = token_sym; }
1537 break;
1538
1539 case 40:
1540 #line 266 "parse-gram.y"
1541 {
1542 current_class = unknown_sym;
1543 current_type = NULL;
1544 }
1545 break;
1546
1547 case 41:
1548 #line 271 "parse-gram.y"
1549 {
1550 symbol_list *list;
1551 for (list = (yyvsp[0].list); list; list = list->next)
1552 symbol_type_set (list->sym, (yyvsp[-1].uniqstr), (yylsp[-1]));
1553 symbol_list_free ((yyvsp[0].list));
1554 }
1555 break;
1556
1557 case 42:
1558 #line 281 "parse-gram.y"
1559 {
1560 symbol_list *list;
1561 ++current_prec;
1562 for (list = (yyvsp[0].list); list; list = list->next)
1563 {
1564 symbol_type_set (list->sym, current_type, (yylsp[-1]));
1565 symbol_precedence_set (list->sym, current_prec, (yyvsp[-2].assoc), (yylsp[-2]));
1566 }
1567 symbol_list_free ((yyvsp[0].list));
1568 current_type = NULL;
1569 }
1570 break;
1571
1572 case 43:
1573 #line 295 "parse-gram.y"
1574 { (yyval.assoc) = left_assoc; }
1575 break;
1576
1577 case 44:
1578 #line 296 "parse-gram.y"
1579 { (yyval.assoc) = right_assoc; }
1580 break;
1581
1582 case 45:
1583 #line 297 "parse-gram.y"
1584 { (yyval.assoc) = non_assoc; }
1585 break;
1586
1587 case 46:
1588 #line 301 "parse-gram.y"
1589 { current_type = NULL; }
1590 break;
1591
1592 case 47:
1593 #line 302 "parse-gram.y"
1594 { current_type = (yyvsp[0].uniqstr); }
1595 break;
1596
1597 case 48:
1598 #line 308 "parse-gram.y"
1599 { (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); }
1600 break;
1601
1602 case 49:
1603 #line 309 "parse-gram.y"
1604 { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); }
1605 break;
1606
1607 case 50:
1608 #line 315 "parse-gram.y"
1609 {
1610 current_type = (yyvsp[0].uniqstr);
1611 }
1612 break;
1613
1614 case 51:
1615 #line 319 "parse-gram.y"
1616 {
1617 symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]));
1618 symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
1619 }
1620 break;
1621
1622 case 52:
1623 #line 324 "parse-gram.y"
1624 {
1625 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
1626 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
1627 symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
1628 }
1629 break;
1630
1631 case 53:
1632 #line 330 "parse-gram.y"
1633 {
1634 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
1635 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
1636 symbol_make_alias ((yyvsp[-1].symbol), (yyvsp[0].symbol), (yyloc));
1637 }
1638 break;
1639
1640 case 54:
1641 #line 336 "parse-gram.y"
1642 {
1643 symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]));
1644 symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
1645 symbol_user_token_number_set ((yyvsp[-2].symbol), (yyvsp[-1].integer), (yylsp[-1]));
1646 symbol_make_alias ((yyvsp[-2].symbol), (yyvsp[0].symbol), (yyloc));
1647 }
1648 break;
1649
1650 case 60:
1651 #line 365 "parse-gram.y"
1652 {
1653 if (yacc_flag)
1654 complain_at ((yyloc), _("POSIX forbids declarations in the grammar"));
1655 }
1656 break;
1657
1658 case 61:
1659 #line 370 "parse-gram.y"
1660 {
1661 yyerrok;
1662 }
1663 break;
1664
1665 case 62:
1666 #line 376 "parse-gram.y"
1667 { current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); }
1668 break;
1669
1670 case 64:
1671 #line 380 "parse-gram.y"
1672 { grammar_rule_end ((yylsp[0])); }
1673 break;
1674
1675 case 65:
1676 #line 381 "parse-gram.y"
1677 { grammar_rule_end ((yylsp[0])); }
1678 break;
1679
1680 case 67:
1681 #line 387 "parse-gram.y"
1682 { grammar_rule_begin (current_lhs, current_lhs_location); }
1683 break;
1684
1685 case 68:
1686 #line 389 "parse-gram.y"
1687 { grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); }
1688 break;
1689
1690 case 69:
1691 #line 391 "parse-gram.y"
1692 { grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); }
1693 break;
1694
1695 case 70:
1696 #line 393 "parse-gram.y"
1697 { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
1698 break;
1699
1700 case 71:
1701 #line 395 "parse-gram.y"
1702 { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
1703 break;
1704
1705 case 72:
1706 #line 397 "parse-gram.y"
1707 { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
1708 break;
1709
1710 case 73:
1711 #line 401 "parse-gram.y"
1712 { (yyval.symbol) = (yyvsp[0].symbol); }
1713 break;
1714
1715 case 74:
1716 #line 402 "parse-gram.y"
1717 { (yyval.symbol) = (yyvsp[0].symbol); }
1718 break;
1719
1720 case 75:
1721 #line 407 "parse-gram.y"
1722 { (yyval.chars) = (yyvsp[0].chars); }
1723 break;
1724
1725 case 76:
1726 #line 413 "parse-gram.y"
1727 {
1728 (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
1729 symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]));
1730 }
1731 break;
1732
1733 case 77:
1734 #line 422 "parse-gram.y"
1735 { (yyval.chars) = (yyvsp[0].chars); }
1736 break;
1737
1738 case 79:
1739 #line 429 "parse-gram.y"
1740 {
1741 muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0]));
1742 scanner_last_string_free ();
1743 }
1744 break;
1745
1746
1747 default: break;
1748 }
1749
1750 /* Line 1056 of yacc.c. */
1751 #line 1752 "parse-gram.c"
1752 \f
1753 yyvsp -= yylen;
1754 yyssp -= yylen;
1755 yylsp -= yylen;
1756
1757 YY_STACK_PRINT (yyss, yyssp);
1758
1759 *++yyvsp = yyval;
1760 *++yylsp = yyloc;
1761
1762 /* Now `shift' the result of the reduction. Determine what state
1763 that goes to, based on the state we popped back to and the rule
1764 number reduced by. */
1765
1766 yyn = yyr1[yyn];
1767
1768 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1769 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1770 yystate = yytable[yystate];
1771 else
1772 yystate = yydefgoto[yyn - YYNTOKENS];
1773
1774 goto yynewstate;
1775
1776
1777 /*------------------------------------.
1778 | yyerrlab -- here on detecting error |
1779 `------------------------------------*/
1780 yyerrlab:
1781 /* If not already recovering from an error, report this error. */
1782 if (!yyerrstatus)
1783 {
1784 ++yynerrs;
1785 #if YYERROR_VERBOSE
1786 yyn = yypact[yystate];
1787
1788 if (YYPACT_NINF < yyn && yyn < YYLAST)
1789 {
1790 int yytype = YYTRANSLATE (yychar);
1791 YYSIZE_T yysize0 = yystrlen (yytname[yytype]);
1792 YYSIZE_T yysize = yysize0;
1793 YYSIZE_T yysize1;
1794 int yysize_overflow = 0;
1795 char *yymsg = 0;
1796 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1797 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1798 int yyx;
1799
1800 #if 0
1801 /* This is so xgettext sees the translatable formats that are
1802 constructed on the fly. */
1803 _("syntax error, unexpected %s");
1804 _("syntax error, unexpected %s, expecting %s");
1805 _("syntax error, unexpected %s, expecting %s or %s");
1806 _("syntax error, unexpected %s, expecting %s or %s or %s");
1807 _("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1808 #endif
1809 char *yyfmt;
1810 char const *yyf;
1811 static char const yyunexpected[] = "syntax error, unexpected %s";
1812 static char const yyexpecting[] = ", expecting %s";
1813 static char const yyor[] = " or %s";
1814 char yyformat[sizeof yyunexpected
1815 + sizeof yyexpecting - 1
1816 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1817 * (sizeof yyor - 1))];
1818 char const *yyprefix = yyexpecting;
1819
1820 /* Start YYX at -YYN if negative to avoid negative indexes in
1821 YYCHECK. */
1822 int yyxbegin = yyn < 0 ? -yyn : 0;
1823
1824 /* Stay within bounds of both yycheck and yytname. */
1825 int yychecklim = YYLAST - yyn;
1826 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1827 int yycount = 1;
1828
1829 yyarg[0] = yytname[yytype];
1830 yyfmt = yystpcpy (yyformat, yyunexpected);
1831
1832 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1833 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1834 {
1835 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1836 {
1837 yycount = 1;
1838 yysize = yysize0;
1839 yyformat[sizeof yyunexpected - 1] = '\0';
1840 break;
1841 }
1842 yyarg[yycount++] = yytname[yyx];
1843 yysize1 = yysize + yystrlen (yytname[yyx]);
1844 yysize_overflow |= yysize1 < yysize;
1845 yysize = yysize1;
1846 yyfmt = yystpcpy (yyfmt, yyprefix);
1847 yyprefix = yyor;
1848 }
1849
1850 yyf = _(yyformat);
1851 yysize1 = yysize + strlen (yyf);
1852 yysize_overflow |= yysize1 < yysize;
1853 yysize = yysize1;
1854
1855 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
1856 yymsg = (char *) YYSTACK_ALLOC (yysize);
1857 if (yymsg)
1858 {
1859 /* Avoid sprintf, as that infringes on the user's name space.
1860 Don't have undefined behavior even if the translation
1861 produced a string with the wrong number of "%s"s. */
1862 char *yyp = yymsg;
1863 int yyi = 0;
1864 while ((*yyp = *yyf))
1865 {
1866 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1867 {
1868 yyp = yystpcpy (yyp, yyarg[yyi++]);
1869 yyf += 2;
1870 }
1871 else
1872 {
1873 yyp++;
1874 yyf++;
1875 }
1876 }
1877 yyerror (yymsg);
1878 YYSTACK_FREE (yymsg);
1879 }
1880 else
1881 yyerror (_("syntax error; also memory exhausted"));
1882 }
1883 else
1884 #endif /* YYERROR_VERBOSE */
1885 yyerror (_("syntax error"));
1886 }
1887
1888 yyerror_range[0] = yylloc;
1889
1890 if (yyerrstatus == 3)
1891 {
1892 /* If just tried and failed to reuse look-ahead token after an
1893 error, discard it. */
1894
1895 if (yychar <= YYEOF)
1896 {
1897 /* If at end of input, pop the error token,
1898 then the rest of the stack, then return failure. */
1899 if (yychar == YYEOF)
1900 YYABORT;
1901 }
1902 else
1903 {
1904 yydestruct (_("Error: discarding"), yytoken, &yylval, &yylloc);
1905 yychar = YYEMPTY;
1906 }
1907 }
1908
1909 /* Else will try to reuse look-ahead token after shifting the error
1910 token. */
1911 goto yyerrlab1;
1912
1913
1914 /*---------------------------------------------------.
1915 | yyerrorlab -- error raised explicitly by YYERROR. |
1916 `---------------------------------------------------*/
1917 yyerrorlab:
1918
1919 /* Pacify compilers like GCC when the user code never invokes
1920 YYERROR and the label yyerrorlab therefore never appears in user
1921 code. */
1922 if (0)
1923 goto yyerrorlab;
1924
1925 yyerror_range[0] = yylsp[1-yylen];
1926 yylsp -= yylen;
1927 yyvsp -= yylen;
1928 yyssp -= yylen;
1929 yystate = *yyssp;
1930 goto yyerrlab1;
1931
1932
1933 /*-------------------------------------------------------------.
1934 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1935 `-------------------------------------------------------------*/
1936 yyerrlab1:
1937 yyerrstatus = 3; /* Each real token shifted decrements this. */
1938
1939 for (;;)
1940 {
1941 yyn = yypact[yystate];
1942 if (yyn != YYPACT_NINF)
1943 {
1944 yyn += YYTERROR;
1945 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1946 {
1947 yyn = yytable[yyn];
1948 if (0 < yyn)
1949 break;
1950 }
1951 }
1952
1953 /* Pop the current state because it cannot handle the error token. */
1954 if (yyssp == yyss)
1955 YYABORT;
1956
1957 yyerror_range[0] = *yylsp;
1958 yydestruct (_("Error: popping"), yystos[yystate], yyvsp, yylsp);
1959 YYPOPSTACK;
1960 yystate = *yyssp;
1961 YY_STACK_PRINT (yyss, yyssp);
1962 }
1963
1964 if (yyn == YYFINAL)
1965 YYACCEPT;
1966
1967 *++yyvsp = yylval;
1968
1969 yyerror_range[1] = yylloc;
1970 /* Using YYLLOC is tempting, but would change the location of
1971 the look-ahead. YYLOC is available though. */
1972 YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
1973 *++yylsp = yyloc;
1974
1975 /* Shift the error token. */
1976 YY_SYMBOL_PRINT (_("Shifting"), yystos[yyn], yyvsp, yylsp);
1977
1978 yystate = yyn;
1979 goto yynewstate;
1980
1981
1982 /*-------------------------------------.
1983 | yyacceptlab -- YYACCEPT comes here. |
1984 `-------------------------------------*/
1985 yyacceptlab:
1986 yyresult = 0;
1987 goto yyreturn;
1988
1989 /*-----------------------------------.
1990 | yyabortlab -- YYABORT comes here. |
1991 `-----------------------------------*/
1992 yyabortlab:
1993 yyresult = 1;
1994 goto yyreturn;
1995
1996 #ifndef yyoverflow
1997 /*----------------------------------------------.
1998 | yyoverflowlab -- parser overflow comes here. |
1999 `----------------------------------------------*/
2000 yyoverflowlab:
2001 yyerror (_("parser stack overflow"));
2002 yyresult = 2;
2003 /* Fall through. */
2004 #endif
2005
2006 yyreturn:
2007 if (yychar != YYEOF && yychar != YYEMPTY)
2008 yydestruct (_("Error: discarding lookahead"),
2009 yytoken, &yylval, &yylloc);
2010 if (yyssp != yyss)
2011 for (;;)
2012 {
2013 yyerror_range[0] = *yylsp;
2014 YYPOPSTACK;
2015 if (yyssp == yyss)
2016 break;
2017 yydestruct (_("Error: popping"),
2018 yystos[*yyssp], yyvsp, yylsp);
2019 }
2020 #ifndef yyoverflow
2021 if (yyss != yyssa)
2022 YYSTACK_FREE (yyss);
2023 #endif
2024 return yyresult;
2025 }
2026
2027
2028 #line 435 "parse-gram.y"
2029
2030
2031
2032 /* Return the location of the left-hand side of a rule whose
2033 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2034 the right-hand side, and return an empty location equal to the end
2035 boundary of RHS[0] if the right-hand side is empty. */
2036
2037 static YYLTYPE
2038 lloc_default (YYLTYPE const *rhs, int n)
2039 {
2040 int i;
2041 YYLTYPE loc;
2042
2043 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
2044 The bug is fixed in 7.4.2m, but play it safe for now. */
2045 loc.start = rhs[n].end;
2046 loc.end = rhs[n].end;
2047
2048 /* Ignore empty nonterminals the start of the the right-hand side.
2049 Do not bother to ignore them at the end of the right-hand side,
2050 since empty nonterminals have the same end as their predecessors. */
2051 for (i = 1; i <= n; i++)
2052 if (! equal_boundaries (rhs[i].start, rhs[i].end))
2053 {
2054 loc.start = rhs[i].start;
2055 break;
2056 }
2057
2058 return loc;
2059 }
2060
2061
2062 /* Add a lex-param or a parse-param (depending on TYPE) with
2063 declaration DECL and location LOC. */
2064
2065 static void
2066 add_param (char const *type, char *decl, location loc)
2067 {
2068 static char const alphanum[26 + 26 + 1 + 10] =
2069 "abcdefghijklmnopqrstuvwxyz"
2070 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2071 "_"
2072 "0123456789";
2073 char const *name_start = NULL;
2074 char *p;
2075
2076 /* Stop on last actual character. */
2077 for (p = decl; p[1]; p++)
2078 if ((p == decl
2079 || ! memchr (alphanum, p[-1], sizeof alphanum))
2080 && memchr (alphanum, p[0], sizeof alphanum - 10))
2081 name_start = p;
2082
2083 /* Strip the surrounding '{' and '}', and any blanks just inside
2084 the braces. */
2085 while (*--p == ' ' || *p == '\t')
2086 continue;
2087 p[1] = '\0';
2088 while (*++decl == ' ' || *decl == '\t')
2089 continue;
2090
2091 if (! name_start)
2092 complain_at (loc, _("missing identifier in parameter declaration"));
2093 else
2094 {
2095 char *name;
2096 size_t name_len;
2097
2098 for (name_len = 1;
2099 memchr (alphanum, name_start[name_len], sizeof alphanum);
2100 name_len++)
2101 continue;
2102
2103 name = xmalloc (name_len + 1);
2104 memcpy (name, name_start, name_len);
2105 name[name_len] = '\0';
2106 muscle_pair_list_grow (type, decl, name);
2107 free (name);
2108 }
2109
2110 scanner_last_string_free ();
2111 }
2112
2113 /*----------------------------------------------------.
2114 | When debugging the parser, display tokens' values. |
2115 `----------------------------------------------------*/
2116
2117 static void
2118 print_token_value (FILE *file, int type, YYSTYPE const *value)
2119 {
2120 fputc (' ', file);
2121 switch (type)
2122 {
2123 case ID:
2124 fprintf (file, " = %s", value->symbol->tag);
2125 break;
2126
2127 case INT:
2128 fprintf (file, " = %d", value->integer);
2129 break;
2130
2131 case STRING:
2132 fprintf (file, " = \"%s\"", value->chars);
2133 break;
2134
2135 case TYPE:
2136 fprintf (file, " = <%s>", value->uniqstr);
2137 break;
2138
2139 case BRACED_CODE:
2140 case PERCENT_DESTRUCTOR:
2141 case PERCENT_LEX_PARAM:
2142 case PERCENT_PARSE_PARAM:
2143 case PERCENT_PRINTER:
2144 case PERCENT_UNION:
2145 case PROLOGUE:
2146 case EPILOGUE:
2147 fprintf (file, " = {{ %s }}", value->chars);
2148 break;
2149
2150 default:
2151 fprintf (file, "unknown token type");
2152 break;
2153 }
2154 }
2155
2156 static void
2157 gram_error (location const *loc, char const *msg)
2158 {
2159 complain_at (*loc, "%s", msg);
2160 }
2161
2162 char const *
2163 token_name (int type)
2164 {
2165 return yytname[type];
2166 }
2167