diff options
-rw-r--r-- | data/lalr1.cc | 4 | ||||
-rw-r--r-- | data/stack.hh | 35 | ||||
-rw-r--r-- | tests/calc.at | 4 | ||||
-rw-r--r-- | tests/input.at | 3 | ||||
-rw-r--r-- | tests/output.at | 9 |
5 files changed, 17 insertions, 38 deletions
diff --git a/data/lalr1.cc b/data/lalr1.cc index 9bac1ac7..59b277ac 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -163,8 +163,6 @@ m4_define([b4_shared_declarations], # include <vector> ]b4_cxx_portability[ -]m4_ifdef([b4_stack_file], - [[# include "]b4_stack_file["]])[ ]m4_ifdef([b4_position_file], [[# include "]b4_position_file["]])[ ]m4_ifdef([b4_location_file], @@ -178,7 +176,7 @@ m4_define([b4_shared_declarations], ]b4_namespace_open[ -]m4_ifndef([b4_stack_file], [b4_stack_define])[ +]b4_stack_define[ ]b4_bison_locations_if([m4_ifndef([b4_location_file], [m4_ifndef([b4_position_file], [b4_position_define diff --git a/data/stack.hh b/data/stack.hh index 69898992..76bfbc61 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -15,15 +15,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -m4_pushdef([b4_copyright_years], - [2002-2015, 2018]) # b4_stack_file # ------------- # Name of the file containing the stack class, if we want this file. -b4_percent_define_check_file([b4_stack_file], - [[api.stack.file]], - b4_defines_if([[stack.hh]])) +b4_percent_define_ifdef([[api.stack.file]], +[b4_percent_define_check_values([[[[api.stack.file]], + [[none]]]])], +[b4_defines_if([m4_define([b4_stack_file], [stack.hh])])]) # b4_stack_define @@ -140,25 +139,13 @@ m4_define([b4_stack_define], m4_ifdef([b4_stack_file], [b4_output_begin([b4_dir_prefix[]b4_stack_file])[ -]b4_copyright([Stack handling for Bison parsers in C++])[ +// Starting with Bison 3.2, this file is useless: the structure it +// used to define is now defined with the parser itself. +// +// To get rid of this file: +// 1. add '%define api.stack.file none' to your grammar file +// 2. add 'require "3.2"' to your grammar file +// 3. remove references to this file from your build system. -/** - ** \file ]b4_dir_prefix[]b4_stack_file[ - ** Define the ]b4_namespace_ref[::stack class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]b4_stack_file])[ - -# include <vector> - -]b4_cxx_portability[ - -]b4_namespace_open[ -]b4_stack_define[ -]b4_namespace_close[ - -]b4_cpp_guard_close([b4_dir_prefix[]b4_stack_file])[ ]b4_output_end[ ]]) - -m4_popdef([b4_copyright_years]) diff --git a/tests/calc.at b/tests/calc.at index eb3b1fcd..3ae8bc4e 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -694,10 +694,8 @@ AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug % AT_CHECK_CALC_LALR1_CC([%define parse.error verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) AT_CHECK_CALC_LALR1_CC([%defines %locations %define parse.error verbose %debug %define api.prefix {calc} %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) -AT_CHECK_CALC_LALR1_CC([%locations %define api.stack.file "my-stack.hh"]) AT_CHECK_CALC_LALR1_CC([%locations %defines %define api.stack.file none %define api.location.file none %define api.position.file none]) -AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.stack.file "my-stack.hh"]) -AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.stack.file "my-stack.hh" %define api.position.file none %define api.location.file "my-location.hh"]) +AT_CHECK_CALC_LALR1_CC([%defines %locations %define api.stack.file none %define api.position.file none %define api.location.file "my-location.hh"]) # --------------------------- # diff --git a/tests/input.at b/tests/input.at index 12fec205..1acc9b51 100644 --- a/tests/input.at +++ b/tests/input.at @@ -1673,9 +1673,10 @@ AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]], input.y:4.9-25: error: %define variable 'api.location.file' requires 'none' or '"..."' values %define api.location.file {bogus} ^^^^^^^^^^^^^^^^^ -input.y:3.9-22: error: %define variable 'api.stack.file' requires 'none' or '"..."' values +input.y:3.9-22: error: invalid value for %define variable 'api.stack.file': 'bogus' %define api.stack.file bogus ^^^^^^^^^^^^^^ +input.y:3.9-22: accepted value: 'none' ]]) AT_CLEANUP diff --git a/tests/output.at b/tests/output.at index f0e0b2b3..78af8be5 100644 --- a/tests/output.at +++ b/tests/output.at @@ -181,11 +181,6 @@ AT_CHECK_OUTPUT([gram_dir/foo.yy], # api.stack.file. AT_CHECK_OUTPUT([foo.yy], - [%skeleton "lalr1.cc" %define api.stack.file "foo.sta.hh"], - [], - [foo.sta.hh foo.tab.cc]) - -AT_CHECK_OUTPUT([foo.yy], [%skeleton "lalr1.cc" %defines %define api.stack.file none], [], [foo.tab.cc foo.tab.hh]) @@ -216,9 +211,9 @@ AT_CHECK_OUTPUT([foo.yy], [foo.loc.hh foo.pos.hh foo.tab.cc foo.tab.hh]) AT_CHECK_OUTPUT([gram_dir/foo.yy], - [%skeleton "lalr1.cc" %verbose %defines %define api.stack.file "foo.sta.hh" %file-prefix "output_dir/foo"], + [%skeleton "lalr1.cc" %verbose %defines %file-prefix "output_dir/foo"], [], - [output_dir/foo.output output_dir/foo.sta.hh output_dir/foo.tab.cc output_dir/foo.tab.hh]) + [output_dir/foo.output output_dir/foo.tab.cc output_dir/foo.tab.hh]) # AT_CHECK_CONFLICTING_OUTPUT(INPUT-FILE, DIRECTIVES, FLAGS, STDERR, |