Exemple #1
0
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()
Exemple #2
0
                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)
Exemple #3
0
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")
Exemple #4
0
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)
Exemple #5
0
# -*- 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()
Exemple #6
0
            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)