aboutsummaryrefslogtreecommitdiff
path: root/cmd/vartan/parse.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2022-04-03 00:23:18 +0900
committerRyo Nihei <nihei.dev@gmail.com>2022-04-03 01:26:39 +0900
commit14b2d7e2728ab0314db56fc6e493d06fa285d006 (patch)
tree94b92e6307a570edeaae1a43a104e200981d18cc /cmd/vartan/parse.go
parentFix help documents (diff)
downloadcotia-14b2d7e2728ab0314db56fc6e493d06fa285d006.tar.gz
cotia-14b2d7e2728ab0314db56fc6e493d06fa285d006.tar.xz
Allow arbitrary user-defined types for nodes in a syntax tree
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r--cmd/vartan/parse.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go
index 14412bf..b65f72f 100644
--- a/cmd/vartan/parse.go
+++ b/cmd/vartan/parse.go
@@ -70,6 +70,7 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) {
var p *driver.Parser
var treeAct *driver.SyntaxTreeActionSet
+ var tb *driver.DefaulSyntaxTreeBuilder
{
src := os.Stdin
if *parseFlags.source != "" {
@@ -87,9 +88,11 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) {
{
switch {
case *parseFlags.cst:
- treeAct = driver.NewSyntaxTreeActionSet(gram, false, true)
+ tb = driver.NewDefaultSyntaxTreeBuilder()
+ treeAct = driver.NewCSTActionSet(gram, tb)
case !*parseFlags.onlyParse:
- treeAct = driver.NewSyntaxTreeActionSet(gram, true, false)
+ tb = driver.NewDefaultSyntaxTreeBuilder()
+ treeAct = driver.NewASTActionSet(gram, tb)
}
if treeAct != nil {
opts = append(opts, driver.SemanticAction(treeAct))
@@ -147,9 +150,9 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) {
var tree *driver.Node
if *parseFlags.cst {
- tree = treeAct.CST()
+ tree = tb.Tree()
} else {
- tree = treeAct.AST()
+ tree = tb.Tree()
}
if tree != nil {
if len(synErrs) > 0 {