diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-09-01 23:57:02 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-09-02 00:01:35 +0900 |
commit | 8832b64b4227245e45f9a24d543c1b80168c489d (patch) | |
tree | 20ed014caa923254d8e7870241225d8c20f7d2b4 /cmd | |
parent | Remove the expected terminals field from the parsing table (diff) | |
download | urubu-8832b64b4227245e45f9a24d543c1b80168c489d.tar.gz urubu-8832b64b4227245e45f9a24d543c1b80168c489d.tar.xz |
Support LAC (lookahead correction)
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/vartan/describe.go | 6 | ||||
-rw-r--r-- | cmd/vartan/parse.go | 11 |
2 files changed, 13 insertions, 4 deletions
diff --git a/cmd/vartan/describe.go b/cmd/vartan/describe.go index c2cde93..2dabf9f 100644 --- a/cmd/vartan/describe.go +++ b/cmd/vartan/describe.go @@ -87,7 +87,11 @@ func readDescription(path string) (*spec.Description, error) { return desc, nil } -const descTemplate = `# Conflicts +const descTemplate = `# Class + +{{ .Class }} + +# Conflicts {{ printConflictSummary . }} diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go index 36401e1..5cf8b5b 100644 --- a/cmd/vartan/parse.go +++ b/cmd/vartan/parse.go @@ -13,9 +13,10 @@ import ( ) var parseFlags = struct { - source *string - onlyParse *bool - cst *bool + source *string + onlyParse *bool + cst *bool + disableLAC *bool }{} func init() { @@ -29,6 +30,7 @@ func init() { parseFlags.source = cmd.Flags().StringP("source", "s", "", "source file path (default stdin)") 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)") rootCmd.AddCommand(cmd) } @@ -85,6 +87,9 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) { case !*parseFlags.onlyParse: opts = append(opts, driver.MakeAST()) } + if *parseFlags.disableLAC { + opts = append(opts, driver.DisableLAC()) + } p, err = driver.NewParser(cgram, src, opts...) if err != nil { return err |