MCPcopy Index your code
hub / github.com/python/cpython / Grammar

Class Grammar

Tools/peg_generator/pegen/grammar.py:28–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26
27
28class Grammar:
29 def __init__(self, rules: Iterable[Rule], metas: Iterable[tuple[str, str | None]]):
30 # Check if there are repeated rules in "rules"
31 all_rules = {}
32 for rule in rules:
33 if rule.name in all_rules:
34 raise GrammarError(f"Repeated rule {rule.name!r}")
35 all_rules[rule.name] = rule
36 self.rules = all_rules
37 self.metas = dict(metas)
38
39 def __str__(self) -> str:
40 return "\n".join(str(rule) for name, rule in self.rules.items())
41
42 def __repr__(self) -> str:
43 lines = ["Grammar("]
44 lines.append(" [")
45 for rule in self.rules.values():
46 lines.append(f" {repr(rule)},")
47 lines.append(" ],")
48 lines.append(" {repr(list(self.metas.items()))}")
49 lines.append(")")
50 return "\n".join(lines)
51
52 def __iter__(self) -> Iterator[Rule]:
53 yield from self.rules.values()
54
55
56# Global flag whether we want actions in __str__() -- default off.

Callers 1

grammarMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…