From 14b2d7e2728ab0314db56fc6e493d06fa285d006 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sun, 3 Apr 2022 00:23:18 +0900 Subject: Allow arbitrary user-defined types for nodes in a syntax tree --- cmd/vartan/parse.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'cmd') 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 { -- cgit v1.2.3