[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/4] deprecation: issue warnings in scanner
From: |
Theophile Ranquet |
Subject: |
[PATCH 1/4] deprecation: issue warnings in scanner |
Date: |
Wed, 24 Oct 2012 12:12:13 +0000 |
* src/parse-gram.y: Move 3 deprecated constructs...
* src/scan-gram.l: ...Here, and issue warnings.
(DEPRECATED): New.
---
src/parse-gram.y | 4 ----
src/scan-gram.l | 47 +++++++++++++++++++++++++++++++++++++----------
tests/calc.at | 2 +-
tests/output.at | 4 ++--
4 files changed, 40 insertions(+), 17 deletions(-)
diff --git a/src/parse-gram.y b/src/parse-gram.y
index f0187fb..1624dde 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -317,7 +317,6 @@ prologue_declaration:
| "%expect" INT { expected_sr_conflicts = $2; }
| "%expect-rr" INT { expected_rr_conflicts = $2; }
| "%file-prefix" STRING { spec_file_prefix = $2; }
-| "%file-prefix" "=" STRING { spec_file_prefix = $3; } /* deprecated */
| "%glr-parser"
{
nondeterministic_parser = true;
@@ -334,11 +333,9 @@ prologue_declaration:
}
| "%language" STRING { language_argmatch ($2, grammar_prio, @1); }
| "%name-prefix" STRING { spec_name_prefix = $2; }
-| "%name-prefix" "=" STRING { spec_name_prefix = $3; } /* deprecated */
| "%no-lines" { no_lines_flag = true; }
| "%nondeterministic-parser" { nondeterministic_parser = true; }
| "%output" STRING { spec_outfile = $2; }
-| "%output" "=" STRING { spec_outfile = $3; } /* deprecated */
| "%param" { current_param = $1; } params { current_param = param_none; }
| "%require" STRING { version_check (&@2, $2); }
| "%skeleton" STRING
@@ -724,7 +721,6 @@ epilogue.opt:
%%
-
/* Return the location of the left-hand side of a rule whose
right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
the right-hand side, and return an empty location equal to the end
diff --git a/src/scan-gram.l b/src/scan-gram.l
index 8e48148..a958db0 100644
--- a/src/scan-gram.l
+++ b/src/scan-gram.l
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-%option debug nodefault noinput nounput noyywrap never-interactive
+%option debug nodefault noinput noyywrap never-interactive
%option prefix="gram_" outfile="lex.yy.c"
%{
@@ -31,6 +31,7 @@
#include <src/complain.h>
#include <src/files.h>
+#include <src/getargs.h>
#include <src/gram.h>
#include <quotearg.h>
#include <src/reader.h>
@@ -73,6 +74,17 @@ static size_t no_cr_read (FILE *, char *, size_t);
yyless (0); \
} while (0)
+#define DEPRECATED(Msg) \
+ do { \
+ size_t i; \
+ complain (loc, Wdeprecated, \
+ _("deprecated directive: %s, use %s"), \
+ quote (yytext), quote_n (1, Msg)); \
+ scanner_cursor.column -= mbsnwidth (Msg, strlen (Msg), 0); \
+ for (i = strlen (Msg); i != 0; --i) \
+ unput (Msg[i - 1]); \
+ } while (0)
+
/* A string representing the most recently saved token. */
static char *last_string;
@@ -134,6 +146,8 @@ tag [^\0<>]+
white space between the backslash and the newline. */
splice (\\[ \f\t\v]*\n)*
+eqopt ([[:space:]]*=)?
+
%%
%{
/* Nesting level. Either for nested braces, or nested angle brackets
@@ -198,16 +212,16 @@ splice (\\[ \f\t\v]*\n)*
"%binary" return PERCENT_NONASSOC;
"%code" return PERCENT_CODE;
"%debug" RETURN_PERCENT_FLAG("parse.trace");
- "%default"[-_]"prec" return PERCENT_DEFAULT_PREC;
+ "%default-prec" return PERCENT_DEFAULT_PREC;
"%define" return PERCENT_DEFINE;
"%defines" return PERCENT_DEFINES;
"%destructor" return PERCENT_DESTRUCTOR;
"%dprec" return PERCENT_DPREC;
- "%error"[-_]"verbose" return PERCENT_ERROR_VERBOSE;
+ "%error-verbose" return PERCENT_ERROR_VERBOSE;
"%expect" return PERCENT_EXPECT;
- "%expect"[-_]"rr" return PERCENT_EXPECT_RR;
+ "%expect-rr" return PERCENT_EXPECT_RR;
"%file-prefix" return PERCENT_FILE_PREFIX;
- "%fixed"[-_]"output"[-_]"files" return PERCENT_YACC;
+ "%fixed-output-files" return PERCENT_YACC;
"%initial-action" return PERCENT_INITIAL_ACTION;
"%glr-parser" return PERCENT_GLR_PARSER;
"%language" return PERCENT_LANGUAGE;
@@ -215,9 +229,9 @@ splice (\\[ \f\t\v]*\n)*
"%lex-param" RETURN_PERCENT_PARAM(lex);
"%locations" RETURN_PERCENT_FLAG("locations");
"%merge" return PERCENT_MERGE;
- "%name"[-_]"prefix" return PERCENT_NAME_PREFIX;
- "%no"[-_]"default"[-_]"prec" return PERCENT_NO_DEFAULT_PREC;
- "%no"[-_]"lines" return PERCENT_NO_LINES;
+ "%name-prefix" return PERCENT_NAME_PREFIX;
+ "%no-default-prec" return PERCENT_NO_DEFAULT_PREC;
+ "%no-lines" return PERCENT_NO_LINES;
"%nonassoc" return PERCENT_NONASSOC;
"%nondeterministic-parser" return PERCENT_NONDETERMINISTIC_PARSER;
"%nterm" return PERCENT_NTERM;
@@ -227,19 +241,32 @@ splice (\\[ \f\t\v]*\n)*
"%prec" return PERCENT_PREC;
"%precedence" return PERCENT_PRECEDENCE;
"%printer" return PERCENT_PRINTER;
- "%pure"[-_]"parser" RETURN_PERCENT_FLAG("api.pure");
+ "%pure-parser" RETURN_PERCENT_FLAG("api.pure");
"%require" return PERCENT_REQUIRE;
"%right" return PERCENT_RIGHT;
"%skeleton" return PERCENT_SKELETON;
"%start" return PERCENT_START;
"%term" return PERCENT_TOKEN;
"%token" return PERCENT_TOKEN;
- "%token"[-_]"table" return PERCENT_TOKEN_TABLE;
+ "%token-table" return PERCENT_TOKEN_TABLE;
"%type" return PERCENT_TYPE;
"%union" return PERCENT_UNION;
"%verbose" return PERCENT_VERBOSE;
"%yacc" return PERCENT_YACC;
+ /* deprecated */
+ "%default"[-_]"prec" DEPRECATED("%default-prec");
+ "%error"[-_]"verbose" DEPRECATED("%define parse.error verbose");
+ "%expect"[-_]"rr" DEPRECATED("%expect-rr");
+ "%file-prefix"{eqopt} DEPRECATED("%file-prefix");
+ "%fixed"[-_]"output"[-_]"files" DEPRECATED("%fixed-output-files");
+ "%name"[-_]"prefix"{eqopt} DEPRECATED("%name-prefix");
+ "%no"[-_]"default"[-_]"prec" DEPRECATED("%no-default-prec");
+ "%no"[-_]"lines" DEPRECATED("%no-lines");
+ "%output"{eqopt} DEPRECATED("%output");
+ "%pure"[-_]"parser" DEPRECATED("%pure-parser");
+ "%token"[-_]"table" DEPRECATED("%token-table");
+
{directive} {
complain (loc, complaint, _("invalid directive: %s"), quote (yytext));
}
diff --git a/tests/calc.at b/tests/calc.at
index a6c6742..5a6af10 100644
--- a/tests/calc.at
+++ b/tests/calc.at
@@ -637,7 +637,7 @@ AT_CHECK_CALC_LALR()
AT_CHECK_CALC_LALR([%defines])
AT_CHECK_CALC_LALR([%locations])
-AT_CHECK_CALC_LALR([%name-prefix="calc"]) dnl test deprecated `='
+AT_CHECK_CALC_LALR([%name-prefix "calc"]) dnl test deprecated `='
AT_CHECK_CALC_LALR([%verbose])
AT_CHECK_CALC_LALR([%yacc])
AT_CHECK_CALC_LALR([%define parse.error verbose])
diff --git a/tests/output.at b/tests/output.at
index 3a13fd3..d3e3e6e 100644
--- a/tests/output.at
+++ b/tests/output.at
@@ -81,10 +81,10 @@ AT_CHECK_OUTPUT([foo.yy], [%defines %verbose %yacc],[],
# Exercise %output and %file-prefix including deprecated '='
AT_CHECK_OUTPUT([foo.y], [%file-prefix "bar" %defines %verbose], [],
[bar.output bar.tab.c bar.tab.h])
-AT_CHECK_OUTPUT([foo.y], [%output="bar.c" %defines %verbose %yacc],[],
+AT_CHECK_OUTPUT([foo.y], [%output "bar.c" %defines %verbose %yacc],[],
[bar.c bar.h bar.output])
AT_CHECK_OUTPUT([foo.y],
- [%file-prefix="baz" %output "bar.c" %defines %verbose %yacc],
+ [%file-prefix "baz" %output "bar.c" %defines %verbose %yacc],
[],
[bar.c bar.h bar.output])
--
1.7.11.4