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.go17
1 files changed, 11 insertions, 6 deletions
diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go
index 0e95405..caf1cbd 100644
--- a/cmd/vartan/parse.go
+++ b/cmd/vartan/parse.go
@@ -98,7 +98,12 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) {
}
}
- p, err = driver.NewParser(driver.NewGrammar(cgram), src, opts...)
+ toks, err := driver.NewTokenStream(cgram, src)
+ if err != nil {
+ return err
+ }
+
+ p, err = driver.NewParser(toks, driver.NewGrammar(cgram), opts...)
if err != nil {
return err
}
@@ -115,13 +120,13 @@ func runParse(cmd *cobra.Command, args []string) (retErr error) {
var msg string
switch {
- case tok.EOF:
+ case tok.EOF():
msg = "<eof>"
- case tok.Invalid:
- msg = fmt.Sprintf("'%v' (<invalid>)", string(tok.Lexeme))
+ case tok.Invalid():
+ msg = fmt.Sprintf("'%v' (<invalid>)", string(tok.Lexeme()))
default:
- k := cgram.LexicalSpecification.Maleeni.Spec.KindNames[tok.KindID]
- msg = fmt.Sprintf("'%v' (%v)", string(tok.Lexeme), k)
+ t := cgram.ParsingTable.Terminals[tok.TerminalID()]
+ msg = fmt.Sprintf("'%v' (%v)", string(tok.Lexeme()), t)
}
fmt.Fprintf(os.Stderr, "%v:%v: %v: %v", synErr.Row+1, synErr.Col+1, synErr.Message, msg)