if __name__ == "__main__": # recompile grammar if needed if __file__.endswith('Parser.py'): grammar_path = os.path.abspath(__file__).replace('Parser.py', '.ebnf') else: grammar_path = os.path.splitext(__file__)[0] + '.ebnf' parser_update = False def notify(): global parser_update parser_update = True print('recompiling ' + grammar_path) if os.path.exists(grammar_path) and os.path.isfile(grammar_path): if not recompile_grammar(grammar_path, force=False, notify=notify): error_file = os.path.basename(__file__).replace( 'Parser.py', '_ebnf_ERRORS.txt') with open(error_file, encoding="utf-8") as f: print(f.read()) sys.exit(1) elif parser_update: print( os.path.basename(__file__) + ' has changed. ' 'Please run again in order to apply updated compiler') sys.exit(0) else: print('Could not check whether grammar requires recompiling, ' 'because grammar was not found at: ' + grammar_path) from argparse import ArgumentParser
""" start_logging(log_dir) compiler = get_compiler() result_tuple = compile_source(source, get_preprocessor(), get_grammar(), get_transformer(), compiler) return result_tuple if __name__ == "__main__": # recompile grammar if needed grammar_path = os.path.abspath(__file__).replace('Parser.py', '.ebnf') if os.path.exists(grammar_path): if not recompile_grammar(grammar_path, force=False, notify=lambda:print('recompiling ' + grammar_path)): error_file = os.path.basename(__file__).replace('Parser.py', '_ebnf_ERRORS.txt') with open(error_file, encoding="utf-8") as f: print(f.read()) sys.exit(1) else: print('Could not check whether grammar requires recompiling, ' 'because grammar was not found at: ' + grammar_path) if len(sys.argv) > 1: # compile file file_name, log_dir = sys.argv[1], '' if file_name in ['-d', '--debug'] and len(sys.argv) > 2: file_name, log_dir = sys.argv[2], 'LOGS' result, errors, ast = compile_src(file_name, log_dir) if errors: