def check(file_name): """Realiza analisis semantico/sintactico y genera codigo ensamblador spark""" f = open(str(file_name)) data = f.read() with subscribe_errors(lambda msg: sys.stdout.write(msg + "\n")): program = parser.parse(data) check_program(program) f.close() outname = os.path.splitext(file_name)[0] + '.s' if program: import mpasgen outfile = open(outname, "w") mpasgen.generate(outfile, program) outfile.close()
paslex.run_lexer(data) else: parser = pasparser.make_parser() clear_errors() try: with subscribe_errors(lambda msg: sys.stdout.write(msg+"\n")): root_ast = parser.parse(data) check.check_program(root_ast); errors = errors_reported(); if errors == 0: if ("-ast" in sys.argv): # dump_class_tree(root_ast) dot = DotVisitor() dot.generic_visit(root_ast) print dot # Generate code outfile = open(outname, "w") mpasgen.generate(outfile, root_ast) outfile.close() else: sys.stderr.write("Number of errors: %d" % errors) except parseError as e: sys.stderr.write("Program couldn't be compiled\n") except IOError: sys.stderr.write("Error: The file does not exist") raise SystemExit(1) else: print "Please put the name of your pascal file at the end of the command" raise SystemExit(1)
import sys import os.path import mpasparse import mpasgen import semantic from errors import subscribe_errors, errors_reported if __name__ == '__main__': filename = sys.argv[1] outname = os.path.splitext(filename)[0] + ".s" parser = mpasparse.make_parser() with subscribe_errors(lambda msg: sys.stdout.write(msg+"\n")): program = parser.parse(open(sys.argv[1]).read()) # Revise el programa num_errors = semantic.check_program(program) # Si no ocurren errores, genere codigo if num_errors == 0: outf = open(outname,"w") mpasgen.generate(outf,program) outf.close() else: sys.stderr.write("Program couldn't be compiled\n")
import sys import os.path import mpasparse filename = sys.argv[1] outfile = os.path.splitext(filename)[0] + ".s" f = open(filename) data = f.read() f.close() import mpasparse top = mpasparse.parser.parse(data) if top: import mpasgen outf = open(outfile, "w") mpasgen.generate(outf, top) mpasgen.emit_program(outf, top) outf.close() if sys.argv[-1] == '-t': mpasparse.dump_tree(top)
# -*- coding: utf-8 -*- __author__ = 'CHRISTIAN PATINO' import sys import os.path filename = sys.argv[1] outfile = os.path.splitext(filename)[0] + ".s" #f = open(filename) #data = f.read() #f.close() import mpasparse top = mpasparse.analizar() if top: import mpasgen outf = open(outfile,"w") mpasgen.generate(outf,top) outf.close()
else: parser = pasparser.make_parser() clear_errors() try: with subscribe_errors( lambda msg: sys.stdout.write(msg + "\n")): root_ast = parser.parse(data) check.check_program(root_ast) errors = errors_reported() if errors == 0: if ("-ast" in sys.argv): # dump_class_tree(root_ast) dot = DotVisitor() dot.generic_visit(root_ast) print dot # Generate code outfile = open(outname, "w") mpasgen.generate(outfile, root_ast) outfile.close() else: sys.stderr.write("Number of errors: %d" % errors) except parseError as e: sys.stderr.write("Program couldn't be compiled\n") except IOError: sys.stderr.write("Error: The file does not exist") raise SystemExit(1) else: print "Please put the name of your pascal file at the end of the command" raise SystemExit(1)