package parser import ( "io/fs" "asciigoat.org/core/lexer" ) // NewError creates a lexer.Error using a lexer.Position 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, } } // ErrPlusPosition returns a copy of the given [lexer.Error] // offsetting the Line/Column information. func ErrPlusPosition(pos lexer.Position, e *lexer.Error) *lexer.Error { pos.Add(lexer.Position{ Line: e.Line, Column: e.Column, }) return NewError(pos, e.Content, e.Hint, e.Err) } // NewErrIncompleteQuotedString returns a [lexer.Error] // indicating the quoted string being parsed wasn't correctly // terminated func NewErrIncompleteQuotedString(p *TextParser) *lexer.Error { return newErrIncomplete(p, "incomplete quoted string") } func newErrIncomplete(p *TextParser, hint string) *lexer.Error { pos, s := p.Emit() pos.Add(GetPositionalLength(s)) return NewError(pos, s, hint, fs.ErrInvalid) }