diff options
author | Adam Scarr <adam@vektah.net> | 2017-08-13 16:56:12 +1000 |
---|---|---|
committer | Adam Scarr <adam@vektah.net> | 2017-08-13 16:56:12 +1000 |
commit | 0dc37ae5bc10cc0669f88ab9febbc039a28f23d1 (patch) | |
tree | 0395aac5ab5223a4390eb03b22455ed3c98b6c90 /errors.go | |
parent | f633909141dc1e2c2e49b94e5e478e99be51a9cb (diff) |
Remove a few allocs from Run
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 +} |