diff --git a/parser/lexer.go b/parser/lexer.go index 2db36e9..5ee901e 100644 --- a/parser/lexer.go +++ b/parser/lexer.go @@ -20,8 +20,7 @@ func (p *Parser) lexStart() (lexer.StateFn, error) { switch { case err != nil: // read error - log.Printf("%s: %s: %s", p.pos, "error", err) - return nil, err + return p.emitError("", err) case IsNewLine(r): // new line p.lexNewLine(r) diff --git a/parser/lexer_error.go b/parser/lexer_error.go new file mode 100644 index 0000000..9eaa98b --- /dev/null +++ b/parser/lexer_error.go @@ -0,0 +1,15 @@ +package parser + +import "asciigoat.org/core/lexer" + +func (p *Parser) emitError(content string, err error) (lexer.StateFn, error) { + err2 := p.OnError(p.pos, content, err) + switch { + case err2 != nil: + // return wrapped error + return nil, err2 + default: + // return original error + return nil, err + } +}