MCPcopy Create free account
hub / github.com/apache/fory / parse_message

Method parse_message

compiler/fory_compiler/frontend/proto/parser.py:214–255  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

212 )
213
214 def parse_message(self) -> ProtoMessage:
215 start = self.current()
216 self.consume(TokenType.MESSAGE, "Expected 'message'")
217 name = self.consume(TokenType.IDENT, "Expected message name").value
218 self.consume(TokenType.LBRACE, "Expected '{' after message name")
219
220 fields: List[ProtoField] = []
221 nested_messages: List[ProtoMessage] = []
222 nested_enums: List[ProtoEnum] = []
223 oneofs = []
224 options = {}
225
226 while not self.check(TokenType.RBRACE):
227 if self.check(TokenType.OPTION):
228 opt_name, opt_value = self.parse_option_statement()
229 options[opt_name] = opt_value
230 elif self.check(TokenType.MESSAGE):
231 nested_messages.append(self.parse_message())
232 elif self.check(TokenType.ENUM):
233 nested_enums.append(self.parse_enum())
234 elif self.check(TokenType.RESERVED):
235 self.parse_reserved()
236 elif self.check(TokenType.EXTENSIONS):
237 self.parse_extensions()
238 elif self.check(TokenType.ONEOF):
239 oneofs.append(self.parse_oneof())
240 elif self.check(TokenType.SEMI):
241 self.advance()
242 else:
243 fields.append(self.parse_field())
244
245 self.consume(TokenType.RBRACE, "Expected '}' after message")
246 return ProtoMessage(
247 name=name,
248 fields=fields,
249 nested_messages=nested_messages,
250 nested_enums=nested_enums,
251 oneofs=oneofs,
252 options=options,
253 line=start.line,
254 column=start.column,
255 )
256
257 def parse_oneof(self) -> ProtoOneof:
258 start = self.current()

Callers 1

parseMethod · 0.95

Calls 12

currentMethod · 0.95
consumeMethod · 0.95
checkMethod · 0.95
parse_enumMethod · 0.95
parse_reservedMethod · 0.95
parse_extensionsMethod · 0.95
parse_oneofMethod · 0.95
advanceMethod · 0.95
parse_fieldMethod · 0.95
ProtoMessageClass · 0.90
appendMethod · 0.45

Tested by

no test coverage detected