diff options
Diffstat (limited to 'errors.go')
-rw-r--r-- | errors.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/errors.go b/errors.go new file mode 100644 index 0000000..3f8787c --- /dev/null +++ b/errors.go @@ -0,0 +1,26 @@ +package goparsify + +import "fmt" + +// Error represents a parse error. These will often be set, the parser will back up a little and +// find another viable path. In general when combining errors the longest error should be returned. +type Error struct { + pos int + expected string +} + +// Pos is the offset into the document the error was found +func (e *Error) Pos() int { return e.pos } + +// Error satisfies the golang error interface +func (e *Error) Error() string { return fmt.Sprintf("offset %d: expected %s", e.pos, e.expected) } + +// UnparsedInputError is returned by Run when not all of the input was consumed. There may still be a valid result +type UnparsedInputError struct { + remaining string +} + +// Error satisfies the golang error interface +func (e UnparsedInputError) Error() string { + return "left unparsed: " + e.remaining +} |