aboutsummaryrefslogtreecommitdiff
path: root/go/src/reader/reader.go
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-10-04 21:49:26 -0500
committerJoel Martin <github@martintribe.org>2014-10-04 21:49:26 -0500
commit70ea599b6e0787102f12cd543dcd65a2eb3751d5 (patch)
tree81e43e09ed4f56f9290cc765e0f57dd35de02a5d /go/src/reader/reader.go
parent45e1db6afbb0c63b1cd5d17e0996d7929803f37b (diff)
downloadmal-70ea599b6e0787102f12cd543dcd65a2eb3751d5.tar.gz
mal-70ea599b6e0787102f12cd543dcd65a2eb3751d5.zip
go: step1_read_print print working.
Diffstat (limited to 'go/src/reader/reader.go')
-rw-r--r--go/src/reader/reader.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/go/src/reader/reader.go b/go/src/reader/reader.go
index 3222d6f..6a08840 100644
--- a/go/src/reader/reader.go
+++ b/go/src/reader/reader.go
@@ -29,7 +29,7 @@ func (tr *TokenReader) next() *string {
}
func (tr *TokenReader) peek() *string {
- if tr.position > len(tr.tokens) { return nil }
+ if tr.position >= len(tr.tokens) { return nil }
return &tr.tokens[tr.position]
}
@@ -79,8 +79,9 @@ func read_list(rdr Reader) (types.MalType, error) {
return nil, errors.New("expected '('")
}
token = rdr.peek()
- for ; token != nil && *token != ")" ; token = rdr.peek() {
+ for ; true ; token = rdr.peek() {
if token == nil { return nil, errors.New("exepected ')', got EOF") }
+ if *token == ")" { break }
f, e := read_form(rdr)
if e != nil { return nil, e }
ast_list = append(ast_list, f)