diff options
Diffstat (limited to 'nodes.go')
-rw-r--r-- | nodes.go | 43 |
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} +} |