-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
36 lines (28 loc) · 688 Bytes
/
main.py
File metadata and controls
36 lines (28 loc) · 688 Bytes
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
import lexer
import parser
from code_generator import CodeGenerator
import sys
from sys import argv
if __name__ == '__main__':
filename = argv[1]
f = open(filename)
code = f.read()
# Building the lexer
lexer.lexer.input(code)
while True:
tok = lexer.lexer.token()
if not tok:
break
if lexer.num_errors > 0:
sys.exit()
# Preserve lines number
parser.num_lines = lexer.lexer.lineno - 1
# Building parser
result = parser.parser.parse(code, lexer.lexer, tracking = True)
if parser.num_errors > 0:
sys.exit()
# Code Generation
cg = CodeGenerator(result)
cg.generate()
with open(argv[2], "w") as f_out:
f_out.write(cg.mips_out)