summaryrefslogtreecommitdiff
path: root/nodes.go
diff options
context:
space:
mode:
Diffstat (limited to 'nodes.go')
-rw-r--r--nodes.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/nodes.go b/nodes.go
new file mode 100644
index 0000000..c51db6f
--- /dev/null
+++ b/nodes.go
@@ -0,0 +1,43 @@
+package parsec
+
+type Node interface {
+ Pos() int
+}
+
+type Token struct {
+ pos int
+ Value string
+}
+
+func (e Token) Pos() int { return e.pos }
+
+func NewToken(pos int, value string) Token {
+ return Token{pos, value}
+}
+
+type Error struct {
+ pos int
+ Error string
+}
+
+func (e Error) Pos() int { return e.pos }
+
+func NewError(pos int, message string) Error {
+ return Error{pos, message}
+}
+
+func IsError(n Node) bool {
+ _, isErr := n.(Error)
+ return isErr
+}
+
+type Sequence struct {
+ pos int
+ Nodes []Node
+}
+
+func (e Sequence) Pos() int { return e.pos }
+
+func NewSequence(pos int, n ...Node) Sequence {
+ return Sequence{pos, n}
+}