aboutsummaryrefslogtreecommitdiff
path: root/cmd/vartan/parse.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-09-01 23:57:02 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-09-02 00:01:35 +0900
commit8832b64b4227245e45f9a24d543c1b80168c489d (patch)
tree20ed014caa923254d8e7870241225d8c20f7d2b4 /cmd/vartan/parse.go
parentRemove the expected terminals field from the parsing table (diff)
downloadurubu-8832b64b4227245e45f9a24d543c1b80168c489d.tar.gz
urubu-8832b64b4227245e45f9a24d543c1b80168c489d.tar.xz
Support LAC (lookahead correction)
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r--cmd/vartan/parse.go11
1 files changed, 8 insertions, 3 deletions
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