From 52379a9e26578eb1105e73839db8157e24ba2d4c Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sat, 19 Jun 2021 00:38:27 +0900 Subject: Add driver --- driver/parser_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 driver/parser_test.go (limited to 'driver/parser_test.go') diff --git a/driver/parser_test.go b/driver/parser_test.go new file mode 100644 index 0000000..bc6a34e --- /dev/null +++ b/driver/parser_test.go @@ -0,0 +1,50 @@ +package driver + +import ( + "strings" + "testing" + + "github.com/nihei9/vartan/grammar" + "github.com/nihei9/vartan/spec" +) + +func TestParser_Parse(t *testing.T) { + specSrc := ` +expr + : expr "\+" term + | term + ; +term + : term "\*" factor + | factor + ; +factor + : "\(" expr "\)" + | id + ; +id: "[A-Za-z_][0-9A-Za-z_]*"; +` + ast, err := spec.Parse(strings.NewReader(specSrc)) + if err != nil { + t.Fatal(err) + } + g, err := grammar.NewGrammar(ast) + if err != nil { + t.Fatal(err) + } + gram, err := grammar.Compile(g) + if err != nil { + t.Fatal(err) + } + src := `(a+(b+c))*d+e` + p, err := NewParser(gram, strings.NewReader(src)) + if err != nil { + t.Fatal(err) + } + err = p.Parse() + if err != nil { + t.Fatal(err) + } + + printCST(p.GetCST(), 0) +} -- cgit v1.2.3