+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 3
+#define YYLAST 127
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 45
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 28
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 75
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 108
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 299
+
+#define YYTRANSLATE(X) \
+ ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const unsigned char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const unsigned char yyprhs[] =
+{
+ 0, 0, 3, 8, 9, 13, 15, 17, 19, 23,
+ 25, 27, 30, 34, 36, 40, 42, 46, 48, 50,
+ 53, 55, 57, 59, 61, 63, 66, 69, 70, 75,
+ 76, 81, 82, 86, 87, 91, 95, 99, 101, 103,
+ 105, 106, 108, 110, 113, 115, 117, 120, 123, 127,
+ 129, 132, 134, 137, 139, 142, 145, 146, 152, 154,
+ 158, 159, 162, 165, 169, 173, 177, 179, 181, 183,
+ 185, 187, 189, 190, 193, 194
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const signed char yyrhs[] =
+{
+ 46, 0, -1, 47, 41, 61, 71, -1, -1, 47,
+ 48, 72, -1, 49, -1, 42, -1, 30, -1, 25,
+ 70, 70, -1, 28, -1, 21, -1, 15, 5, -1,
+ 23, 36, 70, -1, 31, -1, 24, 36, 70, -1,
+ 32, -1, 22, 36, 70, -1, 26, -1, 27, -1,
+ 33, 70, -1, 34, -1, 20, -1, 29, -1, 55,
+ -1, 52, -1, 16, 67, -1, 11, 44, -1, -1,
+ 9, 50, 44, 58, -1, -1, 10, 51, 44, 58,
+ -1, -1, 7, 53, 60, -1, -1, 6, 54, 60,
+ -1, 8, 35, 58, -1, 56, 57, 58, -1, 12,
+ -1, 13, -1, 14, -1, -1, 35, -1, 67, -1,
+ 58, 67, -1, 35, -1, 40, -1, 40, 5, -1,
+ 40, 69, -1, 40, 5, 69, -1, 59, -1, 60,
+ 59, -1, 62, -1, 61, 62, -1, 63, -1, 49,
+ 37, -1, 1, 37, -1, -1, 40, 38, 64, 65,
+ 37, -1, 66, -1, 65, 39, 66, -1, -1, 66,
+ 67, -1, 66, 68, -1, 66, 17, 67, -1, 66,
+ 18, 5, -1, 66, 19, 35, -1, 40, -1, 69,
+ -1, 4, -1, 44, -1, 3, -1, 3, -1, -1,
+ 41, 43, -1, -1, 37, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const unsigned short yyrline[] =
+{
+ 0, 162, 162, 175, 177, 180, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 201, 203, 204, 208, 215, 214, 225,
+ 224, 237, 236, 242, 242, 247, 256, 271, 273, 274,
+ 277, 279, 284, 286, 290, 295, 300, 306, 312, 322,
+ 325, 334, 336, 342, 344, 349, 356, 355, 360, 362,
+ 365, 368, 370, 372, 374, 376, 380, 382, 383, 386,
+ 392, 401, 409, 414, 420, 422
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "\"end of file\"", "error", "$undefined", "\"string\"", "\"character\"",
+ "\"integer\"", "\"%token\"", "\"%nterm\"", "\"%type\"",
+ "\"%destructor\"", "\"%printer\"", "\"%union\"", "\"%left\"",
+ "\"%right\"", "\"%nonassoc\"", "\"%expect\"", "\"%start\"", "\"%prec\"",
+ "\"%dprec\"", "\"%merge\"", "\"%verbose\"", "\"%error-verbose\"",
+ "\"%output\"", "\"%file-prefix\"", "\"%name-prefix\"", "\"%define\"",
+ "\"%pure-parser\"", "\"%glr-parser\"", "\"%defines\"", "\"%yacc\"",
+ "\"%debug\"", "\"%locations\"", "\"%no-lines\"", "\"%skeleton\"",
+ "\"%token-table\"", "\"type\"", "\"=\"", "\";\"", "\":\"", "\"|\"",
+ "\"identifier\"", "\"%%\"", "\"%{...%}\"", "\"epilogue\"", "\"{...}\"",
+ "$accept", "input", "declarations", "declaration",
+ "grammar_declaration", "@1", "@2", "symbol_declaration", "@3", "@4",
+ "precedence_declaration", "precedence_declarator", "type.opt",
+ "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
+ "rules_or_grammar_declaration", "rules", "@5", "rhses.1", "rhs",
+ "symbol", "action", "string_as_id", "string_content", "epilogue.opt",
+ "semi_colon.opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const unsigned short yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const unsigned char yyr1[] =
+{
+ 0, 45, 46, 47, 47, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 49, 49, 49, 49, 50, 49, 51,
+ 49, 53, 52, 54, 52, 52, 55, 56, 56, 56,
+ 57, 57, 58, 58, 59, 59, 59, 59, 59, 60,
+ 60, 61, 61, 62, 62, 62, 64, 63, 65, 65,
+ 66, 66, 66, 66, 66, 66, 67, 67, 67, 68,
+ 69, 70, 71, 71, 72, 72
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const unsigned char yyr2[] =
+{
+ 0, 2, 4, 0, 3, 1, 1, 1, 3, 1,
+ 1, 2, 3, 1, 3, 1, 3, 1, 1, 2,
+ 1, 1, 1, 1, 1, 2, 2, 0, 4, 0,
+ 4, 0, 3, 0, 3, 3, 3, 1, 1, 1,
+ 0, 1, 1, 2, 1, 1, 2, 2, 3, 1,
+ 2, 1, 2, 1, 2, 2, 0, 5, 1, 3,
+ 0, 2, 2, 3, 3, 3, 1, 1, 1, 1,
+ 1, 1, 0, 2, 0, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned char yydefact[] =
+{
+ 3, 0, 0, 1, 33, 31, 0, 27, 29, 0,
+ 37, 38, 39, 0, 0, 21, 10, 0, 0, 0,
+ 0, 17, 18, 9, 22, 7, 13, 15, 0, 20,
+ 0, 6, 74, 5, 24, 23, 40, 0, 0, 0,
+ 0, 0, 26, 11, 70, 68, 66, 25, 67, 0,
+ 0, 0, 71, 0, 19, 0, 0, 0, 0, 51,
+ 53, 75, 4, 41, 0, 44, 45, 49, 34, 32,
+ 35, 42, 0, 0, 16, 12, 14, 8, 55, 56,
+ 54, 0, 52, 2, 36, 46, 47, 50, 43, 28,
+ 30, 60, 73, 48, 0, 58, 57, 60, 0, 0,
+ 0, 69, 61, 62, 59, 63, 64, 65
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const signed char yydefgoto[] =
+{
+ -1, 1, 2, 32, 57, 40, 41, 34, 38, 37,
+ 35, 36, 64, 70, 67, 68, 58, 59, 60, 91,
+ 94, 95, 71, 103, 48, 53, 83, 62
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -61
+static const signed char yypact[] =
+{
+ -61, 35, 85, -61, -61, -61, 2, -61, -61, -5,
+ -61, -61, -61, 31, 0, -61, -61, 18, 21, 22,
+ 59, -61, -61, -61, -61, -61, -61, -61, 59, -61,
+ 37, -61, 26, -61, -61, -61, 29, -19, -19, 0,
+ 23, 24, -61, -61, -61, -61, -61, -61, -61, 59,
+ 59, 59, -61, 59, -61, 28, 33, 32, 1, -61,
+ -61, -61, -61, -61, 0, -61, 17, -61, -19, -19,
+ 0, -61, 0, 0, -61, -61, -61, -61, -61, -61,
+ -61, 30, -61, -61, 0, 63, -61, -61, -61, 0,
+ 0, -61, -61, -61, -8, 15, -61, -61, 0, 67,
+ 39, -61, -61, -61, 15, -61, -61, -61
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const signed char yypgoto[] =
+{
+ -61, -61, -61, -61, 76, -61, -61, -61, -61, -61,
+ -61, -61, -61, -12, -45, 41, -61, 25, -61, -61,
+ -61, -17, -14, -61, -60, -23, -61, -61
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says. */
+#define YYTABLE_NINF -62
+static const signed char yytable[] =
+{
+ 47, -72, 55, 44, 45, 54, 86, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 65, 14, 44, 45,
+ 44, 66, 85, 87, 87, 93, 74, 75, 76, 96,
+ 77, 97, 98, 99, 100, 3, 43, 39, 55, 42,
+ 46, 56, 81, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 84, 14, 49, 46, 88, 50, 51, 101,
+ 89, 90, 52, 61, 63, 78, 44, 72, 73, 80,
+ 88, 79, 106, 92, 107, 88, 88, 56, 33, 69,
+ 104, 102, 0, 82, 105, 0, 0, 0, 0, 0,
+ 102, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 0, 0, 0, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 0, 0, 0, 0, 0, 0, 30, 31
+};
+
+static const signed char yycheck[] =
+{
+ 14, 0, 1, 3, 4, 28, 66, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 35, 16, 3, 4,
+ 3, 40, 5, 68, 69, 85, 49, 50, 51, 37,
+ 53, 39, 17, 18, 19, 0, 5, 35, 1, 44,
+ 40, 40, 41, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 64, 16, 36, 40, 70, 36, 36, 44,
+ 72, 73, 3, 37, 35, 37, 3, 44, 44, 37,
+ 84, 38, 5, 43, 35, 89, 90, 40, 2, 38,
+ 97, 95, -1, 58, 98, -1, -1, -1, -1, -1,
+ 104, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, -1, -1, -1, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ -1, -1, -1, -1, -1, -1, 41, 42
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned char yystos[] =
+{
+ 0, 46, 47, 0, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 41, 42, 48, 49, 52, 55, 56, 54, 53, 35,
+ 50, 51, 44, 5, 3, 4, 40, 67, 69, 36,
+ 36, 36, 3, 70, 70, 1, 40, 49, 61, 62,
+ 63, 37, 72, 35, 57, 35, 40, 59, 60, 60,
+ 58, 67, 44, 44, 70, 70, 70, 70, 37, 38,
+ 37, 41, 62, 71, 58, 5, 69, 59, 67, 58,
+ 58, 64, 43, 69, 65, 66, 37, 39, 17, 18,
+ 19, 44, 67, 68, 66, 67, 5, 35
+};