func parseParaList(p *parser) *ast.ParaList { ret := new(ast.ParaList) ret.Lparen = p.ExpectOp("(") if p.InError() { return nil } if p.SeeOp(")") { // empty parameter list ret.Rparen = p.Shift() return ret } for !p.See(lex8.EOF) { para := parsePara(p) if p.InError() { return nil } ret.Paras = append(ret.Paras, para) if p.SeeOp(",") { ret.Commas = append(ret.Commas, p.Shift()) } else if !p.SeeOp(")") { p.ExpectOp(",") return nil } if p.SeeOp(")") { break } } ret.Rparen = p.ExpectOp(")") return ret }