import argparse from .pgen import ParserGenerator def main(): parser = argparse.ArgumentParser(description="Parser generator main program.") parser.add_argument( "grammar", type=str, help="The file with the grammar definition in EBNF format" ) parser.add_argument("tokens", type=str, help="The file with the token definitions") parser.add_argument( "graminit_h", type=argparse.FileType("w"), help="The path to write the grammar's non-terminals as #defines", ) parser.add_argument( "graminit_c", type=argparse.FileType("w"), help="The path to write the grammar as initialized data", ) parser.add_argument("--verbose", "-v", action="count") parser.add_argument( "--graph", type=argparse.FileType("w"), action="store", metavar="GRAPH_OUTPUT_FILE", help="Dumps a DOT representation of the generated automata in a file", ) args = parser.parse_args() p = ParserGenerator( args.grammar, args.tokens, verbose=args.verbose, graph_file=args.graph ) grammar = p.make_grammar() grammar.produce_graminit_h(args.graminit_h.write) grammar.produce_graminit_c(args.graminit_c.write) if __name__ == "__main__": main()