def print_grammar(grammar_txt, grammar_fname): g_parser = HandRolledGrammarParser(grammar_txt, grammar_fname) g_ast, err = g_parser.parse() if err: return None, err g, _ = Analyzer(g_ast).analyze() printer = GrammarPrinter(g) return printer.parse()
def compile_grammar(grammar_txt, grammar_fname, compiled_parser_class_name, package, inline_base): g_parser = HandRolledGrammarParser(grammar_txt, grammar_fname) g_ast, err = g_parser.parse() if err: return None, err g, _ = Analyzer(g_ast).analyze() compiler = Compiler(g, compiled_parser_class_name, package, inline_base) return compiler.walk()
def check(self, text, ast=None, dedent=True, err=None): text_to_parse = textwrap.dedent(text) if dedent else text parser = HandRolledGrammarParser(text_to_parse, 'glop.g') actual_ast, actual_err = parser.parse() self.assertEqual(actual_ast, ast) self.assertEqual(actual_err, err)