mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 10:43:02 +00:00
Accept a token number in a %left, %right, or %nonassoc for POSIX
conformance. Reported by Tim Josling at <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>. * NEWS (2.3a+): Mention. * doc/bison.texinfo (Precedence Decl): Describe how literal strings and code numbers are treated by precedence declarations. * src/parse-gram.y (precedence_declaration): Use symbols.prec instead of symbols.1. (symbols.prec): New, just like symbols.1 but uses symbol.prec instead of symbol. (symbol.prec): New, just like symbol but allows INT. * src/symtab.c (symbol_user_token_number_set): Remove an aver that no longer holds. * tests/regression.at (Token number in precedence declaration): New test case.
This commit is contained in:
18
ChangeLog
18
ChangeLog
@@ -1,3 +1,21 @@
|
|||||||
|
2008-02-16 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
Accept a token number in a %left, %right, or %nonassoc for POSIX
|
||||||
|
conformance. Reported by Tim Josling at
|
||||||
|
<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>.
|
||||||
|
* NEWS (2.3a+): Mention.
|
||||||
|
* doc/bison.texinfo (Precedence Decl): Describe how literal strings
|
||||||
|
and code numbers are treated by precedence declarations.
|
||||||
|
* src/parse-gram.y (precedence_declaration): Use symbols.prec instead
|
||||||
|
of symbols.1.
|
||||||
|
(symbols.prec): New, just like symbols.1 but uses symbol.prec instead
|
||||||
|
of symbol.
|
||||||
|
(symbol.prec): New, just like symbol but allows INT.
|
||||||
|
* src/symtab.c (symbol_user_token_number_set): Remove an aver that no
|
||||||
|
longer holds.
|
||||||
|
* tests/regression.at (Token number in precedence declaration): New
|
||||||
|
test case.
|
||||||
|
|
||||||
2008-02-06 Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
2008-02-06 Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
||||||
|
|
||||||
DJGPP specific issues.
|
DJGPP specific issues.
|
||||||
|
|||||||
6
NEWS
6
NEWS
@@ -154,6 +154,10 @@ Changes in version 2.3a+ (????-??-??):
|
|||||||
See the section `Freeing Discarded Symbols' in the Bison manual for further
|
See the section `Freeing Discarded Symbols' in the Bison manual for further
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
* %left, %right, and %nonassoc can now declare token numbers. This is required
|
||||||
|
by POSIX. However, see the end of section `Operator Precedence' in the Bison
|
||||||
|
manual for a caveat concerning the treatment of literal strings.
|
||||||
|
|
||||||
Changes in version 2.3a, 2006-09-13:
|
Changes in version 2.3a, 2006-09-13:
|
||||||
|
|
||||||
* Instead of %union, you can define and use your own union type
|
* Instead of %union, you can define and use your own union type
|
||||||
@@ -978,7 +982,7 @@ End:
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ This manual is for @acronym{GNU} Bison (version @value{VERSION},
|
|||||||
@value{UPDATED}), the @acronym{GNU} parser generator.
|
@value{UPDATED}), the @acronym{GNU} parser generator.
|
||||||
|
|
||||||
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998,
|
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998,
|
||||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
||||||
|
Foundation, Inc.
|
||||||
|
|
||||||
@quotation
|
@quotation
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
@@ -4088,7 +4089,7 @@ once. These are called @dfn{precedence declarations}.
|
|||||||
@xref{Precedence, ,Operator Precedence}, for general information on
|
@xref{Precedence, ,Operator Precedence}, for general information on
|
||||||
operator precedence.
|
operator precedence.
|
||||||
|
|
||||||
The syntax of a precedence declaration is the same as that of
|
The syntax of a precedence declaration is nearly the same as that of
|
||||||
@code{%token}: either
|
@code{%token}: either
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@@ -4126,6 +4127,18 @@ When two tokens declared in different precedence declarations associate,
|
|||||||
the one declared later has the higher precedence and is grouped first.
|
the one declared later has the higher precedence and is grouped first.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
For backward compatibility, there is a confusing difference between the
|
||||||
|
argument lists of @code{%token} and precedence declarations.
|
||||||
|
Only a @code{%token} can associate a literal string with a token type name.
|
||||||
|
A precedence declaration always interprets a literal string as a reference to a
|
||||||
|
separate token.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
@example
|
||||||
|
%left OR "<=" // Does not declare an alias.
|
||||||
|
%left OR 134 "<=" 135 // Declares 134 for OR and 135 for "<=".
|
||||||
|
@end example
|
||||||
|
|
||||||
@node Union Decl
|
@node Union Decl
|
||||||
@subsection The Collection of Value Types
|
@subsection The Collection of Value Types
|
||||||
@cindex declaring value types
|
@cindex declaring value types
|
||||||
|
|||||||
457
src/parse-gram.c
457
src/parse-gram.c
@@ -73,8 +73,8 @@
|
|||||||
#line 1 "parse-gram.y"
|
#line 1 "parse-gram.y"
|
||||||
/* Bison Grammar Parser -*- C -*-
|
/* Bison Grammar Parser -*- C -*-
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation,
|
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
||||||
Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -552,16 +552,16 @@ union yyalloc
|
|||||||
/* YYFINAL -- State number of the termination state. */
|
/* YYFINAL -- State number of the termination state. */
|
||||||
#define YYFINAL 3
|
#define YYFINAL 3
|
||||||
/* YYLAST -- Last index in YYTABLE. */
|
/* YYLAST -- Last index in YYTABLE. */
|
||||||
#define YYLAST 155
|
#define YYLAST 156
|
||||||
|
|
||||||
/* YYNTOKENS -- Number of terminals. */
|
/* YYNTOKENS -- Number of terminals. */
|
||||||
#define YYNTOKENS 57
|
#define YYNTOKENS 57
|
||||||
/* YYNNTS -- Number of nonterminals. */
|
/* YYNNTS -- Number of nonterminals. */
|
||||||
#define YYNNTS 31
|
#define YYNNTS 33
|
||||||
/* YYNRULES -- Number of rules. */
|
/* YYNRULES -- Number of rules. */
|
||||||
#define YYNRULES 101
|
#define YYNRULES 105
|
||||||
/* YYNRULES -- Number of states. */
|
/* YYNRULES -- Number of states. */
|
||||||
#define YYNSTATES 139
|
#define YYNSTATES 143
|
||||||
|
|
||||||
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
#define YYUNDEFTOK 2
|
#define YYUNDEFTOK 2
|
||||||
@@ -618,42 +618,43 @@ static const yytype_uint16 yyprhs[] =
|
|||||||
81, 84, 86, 88, 90, 92, 94, 96, 99, 103,
|
81, 84, 86, 88, 90, 92, 94, 96, 99, 103,
|
||||||
107, 109, 111, 114, 118, 119, 121, 125, 126, 130,
|
107, 109, 111, 114, 118, 119, 121, 125, 126, 130,
|
||||||
131, 135, 139, 143, 145, 147, 149, 150, 152, 154,
|
131, 135, 139, 143, 145, 147, 149, 150, 152, 154,
|
||||||
157, 159, 162, 164, 166, 168, 170, 172, 174, 177,
|
157, 159, 162, 164, 167, 169, 172, 174, 176, 178,
|
||||||
180, 184, 186, 189, 191, 194, 196, 199, 202, 203,
|
180, 182, 184, 187, 190, 194, 196, 199, 201, 204,
|
||||||
207, 209, 213, 216, 217, 220, 223, 227, 231, 235,
|
206, 209, 212, 213, 217, 219, 223, 226, 227, 230,
|
||||||
237, 239, 240, 242, 244, 246, 248, 250, 252, 254,
|
233, 237, 241, 245, 247, 249, 250, 252, 254, 256,
|
||||||
256, 257
|
258, 260, 262, 264, 266, 267
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
static const yytype_int8 yyrhs[] =
|
static const yytype_int8 yyrhs[] =
|
||||||
{
|
{
|
||||||
58, 0, -1, 59, 49, 74, 87, -1, -1, 59,
|
58, 0, -1, 59, 49, 76, 89, -1, -1, 59,
|
||||||
60, -1, 61, -1, 51, -1, 17, -1, 19, 80,
|
60, -1, 61, -1, 51, -1, 17, -1, 19, 82,
|
||||||
81, -1, 20, -1, 20, 3, -1, 21, -1, 22,
|
83, -1, 20, -1, 20, 3, -1, 21, -1, 22,
|
||||||
4, -1, 23, 4, -1, 24, 3, -1, 24, 46,
|
4, -1, 23, 4, -1, 24, 3, -1, 24, 46,
|
||||||
3, -1, 25, -1, 26, 43, -1, 27, 3, -1,
|
3, -1, 25, -1, 26, 43, -1, 27, 3, -1,
|
||||||
28, 43, -1, 29, -1, 30, 3, -1, 30, 46,
|
28, 43, -1, 29, -1, 30, 3, -1, 30, 46,
|
||||||
3, -1, 32, -1, 33, -1, 34, 3, -1, 34,
|
3, -1, 32, -1, 33, -1, 34, 3, -1, 34,
|
||||||
46, 3, -1, 35, 43, -1, 36, -1, 37, 3,
|
46, 3, -1, 35, 43, -1, 36, -1, 37, 3,
|
||||||
-1, 38, 3, -1, 40, -1, 41, -1, 42, -1,
|
-1, 38, 3, -1, 40, -1, 41, -1, 42, -1,
|
||||||
52, -1, 66, -1, 63, -1, 39, 85, -1, 8,
|
52, -1, 66, -1, 63, -1, 39, 87, -1, 8,
|
||||||
43, 70, -1, 9, 43, 70, -1, 18, -1, 31,
|
43, 72, -1, 9, 43, 72, -1, 18, -1, 31,
|
||||||
-1, 16, 82, -1, 16, 47, 82, -1, -1, 47,
|
-1, 16, 84, -1, 16, 47, 84, -1, -1, 47,
|
||||||
-1, 56, 62, 82, -1, -1, 6, 64, 73, -1,
|
-1, 56, 62, 84, -1, -1, 6, 64, 75, -1,
|
||||||
-1, 5, 65, 73, -1, 7, 53, 69, -1, 67,
|
-1, 5, 65, 75, -1, 7, 53, 71, -1, 67,
|
||||||
68, 69, -1, 10, -1, 11, -1, 12, -1, -1,
|
68, 69, -1, 10, -1, 11, -1, 12, -1, -1,
|
||||||
53, -1, 85, -1, 69, 85, -1, 71, -1, 70,
|
53, -1, 70, -1, 69, 70, -1, 87, -1, 87,
|
||||||
71, -1, 85, -1, 53, -1, 54, -1, 55, -1,
|
4, -1, 87, -1, 71, 87, -1, 73, -1, 72,
|
||||||
53, -1, 83, -1, 83, 4, -1, 83, 86, -1,
|
73, -1, 87, -1, 53, -1, 54, -1, 55, -1,
|
||||||
83, 4, 86, -1, 72, -1, 73, 72, -1, 75,
|
53, -1, 85, -1, 85, 4, -1, 85, 88, -1,
|
||||||
-1, 74, 75, -1, 76, -1, 61, 52, -1, 1,
|
85, 4, 88, -1, 74, -1, 75, 74, -1, 77,
|
||||||
52, -1, -1, 84, 77, 78, -1, 79, -1, 78,
|
-1, 76, 77, -1, 78, -1, 61, 52, -1, 1,
|
||||||
50, 79, -1, 78, 52, -1, -1, 79, 85, -1,
|
52, -1, -1, 86, 79, 80, -1, 81, -1, 80,
|
||||||
79, 43, -1, 79, 13, 85, -1, 79, 14, 4,
|
50, 81, -1, 80, 52, -1, -1, 81, 87, -1,
|
||||||
-1, 79, 15, 53, -1, 47, -1, 3, -1, -1,
|
81, 43, -1, 81, 13, 87, -1, 81, 14, 4,
|
||||||
|
-1, 81, 15, 53, -1, 47, -1, 3, -1, -1,
|
||||||
3, -1, 43, -1, 47, -1, 44, -1, 48, -1,
|
3, -1, 43, -1, 47, -1, 44, -1, 48, -1,
|
||||||
83, -1, 86, -1, 3, -1, -1, 49, 45, -1
|
85, -1, 88, -1, 3, -1, -1, 49, 45, -1
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||||
@@ -665,11 +666,11 @@ static const yytype_uint16 yyrline[] =
|
|||||||
283, 307, 308, 309, 310, 314, 315, 316, 320, 327,
|
283, 307, 308, 309, 310, 314, 315, 316, 320, 327,
|
||||||
334, 338, 342, 349, 364, 365, 369, 381, 381, 386,
|
334, 338, 342, 349, 364, 365, 369, 381, 381, 386,
|
||||||
386, 391, 402, 417, 418, 419, 423, 424, 429, 431,
|
386, 391, 402, 417, 418, 419, 423, 424, 429, 431,
|
||||||
436, 437, 441, 442, 443, 444, 449, 454, 459, 465,
|
436, 437, 442, 444, 449, 450, 454, 455, 456, 457,
|
||||||
471, 482, 483, 492, 493, 499, 500, 501, 508, 508,
|
462, 467, 472, 478, 484, 495, 496, 505, 506, 512,
|
||||||
512, 513, 514, 519, 520, 522, 524, 526, 528, 538,
|
513, 514, 521, 521, 525, 526, 527, 532, 533, 535,
|
||||||
539, 545, 548, 557, 577, 579, 588, 593, 594, 599,
|
537, 539, 541, 551, 552, 558, 561, 570, 590, 592,
|
||||||
606, 608
|
601, 606, 607, 612, 619, 621
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -695,10 +696,11 @@ static const char *const yytname[] =
|
|||||||
"prologue_declarations", "prologue_declaration", "grammar_declaration",
|
"prologue_declarations", "prologue_declaration", "grammar_declaration",
|
||||||
"union_name", "symbol_declaration", "$@1", "$@2",
|
"union_name", "symbol_declaration", "$@1", "$@2",
|
||||||
"precedence_declaration", "precedence_declarator", "type.opt",
|
"precedence_declaration", "precedence_declarator", "type.opt",
|
||||||
"symbols.1", "generic_symlist", "generic_symlist_item", "symbol_def",
|
"symbols.prec", "symbol.prec", "symbols.1", "generic_symlist",
|
||||||
"symbol_defs.1", "grammar", "rules_or_grammar_declaration", "rules",
|
"generic_symlist_item", "symbol_def", "symbol_defs.1", "grammar",
|
||||||
"$@3", "rhses.1", "rhs", "variable", "content.opt", "braceless", "id",
|
"rules_or_grammar_declaration", "rules", "$@3", "rhses.1", "rhs",
|
||||||
"id_colon", "symbol", "string_as_id", "epilogue.opt", 0
|
"variable", "content.opt", "braceless", "id", "id_colon", "symbol",
|
||||||
|
"string_as_id", "epilogue.opt", 0
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -725,11 +727,11 @@ static const yytype_uint8 yyr1[] =
|
|||||||
60, 60, 60, 60, 60, 61, 61, 61, 61, 61,
|
60, 60, 60, 60, 60, 61, 61, 61, 61, 61,
|
||||||
61, 61, 61, 61, 62, 62, 61, 64, 63, 65,
|
61, 61, 61, 61, 62, 62, 61, 64, 63, 65,
|
||||||
63, 63, 66, 67, 67, 67, 68, 68, 69, 69,
|
63, 63, 66, 67, 67, 67, 68, 68, 69, 69,
|
||||||
70, 70, 71, 71, 71, 71, 72, 72, 72, 72,
|
70, 70, 71, 71, 72, 72, 73, 73, 73, 73,
|
||||||
72, 73, 73, 74, 74, 75, 75, 75, 77, 76,
|
74, 74, 74, 74, 74, 75, 75, 76, 76, 77,
|
||||||
78, 78, 78, 79, 79, 79, 79, 79, 79, 80,
|
77, 77, 79, 78, 80, 80, 80, 81, 81, 81,
|
||||||
80, 81, 81, 82, 83, 83, 84, 85, 85, 86,
|
81, 81, 81, 82, 82, 83, 83, 84, 85, 85,
|
||||||
87, 87
|
86, 87, 87, 88, 89, 89
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||||
@@ -741,11 +743,11 @@ static const yytype_uint8 yyr2[] =
|
|||||||
2, 1, 1, 1, 1, 1, 1, 2, 3, 3,
|
2, 1, 1, 1, 1, 1, 1, 2, 3, 3,
|
||||||
1, 1, 2, 3, 0, 1, 3, 0, 3, 0,
|
1, 1, 2, 3, 0, 1, 3, 0, 3, 0,
|
||||||
3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
|
3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
|
||||||
1, 2, 1, 1, 1, 1, 1, 1, 2, 2,
|
1, 2, 1, 2, 1, 2, 1, 1, 1, 1,
|
||||||
3, 1, 2, 1, 2, 1, 2, 2, 0, 3,
|
1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
|
||||||
1, 3, 2, 0, 2, 2, 3, 3, 3, 1,
|
2, 2, 0, 3, 1, 3, 2, 0, 2, 2,
|
||||||
1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
|
3, 3, 3, 1, 1, 0, 1, 1, 1, 1,
|
||||||
0, 2
|
1, 1, 1, 1, 0, 2
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
||||||
@@ -758,24 +760,25 @@ static const yytype_uint8 yydefact[] =
|
|||||||
0, 16, 0, 0, 0, 20, 0, 41, 23, 24,
|
0, 16, 0, 0, 0, 20, 0, 41, 23, 24,
|
||||||
0, 0, 28, 0, 0, 0, 31, 32, 33, 0,
|
0, 0, 28, 0, 0, 0, 31, 32, 33, 0,
|
||||||
6, 34, 44, 4, 5, 36, 35, 56, 0, 0,
|
6, 34, 44, 4, 5, 36, 35, 56, 0, 0,
|
||||||
0, 0, 0, 93, 0, 42, 90, 89, 91, 10,
|
0, 0, 0, 97, 0, 42, 94, 93, 95, 10,
|
||||||
12, 13, 14, 0, 17, 18, 19, 21, 0, 25,
|
12, 13, 14, 0, 17, 18, 19, 21, 0, 25,
|
||||||
0, 27, 29, 30, 99, 95, 94, 97, 37, 98,
|
0, 27, 29, 30, 103, 99, 98, 101, 37, 102,
|
||||||
0, 96, 0, 0, 73, 75, 78, 45, 0, 57,
|
0, 100, 0, 0, 77, 79, 82, 45, 0, 57,
|
||||||
0, 66, 71, 50, 67, 48, 51, 58, 63, 64,
|
0, 70, 75, 50, 71, 48, 51, 62, 67, 68,
|
||||||
65, 38, 60, 62, 39, 43, 92, 8, 15, 22,
|
69, 38, 64, 66, 39, 43, 96, 8, 15, 22,
|
||||||
26, 77, 76, 0, 74, 2, 83, 46, 52, 72,
|
26, 81, 80, 0, 78, 2, 87, 46, 52, 58,
|
||||||
68, 69, 59, 61, 101, 79, 80, 70, 83, 82,
|
60, 76, 72, 73, 63, 65, 105, 83, 84, 59,
|
||||||
0, 0, 0, 85, 84, 81, 86, 87, 88
|
61, 74, 87, 86, 0, 0, 0, 89, 88, 85,
|
||||||
|
90, 91, 92
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFGOTO[NTERM-NUM]. */
|
/* YYDEFGOTO[NTERM-NUM]. */
|
||||||
static const yytype_int8 yydefgoto[] =
|
static const yytype_int16 yydefgoto[] =
|
||||||
{
|
{
|
||||||
-1, 1, 2, 43, 82, 88, 45, 49, 48, 46,
|
-1, 1, 2, 43, 82, 88, 45, 49, 48, 46,
|
||||||
47, 90, 96, 101, 102, 92, 93, 83, 84, 85,
|
47, 90, 118, 119, 96, 101, 102, 92, 93, 83,
|
||||||
116, 125, 126, 58, 107, 55, 77, 86, 103, 79,
|
84, 85, 116, 127, 128, 58, 107, 55, 77, 86,
|
||||||
115
|
103, 79, 115
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||||
@@ -783,54 +786,55 @@ static const yytype_int8 yydefgoto[] =
|
|||||||
#define YYPACT_NINF -60
|
#define YYPACT_NINF -60
|
||||||
static const yytype_int16 yypact[] =
|
static const yytype_int16 yypact[] =
|
||||||
{
|
{
|
||||||
-60, 18, 96, -60, -60, -60, -16, 17, 24, -60,
|
-60, 18, 100, -60, -60, -60, -16, 24, 27, -60,
|
||||||
-60, -60, -8, -60, -60, 11, 70, -60, 71, 80,
|
-60, -60, -8, -60, -60, 11, 70, -60, 71, 80,
|
||||||
2, -60, 46, 87, 49, -60, 31, -60, -60, -60,
|
2, -60, 46, 87, 48, -60, 31, -60, -60, -60,
|
||||||
40, 50, -60, 91, 93, 0, -60, -60, -60, 15,
|
40, 49, -60, 91, 92, 0, -60, -60, -60, 15,
|
||||||
-60, -60, 51, -60, -60, -60, -60, 44, 12, 12,
|
-60, -60, 50, -60, -60, -60, -60, 43, 12, 12,
|
||||||
0, 25, 25, -60, 56, -60, -60, -60, 106, -60,
|
0, 25, 25, -60, 55, -60, -60, -60, 97, -60,
|
||||||
-60, -60, -60, 107, -60, -60, -60, -60, 108, -60,
|
-60, -60, -60, 98, -60, -60, -60, -60, 99, -60,
|
||||||
136, -60, -60, -60, -60, -60, -60, -60, -60, -60,
|
110, -60, -60, -60, -60, -60, -60, -60, -60, -60,
|
||||||
88, -60, 89, 1, -60, -60, -60, -60, 56, -60,
|
51, -60, 62, 1, -60, -60, -60, -60, 55, -60,
|
||||||
0, -60, -60, 12, 84, 12, 0, -60, -60, -60,
|
0, -60, -60, 12, 84, 12, 0, -60, -60, -60,
|
||||||
-60, 25, -60, -60, 25, -60, -60, -60, -60, -60,
|
-60, 25, -60, -60, 25, -60, -60, -60, -60, -60,
|
||||||
-60, -60, -60, 97, -60, -60, -60, -60, 0, -60,
|
-60, -60, -60, 101, -60, -60, -60, -60, 0, -60,
|
||||||
140, -60, -60, -60, -60, 14, 38, -60, -60, -60,
|
111, -60, 140, -60, -60, -60, -60, 10, 38, -60,
|
||||||
0, 142, 98, -60, -60, 38, -60, -60, -60
|
-60, -60, -60, -60, 0, 141, 94, -60, -60, 38,
|
||||||
|
-60, -60, -60
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPGOTO[NTERM-NUM]. */
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
static const yytype_int16 yypgoto[] =
|
static const yytype_int16 yypgoto[] =
|
||||||
{
|
{
|
||||||
-60, -60, -60, -60, 147, -60, -60, -60, -60, -60,
|
-60, -60, -60, -60, 142, -60, -60, -60, -60, -60,
|
||||||
-60, -60, 54, 101, -59, -25, 105, -60, 67, -60,
|
-60, -60, -60, 30, -60, 102, -59, -27, 104, -60,
|
||||||
-60, -60, 27, -60, -60, -50, -19, -60, -35, -58,
|
67, -60, -60, -60, 23, -60, -60, -50, -19, -60,
|
||||||
-60
|
-35, -58, -60
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
positive, shift that token. If negative, reduce the rule which
|
positive, shift that token. If negative, reduce the rule which
|
||||||
number is the opposite. If zero, do what YYDEFACT says.
|
number is the opposite. If zero, do what YYDEFACT says.
|
||||||
If YYTABLE_NINF, syntax error. */
|
If YYTABLE_NINF, syntax error. */
|
||||||
#define YYTABLE_NINF -101
|
#define YYTABLE_NINF -105
|
||||||
static const yytype_int16 yytable[] =
|
static const yytype_int16 yytable[] =
|
||||||
{
|
{
|
||||||
78, -100, 80, 74, 105, 62, 4, 5, 6, 7,
|
78, -104, 80, 74, 105, 62, 4, 5, 6, 7,
|
||||||
8, 9, 10, 11, 56, 97, 80, 12, 3, 14,
|
8, 9, 10, 11, 56, 97, 80, 12, 3, 14,
|
||||||
4, 5, 6, 7, 8, 9, 10, 11, 74, 94,
|
4, 5, 6, 7, 8, 9, 10, 11, 74, 94,
|
||||||
94, 12, 27, 14, 67, 53, 121, 50, 117, 54,
|
94, 12, 27, 14, 67, 53, 123, 50, 117, 54,
|
||||||
35, 74, 123, 69, 75, 123, 27, 76, 63, 81,
|
35, 74, 125, 69, 75, 125, 27, 76, 63, 81,
|
||||||
113, 130, 131, 132, 35, 97, 75, 42, 57, 76,
|
113, 134, 135, 136, 35, 120, 75, 42, 57, 76,
|
||||||
51, 122, 127, 81, 128, 91, 129, 52, 119, 75,
|
132, 124, 133, 81, 131, 91, 121, 51, 121, 75,
|
||||||
119, 42, 76, 59, 94, 60, 94, 68, 98, 99,
|
52, 42, 76, 59, 94, 60, 94, 68, 98, 99,
|
||||||
100, 133, 75, 122, 61, 76, 70, 74, 120, 64,
|
100, 137, 75, 120, 61, 76, 70, 74, 122, 64,
|
||||||
65, 134, 66, 71, 72, 136, 73, 89, 87, 53,
|
65, 66, 71, 138, 72, 73, 89, 87, 53, 140,
|
||||||
134, 4, 5, 6, 7, 8, 9, 10, 11, 106,
|
106, 108, 109, 111, 138, 4, 5, 6, 7, 8,
|
||||||
108, 109, 12, 13, 14, 15, 16, 17, 18, 19,
|
9, 10, 11, 110, 112, 130, 12, 13, 14, 15,
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
|
||||||
30, 31, 32, 33, 34, 35, 36, 37, 38, 110,
|
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||||
111, 112, 124, 74, 118, 39, 137, 40, 41, 44,
|
36, 37, 38, 74, 44, 141, 126, 142, 129, 39,
|
||||||
114, 138, 42, 104, 95, 135
|
114, 40, 41, 95, 104, 139, 42
|
||||||
};
|
};
|
||||||
|
|
||||||
static const yytype_uint8 yycheck[] =
|
static const yytype_uint8 yycheck[] =
|
||||||
@@ -841,16 +845,16 @@ static const yytype_uint8 yycheck[] =
|
|||||||
49, 16, 31, 18, 3, 43, 94, 53, 88, 47,
|
49, 16, 31, 18, 3, 43, 94, 53, 88, 47,
|
||||||
39, 3, 101, 3, 44, 104, 31, 47, 46, 48,
|
39, 3, 101, 3, 44, 104, 31, 47, 46, 48,
|
||||||
49, 13, 14, 15, 39, 90, 44, 56, 47, 47,
|
49, 13, 14, 15, 39, 90, 44, 56, 47, 47,
|
||||||
43, 96, 120, 48, 50, 53, 52, 43, 93, 44,
|
50, 96, 52, 48, 122, 53, 93, 43, 95, 44,
|
||||||
95, 56, 47, 3, 93, 4, 95, 46, 53, 54,
|
43, 56, 47, 3, 93, 4, 95, 46, 53, 54,
|
||||||
55, 43, 44, 118, 4, 47, 46, 3, 4, 43,
|
55, 43, 44, 118, 4, 47, 46, 3, 4, 43,
|
||||||
3, 126, 43, 43, 3, 130, 3, 53, 47, 43,
|
3, 43, 43, 128, 3, 3, 53, 47, 43, 134,
|
||||||
135, 5, 6, 7, 8, 9, 10, 11, 12, 3,
|
3, 3, 3, 52, 139, 5, 6, 7, 8, 9,
|
||||||
3, 3, 16, 17, 18, 19, 20, 21, 22, 23,
|
10, 11, 12, 3, 52, 4, 16, 17, 18, 19,
|
||||||
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
||||||
34, 35, 36, 37, 38, 39, 40, 41, 42, 3,
|
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
||||||
52, 52, 45, 3, 90, 49, 4, 51, 52, 2,
|
40, 41, 42, 3, 2, 4, 45, 53, 118, 49,
|
||||||
83, 53, 56, 52, 49, 128
|
83, 51, 52, 49, 52, 132, 56
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||||
@@ -862,15 +866,16 @@ static const yytype_uint8 yystos[] =
|
|||||||
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
|
||||||
34, 35, 36, 37, 38, 39, 40, 41, 42, 49,
|
34, 35, 36, 37, 38, 39, 40, 41, 42, 49,
|
||||||
51, 52, 56, 60, 61, 63, 66, 67, 65, 64,
|
51, 52, 56, 60, 61, 63, 66, 67, 65, 64,
|
||||||
53, 43, 43, 43, 47, 82, 3, 47, 80, 3,
|
53, 43, 43, 43, 47, 84, 3, 47, 82, 3,
|
||||||
4, 4, 3, 46, 43, 3, 43, 3, 46, 3,
|
4, 4, 3, 46, 43, 3, 43, 3, 46, 3,
|
||||||
46, 43, 3, 3, 3, 44, 47, 83, 85, 86,
|
46, 43, 3, 3, 3, 44, 47, 85, 87, 88,
|
||||||
1, 48, 61, 74, 75, 76, 84, 47, 62, 53,
|
1, 48, 61, 76, 77, 78, 86, 47, 62, 53,
|
||||||
68, 53, 72, 73, 83, 73, 69, 85, 53, 54,
|
68, 53, 74, 75, 85, 75, 71, 87, 53, 54,
|
||||||
55, 70, 71, 85, 70, 82, 3, 81, 3, 3,
|
55, 72, 73, 87, 72, 84, 3, 83, 3, 3,
|
||||||
3, 52, 52, 49, 75, 87, 77, 82, 69, 72,
|
3, 52, 52, 49, 77, 89, 79, 84, 69, 70,
|
||||||
4, 86, 85, 71, 45, 78, 79, 86, 50, 52,
|
87, 74, 4, 88, 87, 73, 45, 80, 81, 70,
|
||||||
13, 14, 15, 43, 85, 79, 85, 4, 53
|
4, 88, 50, 52, 13, 14, 15, 43, 87, 81,
|
||||||
|
87, 4, 53
|
||||||
};
|
};
|
||||||
|
|
||||||
#define yyerrok (yyerrstatus = 0)
|
#define yyerrok (yyerrstatus = 0)
|
||||||
@@ -1025,7 +1030,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
|
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1029 "parse-gram.c"
|
#line 1034 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 4: /* "\"integer\"" */
|
case 4: /* "\"integer\"" */
|
||||||
|
|
||||||
@@ -1034,7 +1039,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
|
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1038 "parse-gram.c"
|
#line 1043 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 43: /* "\"{...}\"" */
|
case 43: /* "\"{...}\"" */
|
||||||
|
|
||||||
@@ -1043,7 +1048,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1047 "parse-gram.c"
|
#line 1052 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 44: /* "\"char\"" */
|
case 44: /* "\"char\"" */
|
||||||
|
|
||||||
@@ -1052,7 +1057,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs (char_name ((yyvaluep->character)), stderr); };
|
{ fputs (char_name ((yyvaluep->character)), stderr); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1056 "parse-gram.c"
|
#line 1061 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 45: /* "\"epilogue\"" */
|
case 45: /* "\"epilogue\"" */
|
||||||
|
|
||||||
@@ -1061,7 +1066,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1065 "parse-gram.c"
|
#line 1070 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 47: /* "\"identifier\"" */
|
case 47: /* "\"identifier\"" */
|
||||||
|
|
||||||
@@ -1070,7 +1075,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1074 "parse-gram.c"
|
#line 1079 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 48: /* "\"identifier:\"" */
|
case 48: /* "\"identifier:\"" */
|
||||||
|
|
||||||
@@ -1079,7 +1084,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
|
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1083 "parse-gram.c"
|
#line 1088 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 51: /* "\"%{...%}\"" */
|
case 51: /* "\"%{...%}\"" */
|
||||||
|
|
||||||
@@ -1088,7 +1093,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1092 "parse-gram.c"
|
#line 1097 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 53: /* "\"type\"" */
|
case 53: /* "\"type\"" */
|
||||||
|
|
||||||
@@ -1097,70 +1102,70 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
|||||||
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
|
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1101 "parse-gram.c"
|
#line 1106 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 80: /* "variable" */
|
case 82: /* "variable" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 189 "parse-gram.y"
|
#line 189 "parse-gram.y"
|
||||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1110 "parse-gram.c"
|
#line 1115 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 81: /* "content.opt" */
|
case 83: /* "content.opt" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 184 "parse-gram.y"
|
#line 184 "parse-gram.y"
|
||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1119 "parse-gram.c"
|
#line 1124 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 82: /* "braceless" */
|
case 84: /* "braceless" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 184 "parse-gram.y"
|
#line 184 "parse-gram.y"
|
||||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1128 "parse-gram.c"
|
#line 1133 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 83: /* "id" */
|
case 85: /* "id" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 196 "parse-gram.y"
|
#line 196 "parse-gram.y"
|
||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1137 "parse-gram.c"
|
#line 1142 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 84: /* "id_colon" */
|
case 86: /* "id_colon" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 197 "parse-gram.y"
|
#line 197 "parse-gram.y"
|
||||||
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1146 "parse-gram.c"
|
#line 1151 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 85: /* "symbol" */
|
case 87: /* "symbol" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 196 "parse-gram.y"
|
#line 196 "parse-gram.y"
|
||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1155 "parse-gram.c"
|
#line 1160 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
case 86: /* "string_as_id" */
|
case 88: /* "string_as_id" */
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 196 "parse-gram.y"
|
#line 196 "parse-gram.y"
|
||||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1164 "parse-gram.c"
|
#line 1169 "parse-gram.c"
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -1612,10 +1617,10 @@ YYLTYPE yylloc;
|
|||||||
YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
|
YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Three stacks and their tools:
|
/* The stacks and their tools:
|
||||||
`yyss': related to states,
|
`yyss' is related to states.
|
||||||
`yyvs': related to semantic values,
|
`yyvs' is related to semantic values.
|
||||||
`yyls': related to locations.
|
`yyls' is related to locations.
|
||||||
|
|
||||||
Refer to the stacks thru separate pointers, to allow yyoverflow
|
Refer to the stacks thru separate pointers, to allow yyoverflow
|
||||||
to reallocate them elsewhere. */
|
to reallocate them elsewhere. */
|
||||||
@@ -1684,7 +1689,7 @@ YYLTYPE yylloc;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 1688 "parse-gram.c"
|
#line 1693 "parse-gram.c"
|
||||||
yylsp[0] = yylloc;
|
yylsp[0] = yylloc;
|
||||||
goto yysetstate;
|
goto yysetstate;
|
||||||
|
|
||||||
@@ -2334,68 +2339,96 @@ yyreduce:
|
|||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 436 "parse-gram.y"
|
#line 436 "parse-gram.y"
|
||||||
{ (yyval.list) = (yyvsp[(1) - (1)].list); }
|
{ (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 61:
|
case 61:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 437 "parse-gram.y"
|
#line 437 "parse-gram.y"
|
||||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
|
{ (yyval.symbol) = (yyvsp[(1) - (2)].symbol); symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 62:
|
case 62:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 441 "parse-gram.y"
|
#line 443 "parse-gram.y"
|
||||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 63:
|
case 63:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 442 "parse-gram.y"
|
#line 445 "parse-gram.y"
|
||||||
{ (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 64:
|
case 64:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 443 "parse-gram.y"
|
#line 449 "parse-gram.y"
|
||||||
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
|
{ (yyval.list) = (yyvsp[(1) - (1)].list); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 65:
|
case 65:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 444 "parse-gram.y"
|
#line 450 "parse-gram.y"
|
||||||
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
|
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 66:
|
case 66:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 450 "parse-gram.y"
|
#line 454 "parse-gram.y"
|
||||||
{
|
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||||
current_type = (yyvsp[(1) - (1)].uniqstr);
|
|
||||||
tag_seen = true;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 67:
|
case 67:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 455 "parse-gram.y"
|
#line 455 "parse-gram.y"
|
||||||
|
{ (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 68:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 456 "parse-gram.y"
|
||||||
|
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 69:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 457 "parse-gram.y"
|
||||||
|
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 70:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 463 "parse-gram.y"
|
||||||
|
{
|
||||||
|
current_type = (yyvsp[(1) - (1)].uniqstr);
|
||||||
|
tag_seen = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 71:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 468 "parse-gram.y"
|
||||||
{
|
{
|
||||||
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
|
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
|
||||||
symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
|
symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 68:
|
case 72:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 460 "parse-gram.y"
|
#line 473 "parse-gram.y"
|
||||||
{
|
{
|
||||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||||
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
||||||
@@ -2403,10 +2436,10 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 69:
|
case 73:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 466 "parse-gram.y"
|
#line 479 "parse-gram.y"
|
||||||
{
|
{
|
||||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||||
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
||||||
@@ -2414,10 +2447,10 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 70:
|
case 74:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 472 "parse-gram.y"
|
#line 485 "parse-gram.y"
|
||||||
{
|
{
|
||||||
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
|
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
|
||||||
symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
|
symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
|
||||||
@@ -2426,98 +2459,98 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 77:
|
case 81:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 502 "parse-gram.y"
|
#line 515 "parse-gram.y"
|
||||||
{
|
{
|
||||||
yyerrok;
|
yyerrok;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 78:
|
case 82:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 508 "parse-gram.y"
|
#line 521 "parse-gram.y"
|
||||||
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
|
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 80:
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
|
||||||
#line 512 "parse-gram.y"
|
|
||||||
{ grammar_current_rule_end ((yylsp[(1) - (1)])); }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 81:
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
|
||||||
#line 513 "parse-gram.y"
|
|
||||||
{ grammar_current_rule_end ((yylsp[(3) - (3)])); }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 83:
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
|
||||||
#line 519 "parse-gram.y"
|
|
||||||
{ grammar_current_rule_begin (current_lhs, current_lhs_location); }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 84:
|
case 84:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 521 "parse-gram.y"
|
#line 525 "parse-gram.y"
|
||||||
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
|
{ grammar_current_rule_end ((yylsp[(1) - (1)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 85:
|
case 85:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 523 "parse-gram.y"
|
#line 526 "parse-gram.y"
|
||||||
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
{ grammar_current_rule_end ((yylsp[(3) - (3)])); }
|
||||||
break;
|
|
||||||
|
|
||||||
case 86:
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
|
||||||
#line 525 "parse-gram.y"
|
|
||||||
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 87:
|
case 87:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 527 "parse-gram.y"
|
#line 532 "parse-gram.y"
|
||||||
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
|
{ grammar_current_rule_begin (current_lhs, current_lhs_location); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 88:
|
case 88:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 529 "parse-gram.y"
|
#line 534 "parse-gram.y"
|
||||||
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
|
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 89:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 536 "parse-gram.y"
|
||||||
|
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 90:
|
case 90:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 539 "parse-gram.y"
|
#line 538 "parse-gram.y"
|
||||||
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
|
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 91:
|
case 91:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 545 "parse-gram.y"
|
#line 540 "parse-gram.y"
|
||||||
|
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 92:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 542 "parse-gram.y"
|
||||||
|
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 94:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 552 "parse-gram.y"
|
||||||
|
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 95:
|
||||||
|
|
||||||
|
/* Line 22 of yacc.c */
|
||||||
|
#line 558 "parse-gram.y"
|
||||||
{
|
{
|
||||||
(yyval.chars) = "";
|
(yyval.chars) = "";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 93:
|
case 97:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 558 "parse-gram.y"
|
#line 571 "parse-gram.y"
|
||||||
{
|
{
|
||||||
code_props plain_code;
|
code_props plain_code;
|
||||||
(yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
|
(yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
|
||||||
@@ -2528,17 +2561,17 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 94:
|
case 98:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 578 "parse-gram.y"
|
#line 591 "parse-gram.y"
|
||||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 95:
|
case 99:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 580 "parse-gram.y"
|
#line 593 "parse-gram.y"
|
||||||
{
|
{
|
||||||
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
||||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||||
@@ -2546,27 +2579,27 @@ yyreduce:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 96:
|
case 100:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 588 "parse-gram.y"
|
#line 601 "parse-gram.y"
|
||||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 99:
|
case 103:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 600 "parse-gram.y"
|
#line 613 "parse-gram.y"
|
||||||
{
|
{
|
||||||
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
||||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 101:
|
case 105:
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 609 "parse-gram.y"
|
#line 622 "parse-gram.y"
|
||||||
{
|
{
|
||||||
code_props plain_code;
|
code_props plain_code;
|
||||||
code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
|
code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
|
||||||
@@ -2580,7 +2613,7 @@ yyreduce:
|
|||||||
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 2584 "parse-gram.c"
|
#line 2617 "parse-gram.c"
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
||||||
@@ -2799,7 +2832,7 @@ yyreturn:
|
|||||||
|
|
||||||
|
|
||||||
/* Line 22 of yacc.c */
|
/* Line 22 of yacc.c */
|
||||||
#line 619 "parse-gram.y"
|
#line 632 "parse-gram.y"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
%{/* Bison Grammar Parser -*- C -*-
|
%{/* Bison Grammar Parser -*- C -*-
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation,
|
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
||||||
Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -192,12 +192,12 @@ static int current_prec = 0;
|
|||||||
%type <integer> INT
|
%type <integer> INT
|
||||||
%printer { fprintf (stderr, "%d", $$); } INT
|
%printer { fprintf (stderr, "%d", $$); } INT
|
||||||
|
|
||||||
%type <symbol> id id_colon symbol string_as_id
|
%type <symbol> id id_colon symbol symbol.prec string_as_id
|
||||||
%printer { fprintf (stderr, "%s", $$->tag); } id symbol string_as_id
|
%printer { fprintf (stderr, "%s", $$->tag); } id symbol string_as_id
|
||||||
%printer { fprintf (stderr, "%s:", $$->tag); } id_colon
|
%printer { fprintf (stderr, "%s:", $$->tag); } id_colon
|
||||||
|
|
||||||
%type <assoc> precedence_declarator
|
%type <assoc> precedence_declarator
|
||||||
%type <list> symbols.1 generic_symlist generic_symlist_item
|
%type <list> symbols.1 symbols.prec generic_symlist generic_symlist_item
|
||||||
%%
|
%%
|
||||||
|
|
||||||
input:
|
input:
|
||||||
@@ -399,7 +399,7 @@ symbol_declaration:
|
|||||||
;
|
;
|
||||||
|
|
||||||
precedence_declaration:
|
precedence_declaration:
|
||||||
precedence_declarator type.opt symbols.1
|
precedence_declarator type.opt symbols.prec
|
||||||
{
|
{
|
||||||
symbol_list *list;
|
symbol_list *list;
|
||||||
++current_prec;
|
++current_prec;
|
||||||
@@ -424,6 +424,19 @@ type.opt:
|
|||||||
| TYPE { current_type = $1; tag_seen = true; }
|
| TYPE { current_type = $1; tag_seen = true; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/* Just like symbols.1 but accept INT for the sake of POSIX. */
|
||||||
|
symbols.prec:
|
||||||
|
symbol.prec
|
||||||
|
{ $$ = symbol_list_sym_new ($1, @1); }
|
||||||
|
| symbols.prec symbol.prec
|
||||||
|
{ $$ = symbol_list_prepend ($1, symbol_list_sym_new ($2, @2)); }
|
||||||
|
;
|
||||||
|
|
||||||
|
symbol.prec:
|
||||||
|
symbol { $$ = $1; }
|
||||||
|
| symbol INT { $$ = $1; symbol_user_token_number_set ($1, $2, @2); }
|
||||||
|
;
|
||||||
|
|
||||||
/* One or more symbols to be %typed. */
|
/* One or more symbols to be %typed. */
|
||||||
symbols.1:
|
symbols.1:
|
||||||
symbol
|
symbol
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* Symbol table manager for Bison.
|
/* Symbol table manager for Bison.
|
||||||
|
|
||||||
Copyright (C) 1984, 1989, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free
|
Copyright (C) 1984, 1989, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008
|
||||||
Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -358,8 +358,6 @@ symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
|
|||||||
{
|
{
|
||||||
int *user_token_numberp;
|
int *user_token_numberp;
|
||||||
|
|
||||||
aver (sym->class == token_sym);
|
|
||||||
|
|
||||||
if (sym->user_token_number != USER_NUMBER_ALIAS)
|
if (sym->user_token_number != USER_NUMBER_ALIAS)
|
||||||
user_token_numberp = &sym->user_token_number;
|
user_token_numberp = &sym->user_token_number;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Bison Regressions. -*- Autotest -*-
|
# Bison Regressions. -*- Autotest -*-
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
|
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
||||||
# Foundation, Inc.
|
# Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@@ -1181,3 +1181,64 @@ state 2
|
|||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------------------------------- ##
|
||||||
|
## Token number in precedence declaration. ##
|
||||||
|
## ---------------------------------------- ##
|
||||||
|
|
||||||
|
AT_SETUP([[Token number in precedence declaration.]])
|
||||||
|
|
||||||
|
# POSIX says token numbers can be declared in %left, %right, and %nonassoc, but
|
||||||
|
# we lost this in Bison 1.50.
|
||||||
|
|
||||||
|
AT_DATA_GRAMMAR([input.y],
|
||||||
|
[[%{
|
||||||
|
#include <stdio.h>
|
||||||
|
void yyerror (char const *);
|
||||||
|
int yylex (void);
|
||||||
|
%}
|
||||||
|
|
||||||
|
%error-verbose
|
||||||
|
%left TK1 1 TK2 2 "tok alias" 3
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
start: TK1 sr_conflict "tok alias" ;
|
||||||
|
|
||||||
|
sr_conflict:
|
||||||
|
TK2
|
||||||
|
| TK2 "tok alias"
|
||||||
|
;
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
void
|
||||||
|
yyerror (char const *msg)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s\n", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
yylex (void)
|
||||||
|
{
|
||||||
|
static int const input[] = { 1, 2, 3, 0 };
|
||||||
|
static int const *inputp = input;
|
||||||
|
return *inputp++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
return yyparse ();
|
||||||
|
}
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_BISON_CHECK([[-o input.c input.y]], [[0]],,
|
||||||
|
[[input.y:24.5-19: warning: rule useless in parser due to conflicts: sr_conflict: TK2 "tok alias"
|
||||||
|
]])
|
||||||
|
AT_COMPILE([[input]])
|
||||||
|
AT_PARSER_CHECK([[./input]])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user