def main(): if len(sys.argv) > 1 and sys.argv[1] == "+mono": del sys.argv[1] monomorphize = True else: monomorphize = False if len(sys.argv) > 1 and sys.argv[1] == "+iodelay": del sys.argv[1] iodelay = True else: iodelay = False if len(sys.argv) > 1 and sys.argv[1] == "+diag": del sys.argv[1] def process_diagnostic(diag): print("\n".join(diag.render(only_line=True))) if diag.level == "fatal": exit() else: def process_diagnostic(diag): print("\n".join(diag.render())) if diag.level in ("fatal", "error"): exit(1) engine = diagnostic.Engine() engine.process = process_diagnostic buf = source.Buffer("".join(fileinput.input()).expandtabs(), os.path.basename(fileinput.filename())) parsed, comments = parse_buffer(buf, engine=engine) typed = ASTTypedRewriter(engine=engine, prelude=prelude.globals()).visit(parsed) Inferencer(engine=engine).visit(typed) ConstnessValidator(engine=engine).visit(typed) if monomorphize: CastMonomorphizer(engine=engine).visit(typed) IntMonomorphizer(engine=engine).visit(typed) Inferencer(engine=engine).visit(typed) if iodelay: IODelayEstimator(engine=engine, ref_period=1e6).visit_fixpoint(typed) printer = Printer(buf) printer.visit(typed) for comment in comments: if comment.text.find("CHECK") >= 0: printer.rewriter.remove(comment.loc) print(printer.rewrite().source)
def __init__(self, source_buffer, engine=None): if engine is None: self.engine = diagnostic.Engine(all_errors_are_fatal=True) else: self.engine = engine self.embedding_map = None self.name, _ = os.path.splitext(os.path.basename(source_buffer.name)) asttyped_rewriter = transforms.ASTTypedRewriter(engine=engine, prelude=prelude.globals()) inferencer = transforms.Inferencer(engine=engine) self.parsetree, self.comments = parse_buffer(source_buffer, engine=engine) self.typedtree = asttyped_rewriter.visit(self.parsetree) self.globals = asttyped_rewriter.globals inferencer.visit(self.typedtree)
def __init__(self, source_buffer, engine=None): if engine is None: self.engine = diagnostic.Engine(all_errors_are_fatal=True) else: self.engine = engine self.embedding_map = None self.name, _ = os.path.splitext(os.path.basename(source_buffer.name)) asttyped_rewriter = transforms.ASTTypedRewriter( engine=engine, prelude=prelude.globals()) inferencer = transforms.Inferencer(engine=engine) self.parsetree, self.comments = parse_buffer(source_buffer, engine=engine) self.typedtree = asttyped_rewriter.visit(self.parsetree) self.globals = asttyped_rewriter.globals inferencer.visit(self.typedtree)