def _update_grammar_text(self) -> None:
"""
"B", {"aB", "bC", "a"} turns into
"B -> aB | bC | a"
"""
def transform_production(non_terminal: str, productions: Set[str]):
return "{} -> {}".format(
non_terminal, " | ".join(sorted(productions)))
initial_symbol = self._grammar.initial_symbol()
productions = self._grammar.productions()
text = ""
if initial_symbol in productions:
text = transform_production(
initial_symbol, productions[initial_symbol]) + "\n"
for non_terminal in sorted(set(productions.keys()) - {initial_symbol}):
text += transform_production(
non_terminal, productions[non_terminal]) + "\n"
self.grammarText.setPlainText(text)
评论列表
文章目录