]> git.saurik.com Git - bison.git/commit - src/print.c
Implement %define lr.default_rules.
authorJoel E. Denny <jdenny@ces.clemson.edu>
Mon, 20 Apr 2009 04:55:50 +0000 (00:55 -0400)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Tue, 21 Apr 2009 05:09:35 +0000 (01:09 -0400)
commit03c07b039448552b5ac6c51076b88c2f15b0307f
treede347b83283bd2367ec7e21bcd17f205f9ee3495
parent44c124a3896b149561b3b9cee411b4a479ab04d7
Implement %define lr.default_rules.

Its value describes the states that are permitted to contain
default rules: "all", "consistent", or "accepting".
* src/reader.c (reader): Default lr.default_rules to "all".
Check for a valid lr.default_rules value.
* src/lalr.c (state_lookahead_tokens_count): If lr.default_rules
is "accepting", then only mark the accepting state as
consistent.
(initialize_LA): Tell state_lookahead_tokens_count whether
lr.default_rules is "accepting".
* src/tables.c (action_row): If lr.default_rules is not "all",
then disable default rules in inconsistent states.
* src/print.c (print_reductions): Use this opportunity to
perform some assertions about whether lr.default_rules was
obeyed correctly.
* tests/local.at (AT_TEST_TABLES_AND_PARSE): New macro that
helps with checking the parser tables for a grammar.
* tests/input.at (%define lr.default_rules invalid values): New
test group.
* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): New macro using
AT_TEST_TABLES_AND_PARSE.
(`no %define lr.default_rules'): New test group generated by
AT_TEST_LR_DEFAULT_RULES.
(`%define lr.default_rules "all"'): Likewise.
(`%define lr.default_rules "consistent"'): Likewise.
(`%define lr.default_rules "accepting"'): Likewise.
ChangeLog
src/lalr.c
src/print.c
src/reader.c
src/tables.c
tests/input.at
tests/local.at
tests/reduce.at