func (p *parser) readMethodOptions(mth *ast.Method) *parseError { if err := p.readToken("{"); err != nil { return err } for !p.done { tok := p.next() switch tok.value { case "}": // End of Options return nil case "option": //Handled below default: return p.errorf(`got %q, want "option" or "}"`, tok.value) } if err := p.readToken("("); err != nil { return err } tok = p.next() if tok.err != nil { return tok.err } key := tok.value if err := p.readToken(")"); err != nil { return err } if err := p.readToken("="); err != nil { return err } tok = p.next() if tok.err != nil { return tok.err } val := tok.value if err := p.readToken(";"); err != nil { return err } mth.Options = append(mth.Options, [2]string{key, val}) } return nil }