Fix parse action equality method
This commit is contained in:
parent
d91bc718a0
commit
b010e1667e
2 changed files with 7 additions and 3 deletions
|
|
@ -25,7 +25,10 @@ describe("building parse tables", []() {
|
|||
auto result = build_parse_table(parse_grammar, lex_grammar);
|
||||
|
||||
AssertThat(result.first.states[0].actions, Equals(map<Symbol, ParseAction>({
|
||||
// start item
|
||||
{ Symbol(0), ParseAction::Shift(1, { 0 }) },
|
||||
|
||||
// expanded from the item set closure of the start item
|
||||
{ Symbol(1), ParseAction::Shift(2, { 0 }) },
|
||||
{ Symbol(2), ParseAction::Shift(2, { 0 }) },
|
||||
{ Symbol(0, SymbolOptionToken), ParseAction::Shift(3, { 0 }) },
|
||||
|
|
@ -45,7 +48,7 @@ describe("building parse tables", []() {
|
|||
auto result = build_parse_table(parse_grammar, lex_grammar);
|
||||
|
||||
AssertThat(result.first.states[2].actions, Equals(map<Symbol, ParseAction>({
|
||||
{ END_OF_INPUT(), ParseAction::Reduce(Symbol(1), 1, 0) },
|
||||
{ END_OF_INPUT(), ParseAction::Reduce(Symbol(0), 1, 0) },
|
||||
})));
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -44,9 +44,10 @@ namespace tree_sitter {
|
|||
|
||||
bool ParseAction::operator==(const ParseAction &other) const {
|
||||
bool types_eq = type == other.type;
|
||||
bool symbols_eq = symbol == other.symbol;
|
||||
bool state_indices_eq = state_index == other.state_index;
|
||||
bool consumed_symbol_counts_eq = consumed_symbol_count == other.consumed_symbol_count;
|
||||
return types_eq && state_indices_eq && consumed_symbol_counts_eq;
|
||||
return types_eq && symbols_eq && state_indices_eq && consumed_symbol_counts_eq;
|
||||
}
|
||||
|
||||
ostream& operator<<(ostream &stream, const ParseAction &action) {
|
||||
|
|
@ -58,7 +59,7 @@ namespace tree_sitter {
|
|||
case ParseActionTypeShift:
|
||||
return stream << (string("#<shift ") + to_string(action.state_index) + ">");
|
||||
case ParseActionTypeReduce:
|
||||
return stream << (string("#<reduce ") + to_string(action.symbol.index) + ">");
|
||||
return stream << (string("#<reduce sym") + to_string(action.symbol.index) + " " + to_string(action.consumed_symbol_count) + ">");
|
||||
default:
|
||||
return stream;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue