[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Using "%define location_type" c++ skeleton should exclude default lo
From: |
Akim Demaille |
Subject: |
Re: Using "%define location_type" c++ skeleton should exclude default location |
Date: |
Tue, 4 May 2010 15:24:14 +0200 |
Le 14 avr. 2010 à 13:19, Akim Demaille a écrit :
> I have installed a first batch of changes in 2.5 and 2.6 to this end. I
> think I failed to keep you in CC, please have a look at the archive (it
> should appear in
> http://lists.gnu.org/archive/html/bison-patches/2010-04/threads.html I guess).
Installed in master, will be installed in 2.5 too.
From 49976d5c45048312c97c4eec4b607660444642a9 Mon Sep 17 00:00:00 2001
From: Akim Demaille <address@hidden>
Date: Wed, 14 Apr 2010 16:37:54 +0200
Subject: [PATCH 14/18] 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.
---
ChangeLog | 9 +++++++++
tests/calc.at | 33 ++++++++++++++++++++++++---------
tests/local.at | 2 +-
3 files changed, 34 insertions(+), 10 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index fcc5975..3b3cd4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2010-05-04 Akim Demaille <address@hidden>
+
+ 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 <address@hidden>
tests: fix maintainer-xml-check.
diff --git a/tests/calc.at b/tests/calc.at
index 1a3096e..08ccbe4 100644
--- a/tests/calc.at
+++ b/tests/calc.at
@@ -156,7 +156,7 @@ AT_SKEL_CC_IF(
[%define global_tokens_and_yystype])[
%code requires
{
-]AT_LOCATION_TYPE_IF([
+]AT_LOCATION_TYPE_IF([[
# include <iostream>
struct Point
{
@@ -166,10 +166,24 @@ AT_SKEL_CC_IF(
struct Span
{
- Point begin;
- Point end;
+ Point first;
+ 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. */
typedef int semantic_value;
}
@@ -207,6 +221,7 @@ FILE *input;
static semantic_value global_result = 0;
static int global_count = 0;
static int power (int base, int exponent);
+
]AT_SKEL_CC_IF(,
[/* yyerror receives the location if:
- %location & %pure & %glr
@@ -278,11 +293,11 @@ exp:
std::ostream&
operator<< (std::ostream& o, const Span& s)
{
- o << s.begin.l << '.' << s.begin.c;
- if (s.begin.l != s.end.l)
- o << '-' << s.end.l << '.' << s.end.c - 1;
- else if (s.begin.c != s.end.c - 1)
- o << '-' << s.end.c - 1;
+ o << s.first.l << '.' << s.first.c;
+ if (s.first.l != s.last.l)
+ o << '-' << s.last.l << '.' << s.last.c - 1;
+ else if (s.first.c != s.last.c - 1)
+ o << '-' << s.last.c - 1;
return o;
}
]])
diff --git a/tests/local.at b/tests/local.at
index 8ebf26a..6b9dad7 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -155,7 +155,7 @@ AT_PURE_LEX_IF(
AT_SKEL_CC_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([first_line], [first_column], [last_line], [last_column])])
--
1.7.0.5
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location,
Akim Demaille <=
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04
- Re: Using "%define location_type" c++ skeleton should exclude default location, Akim Demaille, 2010/05/04