diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2022-04-03 00:23:18 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2022-04-03 01:26:39 +0900 |
commit | 14b2d7e2728ab0314db56fc6e493d06fa285d006 (patch) | |
tree | 94b92e6307a570edeaae1a43a104e200981d18cc /cmd/vartan/parse.go | |
parent | Fix help documents (diff) | |
download | urubu-14b2d7e2728ab0314db56fc6e493d06fa285d006.tar.gz urubu-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.go | 11 |
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 { |