From b3a2272a7389932c298e2ba3ea72090c85b3f4ba Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 3 Apr 2009 00:18:47 +0200 Subject: [PATCH] Treat %error-verbose as %define error_verbose. This allows to pass -Derror_verbose on the command line. Better yet, it allows to pass -Derror_verbose=$(ERROR_VERBOSE), with ERROR_VERBOSE being defined as false or true. * data/bison.m4 (b4_percent_define_if_define): Instead of relying on b4_percent_define_ifdef, for does not check the defined value, but only whether the symbol is defined, rely on b4_percent_define_flag_if, so that a value of "false" is processed as a false. If not defined, define the flag to "false". (b4_error_verbose_if): New. * data/glr.c, data/lalr1.cc, data/yacc.c: Use it instead of b4_error_verbose_flag. * src/getargs.h, src/getargs.c (error_verbose_flag): Remove. * src/output.c (prepare): Don't output it. * src/parse-gram.y (%error-verbose): Treat as %define error_verbose. --- data/bison.m4 | 45 +++++++++++++++++++++++++-------------------- data/glr.c | 2 +- data/lalr1.cc | 6 +++--- data/yacc.c | 6 +++--- src/getargs.c | 4 +--- src/getargs.h | 4 +--- src/output.c | 3 +-- src/parse-gram.y | 7 +++++-- 8 files changed, 40 insertions(+), 37 deletions(-) diff --git a/data/bison.m4 b/data/bison.m4 index 1c35ccda..09b79940 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -332,7 +332,6 @@ m4_define([b4_$3_if], # ----------------------------- # Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise. b4_define_flag_if([defines]) # Whether headers are requested. -b4_define_flag_if([error_verbose]) # Whether error are verbose. b4_define_flag_if([glr]) # Whether a GLR parser is requested. b4_define_flag_if([locations]) # Whether locations are tracked. b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled. @@ -619,30 +618,11 @@ m4_define([b4_percent_define_ifdef], [$3])]) -# b4_percent_define_if_define(VARIABLE) -# ------------------------------------- -# Define b4_VARIABLE_if that executes its $1 or $2 depending whether VARIABLE -# was %defined. -m4_define([b4_percent_define_if_define_], -[m4_define([b4_$1_if], [b4_percent_define_ifdef([$1], [$2], [$3])])]) -m4_define([b4_percent_define_if_define], -[b4_percent_define_if_define_([$1], $[1], $[2])]) - ## --------- ## ## Options. ## ## --------- ## -# b4_assert_if([IF-ASSERTIONS-ARE-USED], [IF-NOT]) -# b4_lex_symbol_if([IF-YYLEX-RETURNS-A-COMPLETE-SYMBOL], [IF-NOT]) -# b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT]) -# ---------------------------------------------- -b4_percent_define_if_define([assert]) -b4_percent_define_if_define([lex_symbol]) -b4_percent_define_if_define([variant]) - - - # b4_percent_define_flag_if(VARIABLE, IF-TRUE, [IF-FALSE]) # -------------------------------------------------------- # Mimic muscle_percent_define_flag_if in ../src/muscle_tab.h exactly. That is, @@ -666,6 +646,7 @@ m4_define([b4_percent_define_flag_if], [[b4_percent_define_flag_if($1)]])])], [b4_fatal([[undefined %%define variable `%s' passed to b4_percent_define_flag_if]], [$1])])]) + # b4_percent_define_default(VARIABLE, DEFAULT) # -------------------------------------------- # Mimic muscle_percent_define_default in ../src/muscle_tab.h exactly. That is, @@ -684,6 +665,30 @@ m4_define([b4_percent_define_default], [[:-1.-1]]]])dnl m4_define([b4_percent_define_syncline(]$1[)], [[]])])]) + +# b4_percent_define_if_define(VARIABLE) +# ------------------------------------- +# Define b4_VARIABLE_if that executes its $1 or $2 depending whether +# VARIABLE was %defined. +m4_define([b4_percent_define_if_define_], +[m4_define([b4_$1_if], [b4_percent_define_flag_if([$1], [$2], [$3])])]) +m4_define([b4_percent_define_if_define], +[b4_percent_define_default([[$1]], [[false]]) +b4_percent_define_if_define_([$1], $[1], $[2])]) + + +# b4_assert_if([IF-ASSERTIONS-ARE-USED], [IF-NOT]) +# b4_error_verbose_if([IF-ERRORS-ARE-VERBOSE], [IF-NOT]) +# b4_lex_symbol_if([IF-YYLEX-RETURNS-A-COMPLETE-SYMBOL], [IF-NOT]) +# b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT]) +# ---------------------------------------------- +b4_percent_define_if_define([assert]) +b4_percent_define_if_define([error_verbose]) +b4_percent_define_if_define([lex_symbol]) +b4_percent_define_if_define([variant]) + + + # b4_percent_define_check_values(VALUES) # -------------------------------------- # Mimic muscle_percent_define_check_values in ../src/muscle_tab.h exactly diff --git a/data/glr.c b/data/glr.c index 23b9b901..3e49a5f2 100644 --- a/data/glr.c +++ b/data/glr.c @@ -232,7 +232,7 @@ b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ +# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[ #endif /* Enabling the token table. */ diff --git a/data/lalr1.cc b/data/lalr1.cc index 81c2d207..9079bbee 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -1,6 +1,6 @@ # C++ skeleton for Bison -# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify @@ -116,7 +116,7 @@ m4_popdef([b4_dollar_dollar])dnl m4_pushdef([b4_copyright_years], - [2002, 2003, 2004, 2005, 2006, 2007, 2008]) + [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]) m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])]) @@ -169,7 +169,7 @@ dnl FIXME: This is wrong, we want computed header guards. # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ +# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[ #endif /* Enabling the token table. */ diff --git a/data/yacc.c b/data/yacc.c index 6a547fce..2c6024c6 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -2,10 +2,10 @@ # Yacc compatible skeleton for Bison # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -# 2007, 2008 Free Software Foundation, Inc. +# 2007, 2008, 2009 Free Software Foundation, Inc. m4_pushdef([b4_copyright_years], -[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008]) +[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -200,7 +200,7 @@ m4_if(b4_prefix, [yy], [], # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ +# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[ #endif /* Enabling the token table. */ diff --git a/src/getargs.c b/src/getargs.c index cff6ff3f..14cba3ed 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -1,7 +1,7 @@ /* Parse command line arguments for Bison. Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -56,8 +56,6 @@ bool no_lines_flag; bool token_table_flag; bool yacc_flag; /* for -y */ -bool error_verbose = false; - bool nondeterministic_parser = false; bool glr_parser = false; diff --git a/src/getargs.h b/src/getargs.h index 11390674..12bf6450 100644 --- a/src/getargs.h +++ b/src/getargs.h @@ -1,7 +1,7 @@ /* Parse command line arguments for bison. Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -44,8 +44,6 @@ extern bool no_lines_flag; /* for -l */ extern bool token_table_flag; /* for -k */ extern bool yacc_flag; /* for -y */ -extern bool error_verbose; - /* GLR_PARSER is true if the input file says to use the GLR (Generalized LR) parser, and to output some additional information diff --git a/src/output.c b/src/output.c index 906301e2..09d89a52 100644 --- a/src/output.c +++ b/src/output.c @@ -1,7 +1,7 @@ /* Output the generated parsing program for Bison. Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -702,7 +702,6 @@ prepare (void) /* Flags. */ MUSCLE_INSERT_BOOL ("debug_flag", debug_flag); MUSCLE_INSERT_BOOL ("defines_flag", defines_flag); - MUSCLE_INSERT_BOOL ("error_verbose_flag", error_verbose); MUSCLE_INSERT_BOOL ("glr_flag", glr_parser); MUSCLE_INSERT_BOOL ("locations_flag", locations_flag); MUSCLE_INSERT_BOOL ("nondeterministic_flag", nondeterministic_parser); diff --git a/src/parse-gram.y b/src/parse-gram.y index cada04f7..264e1d32 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -1,6 +1,6 @@ %{/* Bison Grammar Parser -*- C -*- - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -236,7 +236,10 @@ prologue_declaration: defines_flag = true; spec_defines_file = xstrdup ($2); } -| "%error-verbose" { error_verbose = true; } +| "%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; } -- 2.45.2