diff options
Diffstat (limited to 'cmd/vartan/parse.go')
-rw-r--r-- | cmd/vartan/parse.go | 17 |
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) |