aboutsummaryrefslogtreecommitdiff
path: root/cmd/vartan/compile.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-07-22 02:19:11 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-07-22 02:19:11 +0900
commit42cea3ead12d4f64c03aca2892c37e0f6c8c4c90 (patch)
tree0c9839695aee5fe3b51b0e6e372162682eccd0f3 /cmd/vartan/compile.go
parentPrint pattern strings of anonymous pattern on conflict messages (diff)
downloadurubu-42cea3ead12d4f64c03aca2892c37e0f6c8c4c90.tar.gz
urubu-42cea3ead12d4f64c03aca2892c37e0f6c8c4c90.tar.xz
Write a description file
The description file describes a LR(0) item set and conflicts (if any).
Diffstat (limited to 'cmd/vartan/compile.go')
-rw-r--r--cmd/vartan/compile.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/cmd/vartan/compile.go b/cmd/vartan/compile.go
index 354637b..3753cd0 100644
--- a/cmd/vartan/compile.go
+++ b/cmd/vartan/compile.go
@@ -6,6 +6,7 @@ import (
"io/ioutil"
"os"
"path/filepath"
+ "strings"
verr "github.com/nihei9/vartan/error"
"github.com/nihei9/vartan/grammar"
@@ -94,7 +95,13 @@ func runCompile(cmd *cobra.Command, args []string) (retErr error) {
return err
}
- cgram, err := grammar.Compile(gram)
+ var descFileName string
+ {
+ _, grmFileName := filepath.Split(grmPath)
+ descFileName = fmt.Sprintf("%v.desc", strings.TrimSuffix(grmFileName, ".vr"))
+ }
+
+ cgram, err := grammar.Compile(gram, grammar.EnableDescription(descFileName))
if err != nil {
return err
}
@@ -119,8 +126,10 @@ func readGrammar(path string) (grm *grammar.Grammar, retErr error) {
return nil, err
}
- var b grammar.GrammarBuilder
- return b.Build(ast)
+ b := grammar.GrammarBuilder{
+ AST: ast,
+ }
+ return b.Build()
}
func writeCompiledGrammar(cgram *spec.CompiledGrammar, path string) error {