summaryrefslogtreecommitdiff
path: root/errors.go
diff options
context:
space:
mode:
authorAdam Scarr <adam@vektah.net>2017-08-13 16:56:12 +1000
committerAdam Scarr <adam@vektah.net>2017-08-13 16:56:12 +1000
commit0dc37ae5bc10cc0669f88ab9febbc039a28f23d1 (patch)
tree0395aac5ab5223a4390eb03b22455ed3c98b6c90 /errors.go
parentf633909141dc1e2c2e49b94e5e478e99be51a9cb (diff)
Remove a few allocs from Run
Diffstat (limited to 'errors.go')
-rw-r--r--errors.go26
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
+}