示例#1
0
    def test_salida_precedence_4(self):
        warnings.filterwarnings("ignore")
        assembly_file = os.path.splitext("valid/precedence_4.c")[0] + ".s"
        with open("valid/precedence_4.c", 'r') as infile:
            archivo = infile.read().replace('\n', '').strip().replace(" ", "")

            tokens = lexer.lexing(archivo, [])
            arbol_prueba = parser.parsing(tokens, "valid/precedence_4.c")
            generar(arbol_prueba, assembly_file)
            os.system("gcc -m32 {} -o {}".format(assembly_file, "precedence"))
            os.system("gcc -w valid/precedence_4.c")
            prueba = os.popen("./precedence_4;echo $?").read()
            verdadero = os.popen("./a.out;echo $?").read()
            print(prueba, verdadero)
            self.assertEqual(prueba, verdadero)
示例#2
0
    # source_file = sys.argv[1]
    assembly_file = os.path.splitext(args.source_file)[0] + ".s"

    with open(args.source_file, 'r') as infile, open(assembly_file,
                                                     'w') as outfile:
        source = infile.read().replace('\n', '').strip().replace(" ", "")
        new_tokens = []
        vacio = []
        lexado = lexer.lexing(source, new_tokens)
        if args.ltokens:
            print("Tokens lexados: ")
            print(lexado)
        arbol = parser.parsing(new_tokens, args.source_file)
        if args.tree:
            arbol.printTree()
        generar(arbol, assembly_file)
        if args.assembly:
            print("Código Ensamblador")
            print(open(assembly_file).read())
        if args.name:
            os.system("gcc {} -o {}".format(assembly_file, args.name))
        else:
            os.system("gcc {} -o {}".format(
                assembly_file,
                args.source_file.split("/")[-1][:-2]))

# -O optimizador
# -t Impirmir Arbol AST
# -a asm
# -h ayuda
# -l lista de tokens