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:
Akim Demaille
2010-04-14 16:37:54 +02:00
parent bc81de36b7
commit 49976d5c45
3 changed files with 34 additions and 10 deletions

View File

@@ -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.

View File

@@ -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;
} }
]]) ]])

View File

@@ -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])])