aboutsummaryrefslogtreecommitdiff
path: root/driver/parser_test.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2022-11-05 14:21:13 +0900
committerRyo Nihei <nihei.dev@gmail.com>2022-11-05 14:21:13 +0900
commitb24f61a465d21af404ed647a977160042017e601 (patch)
tree0b695a6775ed6a0a7bb41404b598055855417673 /driver/parser_test.go
parentUpdate README (diff)
downloadurubu-b24f61a465d21af404ed647a977160042017e601.tar.gz
urubu-b24f61a465d21af404ed647a977160042017e601.tar.xz
Remove alias system
Remove unimportant features to tidy up the specification.
Diffstat (limited to 'driver/parser_test.go')
-rw-r--r--driver/parser_test.go34
1 files changed, 19 insertions, 15 deletions
diff --git a/driver/parser_test.go b/driver/parser_test.go
index 215988d..dd58dd5 100644
--- a/driver/parser_test.go
+++ b/driver/parser_test.go
@@ -18,10 +18,6 @@ func termNode(kind string, text string, children ...*Node) *Node {
}
}
-func anonTermNode(text string, children ...*Node) *Node {
- return termNode("", text, children...)
-}
-
func errorNode() *Node {
return &Node{
Type: NodeTypeError,
@@ -50,18 +46,26 @@ func TestParser_Parse(t *testing.T) {
#name test;
expr
- : expr '+' term
+ : expr add term
| term
;
term
- : term '*' factor
+ : term mul factor
| factor
;
factor
- : '(' expr ')'
+ : l_paren expr r_paren
| id
;
+add
+ : '+';
+mul
+ : '*';
+l_paren
+ : '(';
+r_paren
+ : ')';
id
: "[A-Za-z_][0-9A-Za-z_]*";
`,
@@ -71,7 +75,7 @@ id
nonTermNode("term",
nonTermNode("term",
nonTermNode("factor",
- anonTermNode("("),
+ termNode("l_paren", "("),
nonTermNode("expr",
nonTermNode("expr",
nonTermNode("term",
@@ -80,10 +84,10 @@ id
),
),
),
- anonTermNode("+"),
+ termNode("add", "+"),
nonTermNode("term",
nonTermNode("factor",
- anonTermNode("("),
+ termNode("l_paren", "("),
nonTermNode("expr",
nonTermNode("expr",
nonTermNode("term",
@@ -92,27 +96,27 @@ id
),
),
),
- anonTermNode("+"),
+ termNode("add", "+"),
nonTermNode("term",
nonTermNode("factor",
termNode("id", "c"),
),
),
),
- anonTermNode(")"),
+ termNode("r_paren", ")"),
),
),
),
- anonTermNode(")"),
+ termNode("r_paren", ")"),
),
),
- anonTermNode("*"),
+ termNode("mul", "*"),
nonTermNode("factor",
termNode("id", "d"),
),
),
),
- anonTermNode("+"),
+ termNode("add", "+"),
nonTermNode("term",
nonTermNode("factor",
termNode("id", "e"),