bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]