def _parse_fields(self): """ fields: '(' type_expr Name ( ',' type_expr Name )* ')' Name Quantifier? should be changed to typename. """ fields = [] self._match(TokenKind.LParen) while self.cur_token.kind == TokenKind.Name: typ = self._parse_type_expr() field_name = self._match(TokenKind.Name) fields.append(Field(typ, field_name)) if self.cur_token.kind == TokenKind.RParen: break elif self.cur_token.kind == TokenKind.Comma: self._advance() self._match(TokenKind.RParen) return fields
def _parse_fields(self): fields = [] self._match(TokenKind.LParen) while self.cur_token.kind == TokenKind.TypeId: typename = self._advance() is_seq, is_opt = self._parse_optional_field_quantifier() id = (self._advance() if self.cur_token.kind in self._id_kinds else None) fields.append(Field(typename, id, seq=is_seq, opt=is_opt)) if self.cur_token.kind == TokenKind.RParen: break elif self.cur_token.kind == TokenKind.Comma: self._advance() self._match(TokenKind.RParen) return fields