Remove unused arg to action_takes_precedence
This commit is contained in:
parent
160fca6579
commit
109b5616d3
4 changed files with 32 additions and 39 deletions
|
|
@ -12,11 +12,6 @@ START_TEST
|
|||
describe("action_takes_precedence", []() {
|
||||
bool update;
|
||||
|
||||
SyntaxGrammar parse_grammar({
|
||||
{ "rule1", seq({ sym("rule2"), sym("token2") }) },
|
||||
{ "rule2", sym("token1") },
|
||||
}, {}, set<rules::Symbol>());
|
||||
|
||||
describe("lexical conflicts", [&]() {
|
||||
Symbol sym1(0, SymbolOptionToken);
|
||||
Symbol sym2(1, SymbolOptionToken);
|
||||
|
|
@ -73,18 +68,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction non_error = ParseAction::Shift(2, { 0 });
|
||||
|
||||
it("favors non-errors", [&]() {
|
||||
result = action_takes_precedence(non_error, error, sym1, parse_grammar);
|
||||
result = action_takes_precedence(non_error, error, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
|
||||
result = action_takes_precedence(error, non_error, sym1, parse_grammar);
|
||||
result = action_takes_precedence(error, non_error, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
});
|
||||
|
||||
it("is not a conflict", [&]() {
|
||||
result = action_takes_precedence(non_error, error, sym1, parse_grammar);
|
||||
result = action_takes_precedence(non_error, error, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
|
||||
result = action_takes_precedence(error, non_error, sym1, parse_grammar);
|
||||
result = action_takes_precedence(error, non_error, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
});
|
||||
});
|
||||
|
|
@ -95,18 +90,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction reduce = ParseAction::Reduce(sym2, 1, 1);
|
||||
|
||||
it("is not a conflict", [&]() {
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
});
|
||||
|
||||
it("favors the shift", [&]() {
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
});
|
||||
});
|
||||
|
|
@ -116,18 +111,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction reduce = ParseAction::Reduce(sym2, 1, 3);
|
||||
|
||||
it("is not a conflict", [&]() {
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
});
|
||||
|
||||
it("favors the reduce", [&]() {
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
});
|
||||
});
|
||||
|
|
@ -137,18 +132,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction reduce = ParseAction::Reduce(sym2, 1, 0);
|
||||
|
||||
it("is a conflict", [&]() {
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
});
|
||||
|
||||
it("favors the shift", [&]() {
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
});
|
||||
});
|
||||
|
|
@ -158,18 +153,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction reduce = ParseAction::Reduce(sym2, 1, 2);
|
||||
|
||||
it("is a conflict", [&]() {
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
});
|
||||
|
||||
it("favors the shift", [&]() {
|
||||
result = action_takes_precedence(reduce, shift, sym1, parse_grammar);
|
||||
result = action_takes_precedence(reduce, shift, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
|
||||
result = action_takes_precedence(shift, reduce, sym1, parse_grammar);
|
||||
result = action_takes_precedence(shift, reduce, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
});
|
||||
});
|
||||
|
|
@ -181,18 +176,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction right = ParseAction::Reduce(sym2, 1, 3);
|
||||
|
||||
it("favors that action", [&]() {
|
||||
result = action_takes_precedence(left, right, sym1, parse_grammar);
|
||||
result = action_takes_precedence(left, right, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
|
||||
result = action_takes_precedence(right, left, sym1, parse_grammar);
|
||||
result = action_takes_precedence(right, left, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
});
|
||||
|
||||
it("is not a conflict", [&]() {
|
||||
result = action_takes_precedence(left, right, sym1, parse_grammar);
|
||||
result = action_takes_precedence(left, right, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
|
||||
result = action_takes_precedence(right, left, sym1, parse_grammar);
|
||||
result = action_takes_precedence(right, left, sym1);
|
||||
AssertThat(result.second, IsFalse());
|
||||
});
|
||||
});
|
||||
|
|
@ -202,18 +197,18 @@ describe("action_takes_precedence", []() {
|
|||
ParseAction right = ParseAction::Reduce(sym2, 1, 0);
|
||||
|
||||
it("favors the symbol listed earlier in the grammar", [&]() {
|
||||
result = action_takes_precedence(left, right, sym1, parse_grammar);
|
||||
result = action_takes_precedence(left, right, sym1);
|
||||
AssertThat(result.first, IsTrue());
|
||||
|
||||
result = action_takes_precedence(right, left, sym1, parse_grammar);
|
||||
result = action_takes_precedence(right, left, sym1);
|
||||
AssertThat(result.first, IsFalse());
|
||||
});
|
||||
|
||||
it("records a conflict", [&]() {
|
||||
result = action_takes_precedence(left, right, sym1, parse_grammar);
|
||||
result = action_takes_precedence(left, right, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
|
||||
result = action_takes_precedence(right, left, sym1, parse_grammar);
|
||||
result = action_takes_precedence(right, left, sym1);
|
||||
AssertThat(result.second, IsTrue());
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -7,11 +7,10 @@ using std::pair;
|
|||
|
||||
pair<bool, bool> action_takes_precedence(const ParseAction &new_action,
|
||||
const ParseAction &old_action,
|
||||
const rules::Symbol &symbol,
|
||||
const SyntaxGrammar &grammar) {
|
||||
const rules::Symbol &symbol) {
|
||||
if (new_action.type < old_action.type) {
|
||||
auto opposite =
|
||||
action_takes_precedence(old_action, new_action, symbol, grammar);
|
||||
action_takes_precedence(old_action, new_action, symbol);
|
||||
return { !opposite.first, opposite.second };
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ namespace build_tables {
|
|||
|
||||
std::pair<bool, bool> action_takes_precedence(const ParseAction &new_action,
|
||||
const ParseAction &old_action,
|
||||
const rules::Symbol &symbol,
|
||||
const SyntaxGrammar &grammar);
|
||||
const rules::Symbol &symbol);
|
||||
|
||||
bool action_takes_precedence(const LexAction &new_action,
|
||||
const LexAction &old_action);
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ class ParseTableBuilder {
|
|||
return true;
|
||||
|
||||
auto result = action_takes_precedence(action, current_action->second,
|
||||
symbol, grammar);
|
||||
symbol);
|
||||
|
||||
if (result.second)
|
||||
record_conflict(symbol, current_action->second, action, item_set);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue