Example #1
0
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
}