| 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") |
| args = parser.parse_args() |
| |
| p = ParserGenerator(args.grammar, args.tokens, verbose=args.verbose) |
| grammar = p.make_grammar() |
| grammar.produce_graminit_h(args.graminit_h.write) |
| grammar.produce_graminit_c(args.graminit_c.write) |
| |
| |
| if __name__ == "__main__": |
| main() |