From 838a0332e632a374a98a7280e0543fc77a72f1cd Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Mon, 15 May 2017 08:34:00 -0700 Subject: [PATCH] json: token peeker This will help our hand-written recursive-descent parser walk the tokens with one token of lookahead. --- zcl/json/peeker.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 zcl/json/peeker.go diff --git a/zcl/json/peeker.go b/zcl/json/peeker.go new file mode 100644 index 0000000..c04d1b2 --- /dev/null +++ b/zcl/json/peeker.go @@ -0,0 +1,24 @@ +package json + +type peeker struct { + tokens []token + pos int +} + +func newPeeker(tokens []token) *peeker { + return &peeker{ + tokens: tokens, + pos: 0, + } +} + +func (p *peeker) Peek() token { + return p.tokens[p.pos] +} + +func (p *peeker) Read() token { + if p.tokens[p.pos].Type != tokenEOF { + p.pos++ + } + return p.tokens[p.pos] +}