[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] muscle: factor the handling of obsolete of obsolete directives.
From: |
Akim Demaille |
Subject: |
[PATCH] muscle: factor the handling of obsolete of obsolete directives. |
Date: |
Sun, 5 Apr 2009 21:48:45 +0200 |
Suggested by Joel E. Denny.
* src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
New, extracted from...
* src/parse-gram.y (prologue_declaration: pure-parser): here.
Remove it.
(prologue_declaration: "%<flag>"): Use
muscle_percent_define_ensure.
(%error-verbose, %pure-parser): No longer tokens.
* src/scan-gram.l (pure-parser): Return as a %<flag>.
---
ChangeLog | 14 ++++++++++++++
src/muscle_tab.c | 26 ++++++++++++++++++++++++--
src/muscle_tab.h | 11 ++++++++++-
src/parse-gram.y | 17 +----------------
src/scan-gram.l | 2 +-
5 files changed, 50 insertions(+), 20 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 141039d..483f6ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2009-04-06 Akim Demaille <address@hidden>
+
+ muscle: factor the handling of obsolete of obsolete directives.
+ Suggested by Joel E. Denny.
+
+ * src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
+ New, extracted from...
+ * src/parse-gram.y (prologue_declaration: pure-parser): here.
+ Remove it.
+ (prologue_declaration: "%<flag>"): Use
+ muscle_percent_define_ensure.
+ (%error-verbose, %pure-parser): No longer tokens.
+ * src/scan-gram.l (pure-parser): Return as a %<flag>.
+
2009-04-06 Joel E. Denny <address@hidden>
Fix options documentation.
diff --git a/src/muscle_tab.c b/src/muscle_tab.c
index 0265e45..3728ade 100644
--- a/src/muscle_tab.c
+++ b/src/muscle_tab.c
@@ -1,7 +1,7 @@
/* Muscle table manager for Bison.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
- Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -429,6 +429,28 @@ muscle_percent_define_insert (char const *variable,
location variable_loc,
variable_loc);
}
+/* This is used for backward compatibility, e.g., "%define api.pure"
+ supersedes "%pure-parser". */
+void
+muscle_percent_define_ensure (char const *variable, location loc,
+ bool value)
+{
+ char const *val = value ? "" : "false";
+ char const *name;
+ MUSCLE_USER_NAME_CONVERT (name, "percent_define(", variable, ")");
+
+ /* %pure-parser is deprecated in favor of `%define api.pure', so use
+ `%define api.pure' in a backward-compatible manner here. First,
+ don't complain if %pure-parser is specified multiple times. */
+ if (!muscle_find_const (name))
+ muscle_percent_define_insert (variable, loc, val);
+ /* In all cases, use api.pure now so that the backend doesn't complain if
+ the skeleton ignores api.pure, but do warn now if there's a previous
+ conflicting definition from an actual %define. */
+ if (muscle_percent_define_flag_if (variable) != value)
+ muscle_percent_define_insert (variable, loc, val);
+}
+
char *
muscle_percent_define_get (char const *variable)
{
diff --git a/src/muscle_tab.h b/src/muscle_tab.h
index 941c67e..3fe64e5 100644
--- a/src/muscle_tab.h
+++ b/src/muscle_tab.h
@@ -1,5 +1,7 @@
/* Muscle table manager for Bison,
- Copyright (C) 2001, 2002, 2003, 2006, 2007, 2008 Free Software Foundation,
Inc.
+
+ Copyright (C) 2001, 2002, 2003, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -131,6 +133,13 @@ void muscle_user_name_list_grow (char const *key, char
const *user_name,
void muscle_percent_define_insert (char const *variable, location variable_loc,
char const *value);
+/* Make sure that VARIABLE is set to the boolean VALUE. Warn on mismatches
+ only, but accept repeated declaration. Used for backward compatibility
+ between old directives such as %pure-parser, and the recommended use of
+ variables (%define api.pure). */
+void muscle_percent_define_ensure (char const *variable, location variable_loc,
+ bool value);
+
/* Mimic b4_percent_define_get in ../data/bison.m4 exactly. That is, if the
%define variable VARIABLE is defined, return its value. Otherwise, return
the empty string. Also, record Bison's usage of VARIABLE by defining
diff --git a/src/parse-gram.y b/src/parse-gram.y
index c7238de..7277105 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -131,7 +131,6 @@ static int current_prec = 0;
PERCENT_DEFAULT_PREC "%default-prec"
PERCENT_DEFINE "%define"
PERCENT_DEFINES "%defines"
- PERCENT_ERROR_VERBOSE "%error-verbose"
PERCENT_EXPECT "%expect"
PERCENT_EXPECT_RR "%expect-rr"
PERCENT_FLAG "%<flag>"
@@ -148,7 +147,6 @@ static int current_prec = 0;
"%nondeterministic-parser"
PERCENT_OUTPUT "%output"
PERCENT_PARSE_PARAM "%parse-param"
- PERCENT_PURE_PARSER "%pure-parser"
PERCENT_REQUIRE "%require"
PERCENT_SKELETON "%skeleton"
PERCENT_START "%start"
@@ -228,7 +226,7 @@ prologue_declaration:
}
| "%<flag>"
{
- muscle_percent_define_insert ($1, @1, "");
+ muscle_percent_define_ensure ($1, @1, true);
}
| "%define" variable content.opt
{
@@ -268,19 +266,6 @@ prologue_declaration:
| "%output" STRING { spec_outfile = $2; }
| "%output" "=" STRING { spec_outfile = $3; } /* deprecated */
| "%parse-param" "{...}" { add_param ("parse_param", $2, @2); }
-| "%pure-parser"
- {
- /* %pure-parser is deprecated in favor of `%define api.pure', so use
- `%define api.pure' in a backward-compatible manner here. First, don't
- complain if %pure-parser is specified multiple times. */
- if (!muscle_find_const ("percent_define(api.pure)"))
- muscle_percent_define_insert ("api.pure", @1, "");
- /* In all cases, use api.pure now so that the backend doesn't complain if
- the skeleton ignores api.pure, but do warn now if there's a previous
- conflicting definition from an actual %define. */
- if (!muscle_percent_define_flag_if ("api.pure"))
- muscle_percent_define_insert ("api.pure", @1, "");
- }
| "%require" STRING { version_check (&@2, $2); }
| "%skeleton" STRING
{
diff --git a/src/scan-gram.l b/src/scan-gram.l
index 2cfbb4e..8b5027c 100644
--- a/src/scan-gram.l
+++ b/src/scan-gram.l
@@ -204,7 +204,7 @@ splice (\\[ \f\t\v]*\n)*
"%prec" return PERCENT_PREC;
"%precedence" return PERCENT_PRECEDENCE;
"%printer" return PERCENT_PRINTER;
- "%pure"[-_]"parser" return PERCENT_PURE_PARSER;
+ "%pure"[-_]"parser" RETURN_PERCENT_FLAG("api.pure");
"%require" return PERCENT_REQUIRE;
"%right" return PERCENT_RIGHT;
"%skeleton" return PERCENT_SKELETON;
--
1.6.2.1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] muscle: factor the handling of obsolete of obsolete directives.,
Akim Demaille <=