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

Method parse_reserved

compiler/fory_compiler/frontend/fdl/parser.py:410–449  ·  view source on GitHub ↗

Parse a reserved statement. Supports: - reserved 2, 15, 9 to 11, 40 to max; (numbers and ranges) - reserved "FOO", "BAR"; (field/value names)

(self)

Source from the content-addressed store, hash-verified

408 )
409
410 def parse_reserved(self):
411 """Parse a reserved statement.
412
413 Supports:
414 - reserved 2, 15, 9 to 11, 40 to max; (numbers and ranges)
415 - reserved "FOO", "BAR"; (field/value names)
416 """
417 self.consume(TokenType.RESERVED)
418
419 # Parse comma-separated list of reserved items
420 while True:
421 if self.check(TokenType.STRING):
422 # Reserved name: "FOO"
423 self.advance()
424 elif self.check(TokenType.INT):
425 # Reserved number or range start: 2 or 9 to 11
426 self.advance()
427 # Check for range: N to M or N to max
428 if self.check(TokenType.TO):
429 self.advance()
430 if self.check(TokenType.MAX):
431 self.advance()
432 elif self.check(TokenType.INT):
433 self.advance()
434 else:
435 raise self.error("Expected integer or 'max' after 'to'")
436 else:
437 raise self.error(
438 f"Expected reserved number or string, got {self.current().type.name}"
439 )
440
441 # Check for comma (more items) or semicolon (end)
442 if self.check(TokenType.COMMA):
443 self.advance()
444 elif self.check(TokenType.SEMI):
445 break
446 else:
447 raise self.error("Expected ',' or ';' in reserved statement")
448
449 self.consume(TokenType.SEMI, "Expected ';' after reserved statement")
450
451 def parse_enum_value(self) -> EnumValue:
452 """Parse an enum value: NAME = 0;"""

Callers 3

parse_enumMethod · 0.95
parse_messageMethod · 0.95
parse_unionMethod · 0.95

Calls 5

consumeMethod · 0.95
checkMethod · 0.95
advanceMethod · 0.95
errorMethod · 0.95
currentMethod · 0.95

Tested by

no test coverage detected