def test_tree(self, tree: DerivationTree) -> bool: """Return True if testing `tree` passes, else False""" s = tree_to_string(tree) if self.log: print(f"Testing {repr(s)}...", end="") try: self.test(s) except Exception as exc: if self.log: print(f"FAIL ({type(exc).__name__})") ret = False else: if self.log: print(f"PASS") ret = True return ret
from fuzzingbook.Parser import Parser, EarleyParser # minor dependency if __name__ == '__main__': simple_html_parser = EarleyParser(SIMPLE_HTML_GRAMMAR) if __name__ == '__main__': bad_input_tree = list(simple_html_parser.parse(BAD_INPUT))[0] if __name__ == '__main__': display_tree(bad_input_tree) from fuzzingbook.GrammarFuzzer import tree_to_string, all_terminals if __name__ == '__main__': tree_to_string(bad_input_tree) if __name__ == '__main__': assert tree_to_string(bad_input_tree) == BAD_INPUT ## Mutating the Tree ## ----------------- if __name__ == '__main__': print('\n## Mutating the Tree') from fuzzingbook.Grammars import is_valid_grammar class TreeMutator: """Grammar-based mutations of derivation trees."""
def test_children(children: List) -> None: parent_children[path[-1]] = (symbol, children) # type: ignore s = tree_to_string(tree) self.test(s)