Allow Character rules to handle arbitrary character sets

This commit is contained in:
Max Brunsfeld 2014-01-29 19:18:21 -08:00
parent bc1d115ee2
commit 7f62e752be
16 changed files with 322 additions and 309 deletions

View file

@ -16,8 +16,8 @@ static unordered_set<Symbol> keys(const unordered_map<Symbol, parse_actions> &ma
return result;
}
static unordered_set<CharMatch> keys(const unordered_map<CharMatch, lex_actions> &map) {
unordered_set<CharMatch> result;
static unordered_set<Character> keys(const unordered_map<Character, lex_actions> &map) {
unordered_set<Character> result;
for (auto pair : map) {
result.insert(pair.first);
}
@ -79,16 +79,16 @@ describe("building parse and lex tables", []() {
Symbol("left-paren"),
})));
AssertThat(keys(lex_state(0).actions), Equals(unordered_set<CharMatch>({
CharMatchSpecific('('),
CharMatchClass(CharClassDigit),
CharMatchClass(CharClassWord),
AssertThat(keys(lex_state(0).actions), Equals(unordered_set<Character>({
Character('('),
Character(CharClassDigit),
Character(CharClassWord),
})));
AssertThat(lex_state(0).expected_inputs(), Equals(unordered_set<CharMatch>({
CharMatchSpecific('('),
CharMatchClass(CharClassDigit),
CharMatchClass(CharClassWord),
AssertThat(lex_state(0).expected_inputs(), Equals(unordered_set<Character>({
Character('('),
Character(CharClassDigit),
Character(CharClassWord),
})));
});