From 5c26f617583463382978429f4c3fe550de521d42 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Fri, 1 Apr 2022 01:39:28 +0900 Subject: Print a parse tree even if syntax error occur A parser can construct a parse tree even if syntax error occur. When there is a parse tree, print it. --- cmd/vartan/parse.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'cmd/vartan/parse.go') diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go index 9b15251..14412bf 100644 --- a/cmd/vartan/parse.go +++ b/cmd/vartan/parse.go @@ -141,14 +141,22 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) { fmt.Fprintf(os.Stderr, "\n") } - if len(synErrs) == 0 && !*parseFlags.onlyParse { + if !*parseFlags.onlyParse { + // A parser can construct a parse tree even if syntax errors occur. + // When therer is a parse tree, print it. + var tree *driver.Node if *parseFlags.cst { tree = treeAct.CST() } else { tree = treeAct.AST() } - driver.PrintTree(os.Stdout, tree) + if tree != nil { + if len(synErrs) > 0 { + fmt.Println("") + } + driver.PrintTree(os.Stdout, tree) + } } return nil -- cgit v1.2.3