func (a *Atomiser) ReadList() (c *chain.Cell) { var tail *chain.Cell for a.NextToken(); !a.IsListEnd(); { if a.IsEOF() { panic("Unexpected EOF in list literal") } if c == nil { c = &chain.Cell{Head: a.Read()} tail = c } else { tail.Append(a.Read()) tail = tail.Tail } } a.NextToken() return }