1 /* A Bison parser, made by GNU Bison 1.875b.  */ 
   3 /* Skeleton parser for Yacc-like parsing with Bison, 
   4    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 
   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) 
  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. 
  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., 59 Temple Place - Suite 330, 
  19    Boston, MA 02111-1307, USA.  */ 
  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.  */ 
  26 /* Written by Richard Stallman by simplifying the original so called 
  27    ``semantic'' parser.  */ 
  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.  */ 
  36 /* Identify Bison output.  */ 
  40 #define YYSKELETON_NAME "yacc.c" 
  45 /* Using locations.  */ 
  46 #define YYLSP_NEEDED 1 
  48 /* If NAME_PREFIX is specified substitute the variables and functions 
  50 #define yyparse gram_parse 
  51 #define yylex   gram_lex 
  52 #define yyerror gram_error 
  53 #define yylval  gram_lval 
  54 #define yychar  gram_char 
  55 #define yydebug gram_debug 
  56 #define yynerrs gram_nerrs 
  57 #define yylloc gram_lloc 
  62    /* Put the tokens into the symbol table, so that GDB and other debuggers 
  71      PERCENT_DESTRUCTOR 
= 263, 
  72      PERCENT_PRINTER 
= 264, 
  76      PERCENT_NONASSOC 
= 268, 
  82      PERCENT_DEFINES 
= 274, 
  83      PERCENT_ERROR_VERBOSE 
= 275, 
  85      PERCENT_FILE_PREFIX 
= 277, 
  86      PERCENT_GLR_PARSER 
= 278, 
  87      PERCENT_LEX_PARAM 
= 279, 
  88      PERCENT_LOCATIONS 
= 280, 
  89      PERCENT_NAME_PREFIX 
= 281, 
  90      PERCENT_NO_LINES 
= 282, 
  91      PERCENT_NONDETERMINISTIC_PARSER 
= 283, 
  93      PERCENT_PARSE_PARAM 
= 285, 
  94      PERCENT_PURE_PARSER 
= 286, 
  95      PERCENT_SKELETON 
= 287, 
  97      PERCENT_TOKEN_TABLE 
= 289, 
  98      PERCENT_VERBOSE 
= 290, 
 106      PERCENT_PERCENT 
= 298, 
 115 #define PERCENT_TOKEN 260 
 116 #define PERCENT_NTERM 261 
 117 #define PERCENT_TYPE 262 
 118 #define PERCENT_DESTRUCTOR 263 
 119 #define PERCENT_PRINTER 264 
 120 #define PERCENT_UNION 265 
 121 #define PERCENT_LEFT 266 
 122 #define PERCENT_RIGHT 267 
 123 #define PERCENT_NONASSOC 268 
 124 #define PERCENT_PREC 269 
 125 #define PERCENT_DPREC 270 
 126 #define PERCENT_MERGE 271 
 127 #define PERCENT_DEBUG 272 
 128 #define PERCENT_DEFINE 273 
 129 #define PERCENT_DEFINES 274 
 130 #define PERCENT_ERROR_VERBOSE 275 
 131 #define PERCENT_EXPECT 276 
 132 #define PERCENT_FILE_PREFIX 277 
 133 #define PERCENT_GLR_PARSER 278 
 134 #define PERCENT_LEX_PARAM 279 
 135 #define PERCENT_LOCATIONS 280 
 136 #define PERCENT_NAME_PREFIX 281 
 137 #define PERCENT_NO_LINES 282 
 138 #define PERCENT_NONDETERMINISTIC_PARSER 283 
 139 #define PERCENT_OUTPUT 284 
 140 #define PERCENT_PARSE_PARAM 285 
 141 #define PERCENT_PURE_PARSER 286 
 142 #define PERCENT_SKELETON 287 
 143 #define PERCENT_START 288 
 144 #define PERCENT_TOKEN_TABLE 289 
 145 #define PERCENT_VERBOSE 290 
 146 #define PERCENT_YACC 291 
 149 #define SEMICOLON 294 
 153 #define PERCENT_PERCENT 298 
 156 #define BRACED_CODE 301 
 161 /* Copy the first part of user declarations.  */ 
 162 #line 32 "parse-gram.y" 
 166 #include "complain.h" 
 167 #include "conflicts.h" 
 171 #include "muscle_tab.h" 
 176 /* Produce verbose syntax errors.  */ 
 177 #define YYERROR_VERBOSE 1 
 179 #define YYLLOC_DEFAULT(Current, Rhs, N)  (Current) = lloc_default (Rhs, N) 
 180 static YYLTYPE 
lloc_default (YYLTYPE 
const *, int); 
 182 /* Request detailed syntax error messages, and pass them to GRAM_ERROR. 
 183    FIXME: depends on the undocumented availability of YYLLOC.  */ 
 185 #define yyerror(Msg) \ 
 186         gram_error (&yylloc, Msg) 
 187 static void gram_error (location 
const *, char const *); 
 189 #define YYPRINT(File, Type, Value) \ 
 190         print_token_value (File, Type, &Value) 
 191 static void print_token_value (FILE *, int, YYSTYPE 
const *); 
 193 static void add_param (char const *, char *, location
); 
 195 symbol_class current_class 
= unknown_sym
; 
 196 uniqstr current_type 
= 0; 
 198 location current_lhs_location
; 
 200 int current_prec 
= 0; 
 203 /* Enabling traces.  */ 
 208 /* Enabling verbose error messages.  */ 
 209 #ifdef YYERROR_VERBOSE 
 210 # undef YYERROR_VERBOSE 
 211 # define YYERROR_VERBOSE 1 
 213 # define YYERROR_VERBOSE 0 
 216 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) 
 217 #line 75 "parse-gram.y" 
 218 typedef union YYSTYPE 
{ 
 226 /* Line 191 of yacc.c.  */ 
 227 #line 228 "parse-gram.c" 
 228 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 
 229 # define YYSTYPE_IS_DECLARED 1 
 230 # define YYSTYPE_IS_TRIVIAL 1 
 233 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) 
 234 typedef struct YYLTYPE
 
 241 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ 
 242 # define YYLTYPE_IS_DECLARED 1 
 243 # define YYLTYPE_IS_TRIVIAL 1 
 247 /* Copy the second part of user declarations.  */ 
 250 /* Line 214 of yacc.c.  */ 
 251 #line 252 "parse-gram.c" 
 253 #if ! defined (yyoverflow) || YYERROR_VERBOSE 
 255 /* The parser invokes alloca or malloc; define the necessary symbols.  */ 
 257 # ifdef YYSTACK_USE_ALLOCA 
 258 #  if YYSTACK_USE_ALLOCA 
 259 #   define YYSTACK_ALLOC alloca 
 262 #  if defined (alloca) || defined (_ALLOCA_H) 
 263 #   define YYSTACK_ALLOC alloca 
 266 #    define YYSTACK_ALLOC __builtin_alloca 
 271 # ifdef YYSTACK_ALLOC 
 272    /* Pacify GCC's `empty if-body' warning. */ 
 273 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 
 275 #  if defined (__STDC__) || defined (__cplusplus) 
 276 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 
 277 #   define YYSIZE_T size_t 
 279 #  define YYSTACK_ALLOC malloc 
 280 #  define YYSTACK_FREE free 
 282 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ 
 285 #if (! defined (yyoverflow) \ 
 286      && (! defined (__cplusplus) \ 
 287          || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ 
 288              && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) 
 290 /* A type that is properly aligned for any stack member.  */ 
 298 /* The size of the maximum gap between one aligned stack and the next.  */ 
 299 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 
 301 /* The size of an array large to enough to hold all stacks, each with 
 303 # define YYSTACK_BYTES(N) \ 
 304      ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))      \ 
 305       + 2 * YYSTACK_GAP_MAXIMUM) 
 307 /* Copy COUNT objects from FROM to TO.  The source and destination do 
 310 #  if defined (__GNUC__) && 1 < __GNUC__ 
 311 #   define YYCOPY(To, From, Count) \ 
 312       __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 
 314 #   define YYCOPY(To, From, Count)              \ 
 317           register YYSIZE_T yyi;                \ 
 318           for (yyi = 0; yyi < (Count); yyi++)   \ 
 319             (To)[yyi] = (From)[yyi];            \ 
 325 /* Relocate STACK from its old location to the new one.  The 
 326    local variables YYSIZE and YYSTACKSIZE give the old and new number of 
 327    elements in the stack, and YYPTR gives the new location of the 
 328    stack.  Advance YYPTR to a properly aligned location for the next 
 330 # define YYSTACK_RELOCATE(Stack)                                        \ 
 333         YYSIZE_T yynewbytes;                                            \ 
 334         YYCOPY (&yyptr->Stack, Stack, yysize);                          \ 
 335         Stack = &yyptr->Stack;                                          \ 
 336         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 
 337         yyptr += yynewbytes / sizeof (*yyptr);                          \ 
 343 #if defined (__STDC__) || defined (__cplusplus) 
 344    typedef signed char yysigned_char
; 
 346    typedef short yysigned_char
; 
 349 /* YYFINAL -- State number of the termination state. */ 
 351 /* YYLAST -- Last index in YYTABLE.  */ 
 354 /* YYNTOKENS -- Number of terminals. */ 
 356 /* YYNNTS -- Number of nonterminals. */ 
 358 /* YYNRULES -- Number of rules. */ 
 360 /* YYNRULES -- Number of states. */ 
 361 #define YYNSTATES  103 
 363 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */ 
 365 #define YYMAXUTOK   301 
 367 #define YYTRANSLATE(YYX)                                                \ 
 368   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 
 370 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */ 
 371 static const unsigned char yytranslate
[] = 
 373        0,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 374        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 375        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 376        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 377        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 378        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 379        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 380        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 381        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 382        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 383        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 384        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 385        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 386        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 387        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 388        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 389        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 390        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 391        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 392        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 393        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 394        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 395        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 396        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 397        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, 
 398        2,     2,     2,     2,     2,     2,     1,     2,     3,     4, 
 399        5,     6,     7,     8,     9,    10,    11,    12,    13,    14, 
 400       15,    16,    17,    18,    19,    20,    21,    22,    23,    24, 
 401       25,    26,    27,    28,    29,    30,    31,    32,    33,    34, 
 402       35,    36,    37,    38,    39,    40,    41,    42,    43,    44, 
 407 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 
 409 static const unsigned char yyprhs
[] = 
 411        0,     0,     3,     8,     9,    12,    14,    16,    18,    22, 
 412       24,    26,    29,    33,    35,    37,    39,    43,    45,    47, 
 413       51,    53,    55,    58,    60,    62,    64,    66,    68,    70, 
 414       73,    75,    78,    81,    82,    86,    87,    91,    95,    99, 
 415      101,   103,   105,   106,   108,   110,   113,   115,   117,   120, 
 416      123,   127,   129,   132,   134,   137,   139,   142,   145,   146, 
 417      150,   152,   156,   159,   160,   163,   166,   170,   174,   178, 
 418      180,   182,   184,   186,   188,   189 
 421 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 
 422 static const yysigned_char yyrhs
[] = 
 424       48,     0,    -1,    49,    43,    61,    71,    -1,    -1,    49, 
 425       50,    -1,    51,    -1,    44,    -1,    17,    -1,    18,    70, 
 426       70,    -1,    19,    -1,    20,    -1,    21,     4,    -1,    22, 
 427       38,    70,    -1,    23,    -1,    24,    -1,    25,    -1,    26, 
 428       38,    70,    -1,    27,    -1,    28,    -1,    29,    38,    70, 
 429       -1,    30,    -1,    31,    -1,    32,    70,    -1,    34,    -1, 
 430       35,    -1,    36,    -1,    39,    -1,    55,    -1,    52,    -1, 
 431       33,    67,    -1,    10,    -1,     8,    58,    -1,     9,    58, 
 432       -1,    -1,     6,    53,    60,    -1,    -1,     5,    54,    60, 
 433       -1,     7,    37,    58,    -1,    56,    57,    58,    -1,    11, 
 434       -1,    12,    -1,    13,    -1,    -1,    37,    -1,    67,    -1, 
 435       58,    67,    -1,    37,    -1,    41,    -1,    41,     4,    -1, 
 436       41,    69,    -1,    41,     4,    69,    -1,    59,    -1,    60, 
 437       59,    -1,    62,    -1,    61,    62,    -1,    63,    -1,    51, 
 438       39,    -1,     1,    39,    -1,    -1,    42,    64,    65,    -1, 
 439       66,    -1,    65,    40,    66,    -1,    65,    39,    -1,    -1, 
 440       66,    67,    -1,    66,    68,    -1,    66,    14,    67,    -1, 
 441       66,    15,     4,    -1,    66,    16,    37,    -1,    41,    -1, 
 442       69,    -1,    46,    -1,     3,    -1,     3,    -1,    -1,    43, 
 446 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ 
 447 static const unsigned short yyrline
[] = 
 449        0,   162,   162,   170,   172,   176,   177,   178,   179,   180, 
 450      181,   182,   183,   184,   186,   187,   188,   189,   190,   191, 
 451      192,   193,   194,   195,   196,   197,   198,   202,   203,   204, 
 452      208,   214,   221,   231,   231,   236,   236,   241,   251,   266, 
 453      267,   268,   272,   273,   279,   280,   285,   289,   294,   300, 
 454      306,   317,   318,   327,   328,   334,   335,   340,   347,   347, 
 455      351,   352,   353,   358,   359,   361,   363,   365,   367,   372, 
 456      373,   377,   383,   392,   399,   401 
 460 #if YYDEBUG || YYERROR_VERBOSE 
 461 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 
 462    First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 
 463 static const char *const yytname
[] = 
 465   "\"end of file\"", "error", "$undefined", "\"string\"", "\"integer\"", 
 466   "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor {...}\"", 
 467   "\"%printer {...}\"", "\"%union {...}\"", "\"%left\"", "\"%right\"", 
 468   "\"%nonassoc\"", "\"%prec\"", "\"%dprec\"", "\"%merge\"", "\"%debug\"", 
 469   "\"%define\"", "\"%defines\"", "\"%error-verbose\"", "\"%expect\"", 
 470   "\"%file-prefix\"", "\"%glr-parser\"", "\"%lex-param {...}\"", 
 471   "\"%locations\"", "\"%name-prefix\"", "\"%no-lines\"", 
 472   "\"%nondeterministic-parser\"", "\"%output\"", "\"%parse-param {...}\"", 
 473   "\"%pure-parser\"", "\"%skeleton\"", "\"%start\"", "\"%token-table\"", 
 474   "\"%verbose\"", "\"%yacc\"", "\"type\"", "\"=\"", "\";\"", "\"|\"", 
 475   "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"%{...%}\"", 
 476   "\"epilogue\"", "\"{...}\"", "$accept", "input", "declarations", 
 477   "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2", 
 478   "precedence_declaration", "precedence_declarator", "type.opt", 
 479   "symbols.1", "symbol_def", "symbol_defs.1", "grammar", 
 480   "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs", 
 481   "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0 
 486 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 
 488 static const unsigned short yytoknum
[] = 
 490        0,   256,   257,   258,   259,   260,   261,   262,   263,   264, 
 491      265,   266,   267,   268,   269,   270,   271,   272,   273,   274, 
 492      275,   276,   277,   278,   279,   280,   281,   282,   283,   284, 
 493      285,   286,   287,   288,   289,   290,   291,   292,   293,   294, 
 494      295,   296,   297,   298,   299,   300,   301 
 498 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ 
 499 static const unsigned char yyr1
[] = 
 501        0,    47,    48,    49,    49,    50,    50,    50,    50,    50, 
 502       50,    50,    50,    50,    50,    50,    50,    50,    50,    50, 
 503       50,    50,    50,    50,    50,    50,    50,    51,    51,    51, 
 504       51,    51,    51,    53,    52,    54,    52,    52,    55,    56, 
 505       56,    56,    57,    57,    58,    58,    59,    59,    59,    59, 
 506       59,    60,    60,    61,    61,    62,    62,    62,    64,    63, 
 507       65,    65,    65,    66,    66,    66,    66,    66,    66,    67, 
 508       67,    68,    69,    70,    71,    71 
 511 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ 
 512 static const unsigned char yyr2
[] = 
 514        0,     2,     4,     0,     2,     1,     1,     1,     3,     1, 
 515        1,     2,     3,     1,     1,     1,     3,     1,     1,     3, 
 516        1,     1,     2,     1,     1,     1,     1,     1,     1,     2, 
 517        1,     2,     2,     0,     3,     0,     3,     3,     3,     1, 
 518        1,     1,     0,     1,     1,     2,     1,     1,     2,     2, 
 519        3,     1,     2,     1,     2,     1,     2,     2,     0,     3, 
 520        1,     3,     2,     0,     2,     2,     3,     3,     3,     1, 
 524 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 
 525    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero 
 526    means the default is an error.  */ 
 527 static const unsigned char yydefact
[] = 
 529        3,     0,     0,     1,    35,    33,     0,     0,     0,    30, 
 530       39,    40,    41,     7,     0,     9,    10,     0,     0,    13, 
 531       14,    15,     0,    17,    18,     0,    20,    21,     0,     0, 
 532       23,    24,    25,    26,     0,     6,     4,     5,    28,    27, 
 533       42,     0,     0,     0,    72,    69,    31,    44,    70,    32, 
 534       73,     0,    11,     0,     0,     0,    22,    29,     0,    58, 
 535        0,     0,    53,    55,    43,     0,    46,    47,    51,    36, 
 536       34,    37,    45,     8,    12,    16,    19,    57,    63,    56, 
 537        0,    54,     2,    38,    48,    49,    52,    59,    60,    75, 
 538       50,    62,    63,     0,     0,     0,    71,    64,    65,    61, 
 542 /* YYDEFGOTO[NTERM-NUM]. */ 
 543 static const yysigned_char yydefgoto
[] = 
 545       -1,     1,     2,    36,    60,    38,    42,    41,    39,    40, 
 546       65,    46,    68,    69,    61,    62,    63,    78,    87,    88, 
 550 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 
 552 #define YYPACT_NINF -64 
 553 static const yysigned_char yypact
[] = 
 555      -64,    32,   104,   -64,   -64,   -64,   -21,    16,    16,   -64, 
 556      -64,   -64,   -64,   -64,    30,   -64,   -64,    33,    -4,   -64, 
 557      -64,   -64,     0,   -64,   -64,     1,   -64,   -64,    30,    16, 
 558      -64,   -64,   -64,   -64,    66,   -64,   -64,   -64,   -64,   -64, 
 559        3,   -15,   -15,    16,   -64,   -64,    16,   -64,   -64,    16, 
 560      -64,    30,   -64,    30,    30,    30,   -64,   -64,     4,   -64, 
 561        8,     2,   -64,   -64,   -64,    16,   -64,    21,   -64,   -15, 
 562      -15,    16,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64, 
 563        6,   -64,   -64,    16,    38,   -64,   -64,   -34,    15,   -64, 
 564      -64,   -64,   -64,    16,    48,    18,   -64,   -64,   -64,    15, 
 568 /* YYPGOTO[NTERM-NUM].  */ 
 569 static const yysigned_char yypgoto
[] = 
 571      -64,   -64,   -64,   -64,    51,   -64,   -64,   -64,   -64,   -64, 
 572      -64,    -7,   -42,    20,   -64,    -1,   -64,   -64,   -64,   -27, 
 573      -29,   -64,   -63,    -5,   -64 
 576 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If 
 577    positive, shift that token.  If negative, reduce the rule which 
 578    number is the opposite.  If zero, do what YYDEFACT says. 
 579    If YYTABLE_NINF, syntax error.  */ 
 580 #define YYTABLE_NINF -75 
 581 static const yysigned_char yytable
[] = 
 583       57,    49,   -74,    58,    85,    91,    92,     4,     5,     6, 
 584        7,     8,     9,    10,    11,    12,    43,    72,    44,    44, 
 585       72,    90,    66,    56,    44,    84,    67,    86,    86,    93, 
 586       94,    95,     3,    50,    53,    29,    71,    52,    54,    55, 
 587       64,    44,    72,    77,    59,    80,    73,    79,    74,    75, 
 588       76,    89,   101,    37,    72,   102,    45,    45,    83,    97, 
 589       81,    96,    70,     0,   100,    99,     0,    58,     0,     0, 
 590       97,     4,     5,     6,     7,     8,     9,    10,    11,    12, 
 591        0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
 592        0,     0,     0,     0,     0,     0,     0,     0,     0,    29, 
 593        0,     0,     0,     0,     0,     0,     0,     0,    59,     4, 
 594        5,     6,     7,     8,     9,    10,    11,    12,     0,     0, 
 595        0,    13,    14,    15,    16,    17,    18,    19,    20,    21, 
 596       22,    23,    24,    25,    26,    27,    28,    29,    30,    31, 
 597       32,     0,     0,    33,     0,     0,     0,    34,    35 
 600 static const yysigned_char yycheck
[] = 
 602       29,     8,     0,     1,    67,    39,    40,     5,     6,     7, 
 603        8,     9,    10,    11,    12,    13,    37,    46,     3,     3, 
 604       49,    84,    37,    28,     3,     4,    41,    69,    70,    14, 
 605       15,    16,     0,     3,    38,    33,    43,     4,    38,    38, 
 606       37,     3,    71,    39,    42,    43,    51,    39,    53,    54, 
 607       55,    45,     4,     2,    83,    37,    41,    41,    65,    88, 
 608       61,    46,    42,    -1,    93,    92,    -1,     1,    -1,    -1, 
 609       99,     5,     6,     7,     8,     9,    10,    11,    12,    13, 
 610       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, 
 611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33, 
 612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,     5, 
 613        6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1, 
 614       -1,    17,    18,    19,    20,    21,    22,    23,    24,    25, 
 615       26,    27,    28,    29,    30,    31,    32,    33,    34,    35, 
 616       36,    -1,    -1,    39,    -1,    -1,    -1,    43,    44 
 619 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 
 620    symbol of state STATE-NUM.  */ 
 621 static const unsigned char yystos
[] = 
 623        0,    48,    49,     0,     5,     6,     7,     8,     9,    10, 
 624       11,    12,    13,    17,    18,    19,    20,    21,    22,    23, 
 625       24,    25,    26,    27,    28,    29,    30,    31,    32,    33, 
 626       34,    35,    36,    39,    43,    44,    50,    51,    52,    55, 
 627       56,    54,    53,    37,     3,    41,    58,    67,    69,    58, 
 628        3,    70,     4,    38,    38,    38,    70,    67,     1,    42, 
 629       51,    61,    62,    63,    37,    57,    37,    41,    59,    60, 
 630       60,    58,    67,    70,    70,    70,    70,    39,    64,    39, 
 631       43,    62,    71,    58,     4,    69,    59,    65,    66,    45, 
 632       69,    39,    40,    14,    15,    16,    46,    67,    68,    66, 
 636 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) 
 637 # define YYSIZE_T __SIZE_TYPE__ 
 639 #if ! defined (YYSIZE_T) && defined (size_t) 
 640 # define YYSIZE_T size_t 
 642 #if ! defined (YYSIZE_T) 
 643 # if defined (__STDC__) || defined (__cplusplus) 
 644 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 
 645 #  define YYSIZE_T size_t 
 648 #if ! defined (YYSIZE_T) 
 649 # define YYSIZE_T unsigned int 
 652 #define yyerrok         (yyerrstatus = 0) 
 653 #define yyclearin       (yychar = YYEMPTY) 
 657 #define YYACCEPT        goto yyacceptlab 
 658 #define YYABORT         goto yyabortlab 
 659 #define YYERROR         goto yyerrorlab 
 662 /* Like YYERROR except do call yyerror.  This remains here temporarily 
 663    to ease the transition to the new meaning of YYERROR, for GCC. 
 664    Once GCC version 2 has supplanted version 1, this can go.  */ 
 666 #define YYFAIL          goto yyerrlab 
 668 #define YYRECOVERING()  (!!yyerrstatus) 
 670 #define YYBACKUP(Token, Value)                                  \ 
 672   if (yychar == YYEMPTY && yylen == 1)                          \ 
 676       yytoken = YYTRANSLATE (yychar);                           \ 
 682       yyerror ("syntax error: cannot back up");\ 
 688 #define YYERRCODE       256 
 690 /* YYLLOC_DEFAULT -- Compute the default location (before the actions 
 693 #ifndef YYLLOC_DEFAULT 
 694 # define YYLLOC_DEFAULT(Current, Rhs, N)         \ 
 695   Current.first_line   = Rhs[1].first_line;      \ 
 696   Current.first_column = Rhs[1].first_column;    \ 
 697   Current.last_line    = Rhs[N].last_line;       \ 
 698   Current.last_column  = Rhs[N].last_column; 
 701 /* YYLEX -- calling `yylex' with the right arguments.  */ 
 704 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) 
 706 # define YYLEX yylex (&yylval, &yylloc) 
 709 /* Enable debugging if requested.  */ 
 713 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 
 714 #  define YYFPRINTF fprintf 
 717 # define YYDPRINTF(Args)                        \ 
 723 # define YYDSYMPRINT(Args)                      \ 
 729 # define YYDSYMPRINTF(Title, Token, Value, Location)            \ 
 733       YYFPRINTF (stderr, "%s ", Title);                         \ 
 734       yysymprint (stderr,                                       \ 
 735                   Token, Value, Location);      \ 
 736       YYFPRINTF (stderr, "\n");                                 \ 
 740 /*------------------------------------------------------------------. 
 741 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 
 743 `------------------------------------------------------------------*/ 
 745 #if defined (__STDC__) || defined (__cplusplus) 
 747 yy_stack_print (short *bottom
, short *top
) 
 750 yy_stack_print (bottom
, top
) 
 755   YYFPRINTF (stderr
, "Stack now"); 
 756   for (/* Nothing. */; bottom 
<= top
; ++bottom
) 
 757     YYFPRINTF (stderr
, " %d", *bottom
); 
 758   YYFPRINTF (stderr
, "\n"); 
 761 # define YY_STACK_PRINT(Bottom, Top)                            \ 
 764     yy_stack_print ((Bottom), (Top));                           \ 
 768 /*------------------------------------------------. 
 769 | Report that the YYRULE is going to be reduced.  | 
 770 `------------------------------------------------*/ 
 772 #if defined (__STDC__) || defined (__cplusplus) 
 774 yy_reduce_print (int yyrule
) 
 777 yy_reduce_print (yyrule
) 
 782   unsigned int yylno 
= yyrline
[yyrule
]; 
 783   YYFPRINTF (stderr
, "Reducing stack by rule %d (line %u), ", 
 785   /* Print the symbols being reduced, and their result.  */ 
 786   for (yyi 
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++) 
 787     YYFPRINTF (stderr
, "%s ", yytname 
[yyrhs
[yyi
]]); 
 788   YYFPRINTF (stderr
, "-> %s\n", yytname 
[yyr1
[yyrule
]]); 
 791 # define YY_REDUCE_PRINT(Rule)          \ 
 794     yy_reduce_print (Rule);             \ 
 797 /* Nonzero means print parse trace.  It is left uninitialized so that 
 798    multiple parsers can coexist.  */ 
 801 # define YYDPRINTF(Args) 
 802 # define YYDSYMPRINT(Args) 
 803 # define YYDSYMPRINTF(Title, Token, Value, Location) 
 804 # define YY_STACK_PRINT(Bottom, Top) 
 805 # define YY_REDUCE_PRINT(Rule) 
 806 #endif /* !YYDEBUG */ 
 809 /* YYINITDEPTH -- initial size of the parser's stacks.  */ 
 811 # define YYINITDEPTH 200 
 814 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 
 815    if the built-in stack extension method is used). 
 817    Do not make this value too large; the results are undefined if 
 818    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) 
 819    evaluated with infinite-precision integer arithmetic.  */ 
 821 #if defined (YYMAXDEPTH) && YYMAXDEPTH == 0 
 826 # define YYMAXDEPTH 10000 
 834 #  if defined (__GLIBC__) && defined (_STRING_H) 
 835 #   define yystrlen strlen 
 837 /* Return the length of YYSTR.  */ 
 839 #   if defined (__STDC__) || defined (__cplusplus) 
 840 yystrlen (const char *yystr
) 
 846   register const char *yys 
= yystr
; 
 848   while (*yys
++ != '\0') 
 851   return yys 
- yystr 
- 1; 
 857 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) 
 858 #   define yystpcpy stpcpy 
 860 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 
 863 #   if defined (__STDC__) || defined (__cplusplus) 
 864 yystpcpy (char *yydest
, const char *yysrc
) 
 866 yystpcpy (yydest
, yysrc
) 
 871   register char *yyd 
= yydest
; 
 872   register const char *yys 
= yysrc
; 
 874   while ((*yyd
++ = *yys
++) != '\0') 
 882 #endif /* !YYERROR_VERBOSE */ 
 887 /*--------------------------------. 
 888 | Print this symbol on YYOUTPUT.  | 
 889 `--------------------------------*/ 
 891 #if defined (__STDC__) || defined (__cplusplus) 
 893 yysymprint (FILE *yyoutput
, int yytype
, YYSTYPE 
*yyvaluep
, YYLTYPE 
*yylocationp
) 
 896 yysymprint (yyoutput
, yytype
, yyvaluep
, yylocationp
) 
 900     YYLTYPE 
*yylocationp
; 
 903   /* Pacify ``unused variable'' warnings.  */ 
 907   if (yytype 
< YYNTOKENS
) 
 909       YYFPRINTF (yyoutput
, "token %s (", yytname
[yytype
]); 
 911       YYPRINT (yyoutput
, yytoknum
[yytype
], *yyvaluep
); 
 915     YYFPRINTF (yyoutput
, "nterm %s (", yytname
[yytype
]); 
 922   YYFPRINTF (yyoutput
, ")"); 
 925 #endif /* ! YYDEBUG */ 
 926 /*-----------------------------------------------. 
 927 | Release the memory associated to this symbol.  | 
 928 `-----------------------------------------------*/ 
 930 #if defined (__STDC__) || defined (__cplusplus) 
 932 yydestruct (int yytype
, YYSTYPE 
*yyvaluep
, YYLTYPE 
*yylocationp
) 
 935 yydestruct (yytype
, yyvaluep
, yylocationp
) 
 938     YYLTYPE 
*yylocationp
; 
 941   /* Pacify ``unused variable'' warnings.  */ 
 954 /* Prevent warnings from -Wmissing-prototypes.  */ 
 957 # if defined (__STDC__) || defined (__cplusplus) 
 958 int yyparse (void *YYPARSE_PARAM
); 
 962 #else /* ! YYPARSE_PARAM */ 
 963 #if defined (__STDC__) || defined (__cplusplus) 
 968 #endif /* ! YYPARSE_PARAM */ 
 980 # if defined (__STDC__) || defined (__cplusplus) 
 981 int yyparse (void *YYPARSE_PARAM
) 
 983 int yyparse (YYPARSE_PARAM
) 
 986 #else /* ! YYPARSE_PARAM */ 
 987 #if defined (__STDC__) || defined (__cplusplus) 
 997   /* The lookahead symbol.  */ 
1000 /* The semantic value of the lookahead symbol.  */ 
1003 /* Number of syntax errors so far.  */ 
1005 /* Location data for the lookahead symbol.  */ 
1008   register int yystate
; 
1011   /* Number of tokens to shift before error messages enabled.  */ 
1013   /* Lookahead token as an internal (translated) token number.  */ 
1016   /* Three stacks and their tools: 
1017      `yyss': related to states, 
1018      `yyvs': related to semantic values, 
1019      `yyls': related to locations. 
1021      Refer to the stacks thru separate pointers, to allow yyoverflow 
1022      to reallocate them elsewhere.  */ 
1024   /* The state stack.  */ 
1025   short yyssa
[YYINITDEPTH
]; 
1026   short *yyss 
= yyssa
; 
1027   register short *yyssp
; 
1029   /* The semantic value stack.  */ 
1030   YYSTYPE yyvsa
[YYINITDEPTH
]; 
1031   YYSTYPE 
*yyvs 
= yyvsa
; 
1032   register YYSTYPE 
*yyvsp
; 
1034   /* The location stack.  */ 
1035   YYLTYPE yylsa
[YYINITDEPTH
]; 
1036   YYLTYPE 
*yyls 
= yylsa
; 
1040 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--) 
1042   YYSIZE_T yystacksize 
= YYINITDEPTH
; 
1044   /* The variables used to return semantic value and location from the 
1049   /* When reducing, the number of symbols on the RHS of the reduced 
1053   YYDPRINTF ((stderr
, "Starting parse\n")); 
1058   yychar 
= YYEMPTY
;             /* Cause a token to be read.  */ 
1060   /* Initialize stack pointers. 
1061      Waste one element of value and location stack 
1062      so that they stay on the same level as the state stack. 
1063      The wasted elements are never initialized.  */ 
1070 /*------------------------------------------------------------. 
1071 | yynewstate -- Push a new state, which is found in yystate.  | 
1072 `------------------------------------------------------------*/ 
1074   /* In all cases, when you get here, the value and location stacks 
1075      have just been pushed. so pushing a state here evens the stacks. 
1082   if (yyss 
+ yystacksize 
- 1 <= yyssp
) 
1084       /* Get the current used size of the three stacks, in elements.  */ 
1085       YYSIZE_T yysize 
= yyssp 
- yyss 
+ 1; 
1089         /* Give user a chance to reallocate the stack. Use copies of 
1090            these so that the &'s don't force the real ones into 
1092         YYSTYPE 
*yyvs1 
= yyvs
; 
1093         short *yyss1 
= yyss
; 
1094         YYLTYPE 
*yyls1 
= yyls
; 
1096         /* Each stack pointer address is followed by the size of the 
1097            data in use in that stack, in bytes.  This used to be a 
1098            conditional around just the two extra args, but that might 
1099            be undefined if yyoverflow is a macro.  */ 
1100         yyoverflow ("parser stack overflow", 
1101                     &yyss1
, yysize 
* sizeof (*yyssp
), 
1102                     &yyvs1
, yysize 
* sizeof (*yyvsp
), 
1103                     &yyls1
, yysize 
* sizeof (*yylsp
), 
1109 #else /* no yyoverflow */ 
1110 # ifndef YYSTACK_RELOCATE 
1113       /* Extend the stack our own way.  */ 
1114       if (YYMAXDEPTH 
<= yystacksize
) 
1117       if (YYMAXDEPTH 
< yystacksize
) 
1118         yystacksize 
= YYMAXDEPTH
; 
1121         short *yyss1 
= yyss
; 
1122         union yyalloc 
*yyptr 
= 
1123           (union yyalloc 
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
)); 
1126         YYSTACK_RELOCATE (yyss
); 
1127         YYSTACK_RELOCATE (yyvs
); 
1128         YYSTACK_RELOCATE (yyls
); 
1129 #  undef YYSTACK_RELOCATE 
1131           YYSTACK_FREE (yyss1
); 
1134 #endif /* no yyoverflow */ 
1136       yyssp 
= yyss 
+ yysize 
- 1; 
1137       yyvsp 
= yyvs 
+ yysize 
- 1; 
1138       yylsp 
= yyls 
+ yysize 
- 1; 
1140       YYDPRINTF ((stderr
, "Stack size increased to %lu\n", 
1141                   (unsigned long int) yystacksize
)); 
1143       if (yyss 
+ yystacksize 
- 1 <= yyssp
) 
1147   YYDPRINTF ((stderr
, "Entering state %d\n", yystate
)); 
1156 /* Do appropriate processing given the current state.  */ 
1157 /* Read a lookahead token if we need one and don't already have one.  */ 
1160   /* First try to decide what to do without reference to lookahead token.  */ 
1162   yyn 
= yypact
[yystate
]; 
1163   if (yyn 
== YYPACT_NINF
) 
1166   /* Not known => get a lookahead token if don't already have one.  */ 
1168   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */ 
1169   if (yychar 
== YYEMPTY
) 
1171       YYDPRINTF ((stderr
, "Reading a token: ")); 
1175   if (yychar 
<= YYEOF
) 
1177       yychar 
= yytoken 
= YYEOF
; 
1178       YYDPRINTF ((stderr
, "Now at end of input.\n")); 
1182       yytoken 
= YYTRANSLATE (yychar
); 
1183       YYDSYMPRINTF ("Next token is", yytoken
, &yylval
, &yylloc
); 
1186   /* If the proper action on seeing token YYTOKEN is to reduce or to 
1187      detect an error, take that action.  */ 
1189   if (yyn 
< 0 || YYLAST 
< yyn 
|| yycheck
[yyn
] != yytoken
) 
1194       if (yyn 
== 0 || yyn 
== YYTABLE_NINF
) 
1203   /* Shift the lookahead token.  */ 
1204   YYDPRINTF ((stderr
, "Shifting token %s, ", yytname
[yytoken
])); 
1206   /* Discard the token being shifted unless it is eof.  */ 
1207   if (yychar 
!= YYEOF
) 
1213   /* Count tokens shifted since error; after three, turn off error 
1222 /*-----------------------------------------------------------. 
1223 | yydefault -- do the default action for the current state.  | 
1224 `-----------------------------------------------------------*/ 
1226   yyn 
= yydefact
[yystate
]; 
1232 /*-----------------------------. 
1233 | yyreduce -- Do a reduction.  | 
1234 `-----------------------------*/ 
1236   /* yyn is the number of a rule to reduce with.  */ 
1239   /* If YYLEN is nonzero, implement the default value of the action: 
1242      Otherwise, the following line sets YYVAL to garbage. 
1243      This behavior is undocumented and Bison 
1244      users should not rely upon it.  Assigning to YYVAL 
1245      unconditionally makes the parser a bit smaller, and it avoids a 
1246      GCC warning that YYVAL may be used uninitialized.  */ 
1247   yyval 
= yyvsp
[1-yylen
]; 
1249   /* Default location. */ 
1250   YYLLOC_DEFAULT (yyloc
, (yylsp 
- yylen
), yylen
); 
1251   YY_REDUCE_PRINT (yyn
); 
1255 #line 177 "parse-gram.y" 
1256     { prologue_augment (yyvsp
[0].chars
, yylsp
[0]); } 
1260 #line 178 "parse-gram.y" 
1261     { debug_flag 
= true; } 
1265 #line 179 "parse-gram.y" 
1266     { muscle_insert (yyvsp
[-1].chars
, yyvsp
[0].chars
); } 
1270 #line 180 "parse-gram.y" 
1271     { defines_flag 
= true; } 
1275 #line 181 "parse-gram.y" 
1276     { error_verbose 
= true; } 
1280 #line 182 "parse-gram.y" 
1281     { expected_conflicts 
= yyvsp
[0].integer
; } 
1285 #line 183 "parse-gram.y" 
1286     { spec_file_prefix 
= yyvsp
[0].chars
; } 
1290 #line 184 "parse-gram.y" 
1291     { nondeterministic_parser 
= true; 
1292                                              glr_parser 
= true; } 
1296 #line 186 "parse-gram.y" 
1297     { add_param ("lex_param", yyvsp
[0].chars
, yylsp
[0]); } 
1301 #line 187 "parse-gram.y" 
1302     { locations_flag 
= true; } 
1306 #line 188 "parse-gram.y" 
1307     { spec_name_prefix 
= yyvsp
[0].chars
; } 
1311 #line 189 "parse-gram.y" 
1312     { no_lines_flag 
= true; } 
1316 #line 190 "parse-gram.y" 
1317     { nondeterministic_parser 
= true; } 
1321 #line 191 "parse-gram.y" 
1322     { spec_outfile 
= yyvsp
[0].chars
; } 
1326 #line 192 "parse-gram.y" 
1327     { add_param ("parse_param", yyvsp
[0].chars
, yylsp
[0]); } 
1331 #line 193 "parse-gram.y" 
1332     { pure_parser 
= true; } 
1336 #line 194 "parse-gram.y" 
1337     { skeleton 
= yyvsp
[0].chars
; } 
1341 #line 195 "parse-gram.y" 
1342     { token_table_flag 
= true; } 
1346 #line 196 "parse-gram.y" 
1347     { report_flag 
= report_states
; } 
1351 #line 197 "parse-gram.y" 
1352     { yacc_flag 
= true; } 
1356 #line 205 "parse-gram.y" 
1358       grammar_start_symbol_set (yyvsp
[0].symbol
, yylsp
[0]); 
1363 #line 209 "parse-gram.y" 
1366       MUSCLE_INSERT_INT ("stype_line", yylsp
[0].start
.line
); 
1367       muscle_insert ("stype", yyvsp
[0].chars
); 
1372 #line 215 "parse-gram.y" 
1375       for (list 
= yyvsp
[0].list
; list
; list 
= list
->next
) 
1376         symbol_destructor_set (list
->sym
, yyvsp
[-1].chars
, yylsp
[-1]); 
1377       symbol_list_free (yyvsp
[0].list
); 
1382 #line 222 "parse-gram.y" 
1385       for (list 
= yyvsp
[0].list
; list
; list 
= list
->next
) 
1386         symbol_printer_set (list
->sym
, yyvsp
[-1].chars
, list
->location
); 
1387       symbol_list_free (yyvsp
[0].list
); 
1392 #line 231 "parse-gram.y" 
1393     { current_class 
= nterm_sym
; } 
1397 #line 232 "parse-gram.y" 
1399       current_class 
= unknown_sym
; 
1400       current_type 
= NULL
; 
1405 #line 236 "parse-gram.y" 
1406     { current_class 
= token_sym
; } 
1410 #line 237 "parse-gram.y" 
1412       current_class 
= unknown_sym
; 
1413       current_type 
= NULL
; 
1418 #line 242 "parse-gram.y" 
1421       for (list 
= yyvsp
[0].list
; list
; list 
= list
->next
) 
1422         symbol_type_set (list
->sym
, yyvsp
[-1].uniqstr
, yylsp
[-1]); 
1423       symbol_list_free (yyvsp
[0].list
); 
1428 #line 252 "parse-gram.y" 
1432       for (list 
= yyvsp
[0].list
; list
; list 
= list
->next
) 
1434           symbol_type_set (list
->sym
, current_type
, yylsp
[-1]); 
1435           symbol_precedence_set (list
->sym
, current_prec
, yyvsp
[-2].assoc
, yylsp
[-2]); 
1437       symbol_list_free (yyvsp
[0].list
); 
1438       current_type 
= NULL
; 
1443 #line 266 "parse-gram.y" 
1444     { yyval
.assoc 
= left_assoc
; } 
1448 #line 267 "parse-gram.y" 
1449     { yyval
.assoc 
= right_assoc
; } 
1453 #line 268 "parse-gram.y" 
1454     { yyval
.assoc 
= non_assoc
; } 
1458 #line 272 "parse-gram.y" 
1459     { current_type 
= NULL
; } 
1463 #line 273 "parse-gram.y" 
1464     { current_type 
= yyvsp
[0].uniqstr
; } 
1468 #line 279 "parse-gram.y" 
1469     { yyval
.list 
= symbol_list_new (yyvsp
[0].symbol
, yylsp
[0]); } 
1473 #line 280 "parse-gram.y" 
1474     { yyval
.list 
= symbol_list_prepend (yyvsp
[-1].list
, yyvsp
[0].symbol
, yylsp
[0]); } 
1478 #line 286 "parse-gram.y" 
1480        current_type 
= yyvsp
[0].uniqstr
; 
1485 #line 290 "parse-gram.y" 
1487        symbol_class_set (yyvsp
[0].symbol
, current_class
, yylsp
[0]); 
1488        symbol_type_set (yyvsp
[0].symbol
, current_type
, yylsp
[0]); 
1493 #line 295 "parse-gram.y" 
1495       symbol_class_set (yyvsp
[-1].symbol
, current_class
, yylsp
[-1]); 
1496       symbol_type_set (yyvsp
[-1].symbol
, current_type
, yylsp
[-1]); 
1497       symbol_user_token_number_set (yyvsp
[-1].symbol
, yyvsp
[0].integer
, yylsp
[0]); 
1502 #line 301 "parse-gram.y" 
1504       symbol_class_set (yyvsp
[-1].symbol
, current_class
, yylsp
[-1]); 
1505       symbol_type_set (yyvsp
[-1].symbol
, current_type
, yylsp
[-1]); 
1506       symbol_make_alias (yyvsp
[-1].symbol
, yyvsp
[0].symbol
, yyloc
); 
1511 #line 307 "parse-gram.y" 
1513       symbol_class_set (yyvsp
[-2].symbol
, current_class
, yylsp
[-2]); 
1514       symbol_type_set (yyvsp
[-2].symbol
, current_type
, yylsp
[-2]); 
1515       symbol_user_token_number_set (yyvsp
[-2].symbol
, yyvsp
[-1].integer
, yylsp
[-1]); 
1516       symbol_make_alias (yyvsp
[-2].symbol
, yyvsp
[0].symbol
, yyloc
); 
1521 #line 336 "parse-gram.y" 
1524         complain_at (yyloc
, _("POSIX forbids declarations in the grammar")); 
1529 #line 341 "parse-gram.y" 
1536 #line 347 "parse-gram.y" 
1537     { current_lhs 
= yyvsp
[0].symbol
; current_lhs_location 
= yylsp
[0]; } 
1541 #line 351 "parse-gram.y" 
1542     { grammar_rule_end (yylsp
[0]); } 
1546 #line 352 "parse-gram.y" 
1547     { grammar_rule_end (yylsp
[0]); } 
1551 #line 358 "parse-gram.y" 
1552     { grammar_rule_begin (current_lhs
, current_lhs_location
); } 
1556 #line 360 "parse-gram.y" 
1557     { grammar_current_rule_symbol_append (yyvsp
[0].symbol
, yylsp
[0]); } 
1561 #line 362 "parse-gram.y" 
1562     { grammar_current_rule_action_append (yyvsp
[0].chars
, yylsp
[0]); } 
1566 #line 364 "parse-gram.y" 
1567     { grammar_current_rule_prec_set (yyvsp
[0].symbol
, yylsp
[0]); } 
1571 #line 366 "parse-gram.y" 
1572     { grammar_current_rule_dprec_set (yyvsp
[0].integer
, yylsp
[0]); } 
1576 #line 368 "parse-gram.y" 
1577     { grammar_current_rule_merge_set (yyvsp
[0].uniqstr
, yylsp
[0]); } 
1581 #line 372 "parse-gram.y" 
1582     { yyval
.symbol 
= yyvsp
[0].symbol
; } 
1586 #line 373 "parse-gram.y" 
1587     { yyval
.symbol 
= yyvsp
[0].symbol
; } 
1591 #line 378 "parse-gram.y" 
1592     { yyval
.chars 
= yyvsp
[0].chars
; } 
1596 #line 384 "parse-gram.y" 
1598       yyval
.symbol 
= symbol_get (yyvsp
[0].chars
, yylsp
[0]); 
1599       symbol_class_set (yyval
.symbol
, token_sym
, yylsp
[0]); 
1604 #line 393 "parse-gram.y" 
1606       yyval
.chars 
= yyvsp
[0].chars 
+ 1; 
1607       yyval
.chars
[strlen (yyval
.chars
) - 1] = '\0'; 
1612 #line 402 "parse-gram.y" 
1614       epilogue_augment (yyvsp
[0].chars
, yylsp
[0]); 
1615       scanner_last_string_free (); 
1622 /* Line 993 of yacc.c.  */ 
1623 #line 1624 "parse-gram.c" 
1629   YY_STACK_PRINT (yyss
, yyssp
); 
1634   /* Now `shift' the result of the reduction.  Determine what state 
1635      that goes to, based on the state we popped back to and the rule 
1636      number reduced by.  */ 
1640   yystate 
= yypgoto
[yyn 
- YYNTOKENS
] + *yyssp
; 
1641   if (0 <= yystate 
&& yystate 
<= YYLAST 
&& yycheck
[yystate
] == *yyssp
) 
1642     yystate 
= yytable
[yystate
]; 
1644     yystate 
= yydefgoto
[yyn 
- YYNTOKENS
]; 
1649 /*------------------------------------. 
1650 | yyerrlab -- here on detecting error | 
1651 `------------------------------------*/ 
1653   /* If not already recovering from an error, report this error.  */ 
1658       yyn 
= yypact
[yystate
]; 
1660       if (YYPACT_NINF 
< yyn 
&& yyn 
< YYLAST
) 
1662           YYSIZE_T yysize 
= 0; 
1663           int yytype 
= YYTRANSLATE (yychar
); 
1664           const char* yyprefix
; 
1668           /* Start YYX at -YYN if negative to avoid negative indexes in 
1670           int yyxbegin 
= yyn 
< 0 ? -yyn 
: 0; 
1672           /* Stay within bounds of both yycheck and yytname.  */ 
1673           int yychecklim 
= YYLAST 
- yyn
; 
1674           int yyxend 
= yychecklim 
< YYNTOKENS 
? yychecklim 
: YYNTOKENS
; 
1677           yyprefix 
= ", expecting "; 
1678           for (yyx 
= yyxbegin
; yyx 
< yyxend
; ++yyx
) 
1679             if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1681                 yysize 
+= yystrlen (yyprefix
) + yystrlen (yytname 
[yyx
]); 
1689           yysize 
+= (sizeof ("syntax error, unexpected ") 
1690                      + yystrlen (yytname
[yytype
])); 
1691           yymsg 
= (char *) YYSTACK_ALLOC (yysize
); 
1694               char *yyp 
= yystpcpy (yymsg
, "syntax error, unexpected "); 
1695               yyp 
= yystpcpy (yyp
, yytname
[yytype
]); 
1699                   yyprefix 
= ", expecting "; 
1700                   for (yyx 
= yyxbegin
; yyx 
< yyxend
; ++yyx
) 
1701                     if (yycheck
[yyx 
+ yyn
] == yyx 
&& yyx 
!= YYTERROR
) 
1703                         yyp 
= yystpcpy (yyp
, yyprefix
); 
1704                         yyp 
= yystpcpy (yyp
, yytname
[yyx
]); 
1709               YYSTACK_FREE (yymsg
); 
1712             yyerror ("syntax error; also virtual memory exhausted"); 
1715 #endif /* YYERROR_VERBOSE */ 
1716         yyerror ("syntax error"); 
1721   if (yyerrstatus 
== 3) 
1723       /* If just tried and failed to reuse lookahead token after an 
1724          error, discard it.  */ 
1726       if (yychar 
<= YYEOF
) 
1728           /* If at end of input, pop the error token, 
1729              then the rest of the stack, then return failure.  */ 
1730           if (yychar 
== YYEOF
) 
1736                  YYDSYMPRINTF ("Error: popping", yystos
[*yyssp
], yyvsp
, yylsp
); 
1737                  yydestruct (yystos
[*yyssp
], yyvsp
, yylsp
); 
1742           YYDSYMPRINTF ("Error: discarding", yytoken
, &yylval
, &yylloc
); 
1743           yydestruct (yytoken
, &yylval
, &yylloc
); 
1745           *++yylerrsp 
= yylloc
; 
1749   /* Else will try to reuse lookahead token after shifting the error 
1754 /*---------------------------------------------------. 
1755 | yyerrorlab -- error raised explicitly by YYERROR.  | 
1756 `---------------------------------------------------*/ 
1760   /* Pacify GCC when the user code never invokes YYERROR and the label 
1761      yyerrorlab therefore never appears in user code.  */ 
1770   *++yylerrsp 
= yyloc
; 
1775 /*-------------------------------------------------------------. 
1776 | yyerrlab1 -- common code for both syntax error and YYERROR.  | 
1777 `-------------------------------------------------------------*/ 
1779   yyerrstatus 
= 3;      /* Each real token shifted decrements this.  */ 
1783       yyn 
= yypact
[yystate
]; 
1784       if (yyn 
!= YYPACT_NINF
) 
1787           if (0 <= yyn 
&& yyn 
<= YYLAST 
&& yycheck
[yyn
] == YYTERROR
) 
1795       /* Pop the current state because it cannot handle the error token.  */ 
1799       YYDSYMPRINTF ("Error: popping", yystos
[*yyssp
], yyvsp
, yylsp
); 
1800       yydestruct (yystos
[yystate
], yyvsp
, yylsp
); 
1803       YY_STACK_PRINT (yyss
, yyssp
); 
1809   YYDPRINTF ((stderr
, "Shifting error token, ")); 
1812   YYLLOC_DEFAULT (yyloc
, yylsp
, (yylerrsp 
- yylsp
)); 
1819 /*-------------------------------------. 
1820 | yyacceptlab -- YYACCEPT comes here.  | 
1821 `-------------------------------------*/ 
1826 /*-----------------------------------. 
1827 | yyabortlab -- YYABORT comes here.  | 
1828 `-----------------------------------*/ 
1834 /*----------------------------------------------. 
1835 | yyoverflowlab -- parser overflow comes here.  | 
1836 `----------------------------------------------*/ 
1838   yyerror ("parser stack overflow"); 
1846     YYSTACK_FREE (yyss
); 
1852 #line 408 "parse-gram.y" 
1856 /* Return the location of the left-hand side of a rule whose 
1857    right-hand side is RHS[1] ... RHS[N].  Ignore empty nonterminals in 
1858    the right-hand side, and return an empty location equal to the end 
1859    boundary of RHS[0] if the right-hand side is empty.  */ 
1862 lloc_default (YYLTYPE 
const *rhs
, int n
) 
1866   loc
.start 
= loc
.end 
= rhs
[n
].end
; 
1868   /* Ignore empty nonterminals the start of the the right-hand side. 
1869      Do not bother to ignore them at the end of the right-hand side, 
1870      since empty nonterminals have the same end as their predecessors.  */ 
1871   for (i 
= 1; i 
<= n
; i
++) 
1872     if (! equal_boundaries (rhs
[i
].start
, rhs
[i
].end
)) 
1874         loc
.start 
= rhs
[i
].start
; 
1882 /* Add a lex-param or a parse-param (depending on TYPE) with 
1883    declaration DECL and location LOC.  */ 
1886 add_param (char const *type
, char *decl
, location loc
) 
1888   static char const alphanum
[] = 
1890     "abcdefghijklmnopqrstuvwxyz" 
1891     "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
1893   char const *alpha 
= alphanum 
+ 10; 
1894   char const *name_start 
= NULL
; 
1897   for (p 
= decl
; *p
; p
++) 
1898     if ((p 
== decl 
|| ! strchr (alphanum
, p
[-1])) && strchr (alpha
, p
[0])) 
1901   /* Strip the surrounding '{' and '}'.  */ 
1906     complain_at (loc
, _("missing identifier in parameter declaration")); 
1913            name_start
[name_len
] && strchr (alphanum
, name_start
[name_len
]); 
1917       name 
= xmalloc (name_len 
+ 1); 
1918       memcpy (name
, name_start
, name_len
); 
1919       name
[name_len
] = '\0'; 
1920       muscle_pair_list_grow (type
, decl
, name
); 
1924   scanner_last_string_free (); 
1927 /*----------------------------------------------------. 
1928 | When debugging the parser, display tokens' values.  | 
1929 `----------------------------------------------------*/ 
1932 print_token_value (FILE *file
, int type
, YYSTYPE 
const *value
) 
1938       fprintf (file
, " = %s", value
->symbol
->tag
); 
1942       fprintf (file
, " = %d", value
->integer
); 
1946       fprintf (file
, " = \"%s\"", value
->chars
); 
1950       fprintf (file
, " = <%s>", value
->uniqstr
); 
1954     case PERCENT_DESTRUCTOR
: 
1955     case PERCENT_LEX_PARAM
: 
1956     case PERCENT_PARSE_PARAM
: 
1957     case PERCENT_PRINTER
: 
1961       fprintf (file
, " = {{ %s }}", value
->chars
); 
1965       fprintf (file
, "unknown token type"); 
1971 gram_error (location 
const *loc
, char const *msg
) 
1973   complain_at (*loc
, "%s", msg
); 
1977 token_name (int type
) 
1979   return yytname
[type
];