On Mon, 20 Apr 2009, Joel E. Denny wrote: > This is the first patch towards implementing IELR and canonical LR. I > plan to push it to master and branch-2.5.
Pushed. > I haven't pushed yet because I would really like to rename "default rule" > to "default reduction" throughout Bison first: I may rename it later, but I'm not sure. > From 9dc5b98ab1c766ae39bd31cd8c6fba1378f88f16 Mon Sep 17 00:00:00 2001 > From: Joel E. Denny <[email protected]> > Date: Mon, 20 Apr 2009 00:55:50 -0400 > Subject: [PATCH] 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.
