Make ParseItemSet & LexItemSet classes

This commit is contained in:
Max Brunsfeld 2015-10-05 15:13:43 -07:00
parent f01972c64e
commit ef2acf9496
11 changed files with 88 additions and 44 deletions

View file

@ -23,15 +23,21 @@ class ParseItem {
int rule_id;
};
typedef std::map<ParseItem, LookaheadSet> ParseItemSet;
class ParseItemSet {
public:
ParseItemSet();
ParseItemSet(const std::map<ParseItem, LookaheadSet> &);
struct ParseItemSetHash {
size_t operator()(const ParseItemSet &) const;
std::map<rules::Symbol, ParseItemSet> transitions(const SyntaxGrammar &) const;
bool operator==(const ParseItemSet &) const;
std::map<ParseItem, LookaheadSet> entries;
struct Hash {
size_t operator()(const ParseItemSet &) const;
};
};
std::map<rules::Symbol, ParseItemSet> parse_item_set_transitions(
const ParseItemSet &, const SyntaxGrammar &);
} // namespace build_tables
} // namespace tree_sitter