From 68cde88125e1f016c5706ca8d0b3db6ba06624a2 Mon Sep 17 00:00:00 2001 From: Adam Scarr Date: Sun, 6 Aug 2017 14:31:35 +1000 Subject: Initial commit --- nodes.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 nodes.go (limited to 'nodes.go') 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} +} -- cgit v1.2.3