Separate auxiliary rules from user-specified rules

This commit is contained in:
Max Brunsfeld 2014-01-28 13:27:30 -08:00
parent 19e5b2a563
commit fd0d77ef8b
16 changed files with 741 additions and 412 deletions

View file

@ -16,16 +16,17 @@ describe("expanding repeat rules in a grammar", []() {
}) },
}));
AssertThat(result, Equals(Grammar({
AssertThat(result, Equals(Grammar("rule1", {
{ "rule1", seq({
sym("x"),
sym("repeat_helper1"),
aux_sym("repeat_helper1"),
sym("y")
}) },
}, {
{ "repeat_helper1", seq({
seq({ sym("a"), sym("b") }),
choice({
sym("repeat_helper1") ,
aux_sym("repeat_helper1") ,
blank()
}),
}) }

View file

@ -22,15 +22,15 @@ describe("preparing a grammar", []() {
AssertThat(result.first, Equals(Grammar({
{ "rule1", seq({
sym("1"),
aux_sym("token1"),
seq({
sym("rule2"),
sym("rule3") }),
sym("1") }) }
aux_sym("token1") }) }
})));
AssertThat(result.second, Equals(Grammar("", {
{ "1", rules::seq({
AssertThat(result.second, Equals(Grammar("", {}, {
{ "token1", rules::seq({
rules::character('a'),
rules::character('b') }) },
})));
@ -68,14 +68,14 @@ describe("preparing a grammar", []() {
AssertThat(result.first, Equals(Grammar({
{ "rule1", seq({
choice({
repeat(choice({ sym("1"), sym("a") })),
repeat(choice({ aux_sym("token1"), sym("a") })),
sym("b"),
}),
sym("c") }) }
})));
AssertThat(result.second, Equals(Grammar("", {
{ "1", str("stuff") },
AssertThat(result.second, Equals(Grammar("", {}, {
{ "token1", str("stuff") },
})));
});
});