mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
lalr1.cc: location_type: make sure we don't depend on loc.(begin|end).
* tests/calc.at (Span): Instead of begin/end, as in the built-in location class, use first and last. Define YYLLOC_DEFAULT to adjust to these changes. * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Adjust to the location_type changes.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2010-05-04 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
|
lalr1.cc: location_type: make sure we don't depend on loc.(begin|end).
|
||||||
|
* tests/calc.at (Span): Instead of begin/end, as in the built-in
|
||||||
|
location class, use first and last.
|
||||||
|
Define YYLLOC_DEFAULT to adjust to these changes.
|
||||||
|
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Adjust to the
|
||||||
|
location_type changes.
|
||||||
|
|
||||||
2010-05-01 Joel E. Denny <joeldenny@joeldenny.org>
|
2010-05-01 Joel E. Denny <joeldenny@joeldenny.org>
|
||||||
|
|
||||||
tests: fix maintainer-xml-check.
|
tests: fix maintainer-xml-check.
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ AT_SKEL_CC_IF(
|
|||||||
[%define global_tokens_and_yystype])[
|
[%define global_tokens_and_yystype])[
|
||||||
%code requires
|
%code requires
|
||||||
{
|
{
|
||||||
]AT_LOCATION_TYPE_IF([
|
]AT_LOCATION_TYPE_IF([[
|
||||||
# include <iostream>
|
# include <iostream>
|
||||||
struct Point
|
struct Point
|
||||||
{
|
{
|
||||||
@@ -166,10 +166,24 @@ AT_SKEL_CC_IF(
|
|||||||
|
|
||||||
struct Span
|
struct Span
|
||||||
{
|
{
|
||||||
Point begin;
|
Point first;
|
||||||
Point end;
|
Point last;
|
||||||
};
|
};
|
||||||
])[
|
|
||||||
|
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
||||||
|
do { \
|
||||||
|
if (N) \
|
||||||
|
{ \
|
||||||
|
(Current).first = (Rhs)[1].location.first; \
|
||||||
|
(Current).last = (Rhs)[N].location.last; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
{ \
|
||||||
|
(Current).first = (Current).last = (Rhs)[0].location.last; \
|
||||||
|
} \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
]])[
|
||||||
/* Exercise pre-prologue dependency to %union. */
|
/* Exercise pre-prologue dependency to %union. */
|
||||||
typedef int semantic_value;
|
typedef int semantic_value;
|
||||||
}
|
}
|
||||||
@@ -207,6 +221,7 @@ FILE *input;
|
|||||||
static semantic_value global_result = 0;
|
static semantic_value global_result = 0;
|
||||||
static int global_count = 0;
|
static int global_count = 0;
|
||||||
static int power (int base, int exponent);
|
static int power (int base, int exponent);
|
||||||
|
|
||||||
]AT_SKEL_CC_IF(,
|
]AT_SKEL_CC_IF(,
|
||||||
[/* yyerror receives the location if:
|
[/* yyerror receives the location if:
|
||||||
- %location & %pure & %glr
|
- %location & %pure & %glr
|
||||||
@@ -278,11 +293,11 @@ exp:
|
|||||||
std::ostream&
|
std::ostream&
|
||||||
operator<< (std::ostream& o, const Span& s)
|
operator<< (std::ostream& o, const Span& s)
|
||||||
{
|
{
|
||||||
o << s.begin.l << '.' << s.begin.c;
|
o << s.first.l << '.' << s.first.c;
|
||||||
if (s.begin.l != s.end.l)
|
if (s.first.l != s.last.l)
|
||||||
o << '-' << s.end.l << '.' << s.end.c - 1;
|
o << '-' << s.last.l << '.' << s.last.c - 1;
|
||||||
else if (s.begin.c != s.end.c - 1)
|
else if (s.first.c != s.last.c - 1)
|
||||||
o << '-' << s.end.c - 1;
|
o << '-' << s.last.c - 1;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
]])
|
]])
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ AT_PURE_LEX_IF(
|
|||||||
|
|
||||||
AT_SKEL_CC_IF(
|
AT_SKEL_CC_IF(
|
||||||
[AT_LOCATION_TYPE_IF(
|
[AT_LOCATION_TYPE_IF(
|
||||||
[AT_LOC_PUSHDEF([begin.l], [begin.c], [end.l], [end.c])],
|
[AT_LOC_PUSHDEF([first.l], [first.c], [last.l], [last.c])],
|
||||||
[AT_LOC_PUSHDEF([begin.line], [begin.column], [end.line], [end.column])])],
|
[AT_LOC_PUSHDEF([begin.line], [begin.column], [end.line], [end.column])])],
|
||||||
[AT_LOC_PUSHDEF([first_line], [first_column], [last_line], [last_column])])
|
[AT_LOC_PUSHDEF([first_line], [first_column], [last_line], [last_column])])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user