Make ParseItemSet & LexItemSet classes
This commit is contained in:
parent
f01972c64e
commit
ef2acf9496
11 changed files with 88 additions and 44 deletions
|
|
@ -48,7 +48,7 @@ describe("lex_item_set_transitions", [&]() {
|
|||
LexItem(Symbol(2), CharacterSet().include('e', 'x').copy())
|
||||
});
|
||||
|
||||
AssertThat(lex_item_set_transitions(set1), Equals(map<CharacterSet, LexItemSet>({
|
||||
AssertThat(set1.transitions(), Equals(map<CharacterSet, LexItemSet>({
|
||||
{
|
||||
CharacterSet().include('a', 'd'),
|
||||
LexItemSet({
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ describe("parse_item_set_transitions(ParseItemSet, SyntaxGrammar)", [&]() {
|
|||
}
|
||||
});
|
||||
|
||||
AssertThat(parse_item_set_transitions(set1, grammar), Equals(map<Symbol, ParseItemSet>({
|
||||
AssertThat(set1.transitions(grammar), Equals(map<Symbol, ParseItemSet>({
|
||||
{
|
||||
Symbol(1),
|
||||
ParseItemSet({
|
||||
|
|
|
|||
|
|
@ -111,11 +111,15 @@ ostream &operator<<(ostream &stream, const ProductionStep &step) {
|
|||
|
||||
namespace build_tables {
|
||||
|
||||
ostream &operator<<(ostream &stream, const build_tables::LexItem &item) {
|
||||
ostream &operator<<(ostream &stream, const LexItem &item) {
|
||||
return stream << string("(item ") << item.lhs << string(" ") << *item.rule
|
||||
<< string(")");
|
||||
}
|
||||
|
||||
ostream &operator<<(ostream &stream, const LexItemSet &item_set) {
|
||||
return stream << item_set.entries;
|
||||
}
|
||||
|
||||
ostream &operator<<(ostream &stream, const ParseItem &item) {
|
||||
return stream << string("(item variable:") << to_string(item.variable_index)
|
||||
<< string(" production:") << to_string(item.production_index)
|
||||
|
|
@ -124,6 +128,10 @@ ostream &operator<<(ostream &stream, const ParseItem &item) {
|
|||
<< string(")");
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &stream, const ParseItemSet &item_set) {
|
||||
return stream << item_set.entries;
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &stream, const MetadataRange &range) {
|
||||
return stream << string("{") << to_string(range.min) << string(", ")
|
||||
<< to_string(range.max) << string("}");
|
||||
|
|
|
|||
|
|
@ -111,12 +111,16 @@ namespace build_tables {
|
|||
|
||||
struct MetadataRange;
|
||||
class LexItem;
|
||||
class LexItemSet;
|
||||
class ParseItem;
|
||||
class ParseItemSet;
|
||||
class LookaheadSet;
|
||||
|
||||
ostream &operator<<(ostream &, const MetadataRange &);
|
||||
ostream &operator<<(ostream &, const LexItem &);
|
||||
ostream &operator<<(ostream &, const LexItemSet &);
|
||||
ostream &operator<<(ostream &, const ParseItem &);
|
||||
ostream &operator<<(ostream &, const ParseItemSet &);
|
||||
ostream &operator<<(ostream &, const LookaheadSet &);
|
||||
|
||||
} // namespace build_tables
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue