forked from Xnartharax/CSE302Compilers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
43 lines (38 loc) · 1.1 KB
/
Copy pathmain.py
File metadata and controls
43 lines (38 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import sys
import os
import time
from lib.asmgen import AsmGen
from lib.parser import parser
from lib.checker import SyntaxChecker, TypeChecker
from lib.tmm import TMM
from lib.cfg import CFGAnalyzer
from lib.tac import pretty_print
from lib.compile import compile
if __name__ == "__main__":
sourcefile = sys.argv[1]
# sourcefile= "examples/bigcondition2.bx"
with open(sourcefile) as fp:
source = fp.read()
optim = 0
for i in range(7):
if f"-O{i}" in sys.argv:
optim = i
asm = compile(source, optim=optim)
if "--nolink" in sys.argv:
print(asm)
else:
if "-o" in sys.argv:
i = sys.argv.index("-o")
output = sys.argv[i + 1]
else:
output = "./out"
# output = "examples/bigcond2_opt"
fp = open(f"{output}.S", "w")
fp.write(asm)
fp.close()
os.system(f"gcc -o {output}.o {output}.S bx_runtime.c")
if "--run" in sys.argv:
os.system(f"{output}.o")
time.sleep(0.1)
os.system(f"rm {output}.S")
os.system(f"rm {output}.o")