Spaces:
Running
Running
File size: 828 Bytes
5c54be1 51fe3fc 5c54be1 51fe3fc 5c54be1 51fe3fc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class GeneradorIntermedio:
def generar(self, ast):
codigo = []
temp_count = 0
def nueva_temp():
nonlocal temp_count
temp = f"t{temp_count}"
temp_count += 1
return temp
for nodo in ast:
if nodo["type"] == "assign":
temp = nueva_temp()
codigo.append(f"{temp} = {nodo['value']['value']}")
codigo.append(f"{nodo['var']} = {temp}")
elif nodo["type"] == "function":
if nodo["arg"] is not None:
temp = nueva_temp()
codigo.append(f"PARAM {nodo['arg']['value']}")
codigo.append(f"CALL {nodo['name']}")
else:
codigo.append(f"CALL {nodo['name']}")
return codigo |