diff --git a/basic/error.go b/basic/error.go index fec162d..24a9c17 100644 --- a/basic/error.go +++ b/basic/error.go @@ -10,24 +10,22 @@ var ( errInvalidToken = errors.New("invalid token") ) -func newErrInvalidToken(t *token) *lexer.Error { - err := &lexer.Error{ - Line: t.pos.Line, - Column: t.pos.Column, - Content: t.value, - Err: errInvalidToken, - } - return err -} - -func (dec *decoder) OnError(pos lexer.Position, content string, err error) error { - err = &lexer.Error{ +func newError(pos lexer.Position, content, hint string, err error) *lexer.Error { + return &lexer.Error{ Line: pos.Line, Column: pos.Column, Content: content, + Hint: hint, Err: err, } +} +func newErrInvalidToken(t *token) *lexer.Error { + return newError(t.pos, t.value, "", errInvalidToken) +} + +func (dec *decoder) OnError(pos lexer.Position, content string, err error) error { + err = newError(pos, content, "", err) dec.executeFinal() return err } diff --git a/basic/token.go b/basic/token.go index 4f2103b..fc2862b 100644 --- a/basic/token.go +++ b/basic/token.go @@ -149,6 +149,8 @@ func (dec *decoder) OnToken(pos lexer.Position, typ parser.TokenType, value stri return nil default: // unacceptable - return newErrInvalidToken(t) + err := newErrInvalidToken(t) + dec.executeFinal() + return err } }