From ba061fa6f2fb7b144df75c1e052d61eeca392288 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 3 Apr 2009 06:50:06 +0200 Subject: [PATCH] Factor %FLAG at scan level. * src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token definitions and associated rules, replaced by.... (PERCENT_FLAG): this new token type, and rule. * src/scan-gram.l (RETURN_PERCENT_FLAG): New. Use it for %debug and %error-verbose. --- ChangeLog | 9 +++++++++ src/parse-gram.y | 15 ++++++--------- src/scan-gram.l | 15 +++++++++++---- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12a6dd0e..bbe8a647 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-04-03 Akim Demaille + + Factor %FLAG at scan level. + * src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token + definitions and associated rules, replaced by.... + (PERCENT_FLAG): this new token type, and rule. + * src/scan-gram.l (RETURN_PERCENT_FLAG): New. + Use it for %debug and %error-verbose. + 2009-04-03 Akim Demaille Regen. diff --git a/src/parse-gram.y b/src/parse-gram.y index 53df3a43..c7238dea 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -128,13 +128,13 @@ static int current_prec = 0; %token PERCENT_CODE "%code" - PERCENT_DEBUG "%debug" 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 "%" PERCENT_FILE_PREFIX "%file-prefix" PERCENT_GLR_PARSER "%glr-parser" PERCENT_INITIAL_ACTION "%initial-action" @@ -183,10 +183,11 @@ static int current_prec = 0; %printer { fprintf (stderr, "{\n%s\n}", $$); } braceless content.opt "{...}" "%{...%}" EPILOGUE -%type TAG ID ID_COLON variable -%printer { fprintf (stderr, "<%s>", $$); } TAG +%type TAG ID ID_COLON PERCENT_FLAG variable %printer { fputs ($$, stderr); } ID variable %printer { fprintf (stderr, "%s:", $$); } ID_COLON +%printer { fprintf (stderr, "%%%s", $$); } PERCENT_FLAG +%printer { fprintf (stderr, "<%s>", $$); } TAG %type INT %printer { fprintf (stderr, "%d", $$); } INT @@ -225,9 +226,9 @@ prologue_declaration: plain_code.code, @1); code_scanner_last_string_free (); } -| "%debug" +| "%" { - muscle_percent_define_insert ("debug", @$, ""); + muscle_percent_define_insert ($1, @1, ""); } | "%define" variable content.opt { @@ -239,10 +240,6 @@ prologue_declaration: defines_flag = true; spec_defines_file = xstrdup ($2); } -| "%error-verbose" - { - muscle_percent_define_insert ("error_verbose", @$, ""); - } | "%expect" INT { expected_sr_conflicts = $2; } | "%expect-rr" INT { expected_rr_conflicts = $2; } | "%file-prefix" STRING { spec_file_prefix = $2; } diff --git a/src/scan-gram.l b/src/scan-gram.l index 9a733bc1..2cfbb4e4 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -1,7 +1,7 @@ /* Bison Grammar Scanner -*- C -*- - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, - Inc. + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -55,6 +55,13 @@ static boundary scanner_cursor; static size_t no_cr_read (FILE *, char *, size_t); #define YY_INPUT(buf, result, size) ((result) = no_cr_read (yyin, buf, size)) +#define RETURN_PERCENT_FLAG(Value) \ + do { \ + val->uniqstr = uniqstr_new (Value); \ + return PERCENT_FLAG; \ + } while (0) + + /* A string representing the most recently saved token. */ static char *last_string; @@ -168,13 +175,13 @@ splice (\\[ \f\t\v]*\n)* { "%binary" return PERCENT_NONASSOC; "%code" return PERCENT_CODE; - "%debug" return PERCENT_DEBUG; + "%debug" RETURN_PERCENT_FLAG("debug"); "%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_FLAG("error_verbose"); "%expect" return PERCENT_EXPECT; "%expect"[-_]"rr" return PERCENT_EXPECT_RR; "%file-prefix" return PERCENT_FILE_PREFIX; -- 2.47.2