aboutsummaryrefslogtreecommitdiff
path: root/cmd/vartan/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r--cmd/vartan/parse.go12
1 files changed, 10 insertions, 2 deletions
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