diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2022-05-03 21:40:43 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2022-05-10 23:14:34 +0900 |
commit | f7484ef11af39585989dbbcad701551c561fa67c (patch) | |
tree | 828b4225802ed442e92017a81d01b5442d2b4fb6 /cmd/vartan/parse.go | |
parent | Update CHANGELOG (diff) | |
download | urubu-f7484ef11af39585989dbbcad701551c561fa67c.tar.gz urubu-f7484ef11af39585989dbbcad701551c561fa67c.tar.xz |
Add --json option to vartan-parse command
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r-- | cmd/vartan/parse.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go index b65f72f..77bb9f0 100644 --- a/cmd/vartan/parse.go +++ b/cmd/vartan/parse.go @@ -17,6 +17,7 @@ var parseFlags = struct { onlyParse *bool cst *bool disableLAC *bool + json *bool }{} func init() { @@ -31,6 +32,7 @@ func init() { parseFlags.onlyParse = cmd.Flags().Bool("only-parse", false, "when this option is enabled, the parser performs only parse and doesn't semantic actions") parseFlags.cst = cmd.Flags().Bool("cst", false, "when this option is enabled, the parser generates a CST") parseFlags.disableLAC = cmd.Flags().Bool("disable-lac", false, "disable LAC (lookahead correction)") + parseFlags.json = cmd.Flags().Bool("json", false, "enable JSON output") rootCmd.AddCommand(cmd) } @@ -158,7 +160,16 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) { if len(synErrs) > 0 { fmt.Println("") } - driver.PrintTree(os.Stdout, tree) + + if *parseFlags.json { + b, err := json.Marshal(tree) + if err != nil { + return err + } + fmt.Fprintln(os.Stdout, string(b)) + } else { + driver.PrintTree(os.Stdout, tree) + } } } |