5.intermediate Code Generation
5.intermediate Code Generation
class Exp:
self.pos = pos
self.op = op
k = []
left = ""
right = ""
def findopr(expr):
global k, j
for op in operators:
if char == op:
k.append(Exp(idx, op))
global left
w = ""
flag = 0
x -= 1
while x >= 0 and expr[x] not in "+-*/=:": # Consider '=' as stop point
w = expr[x] + w
expr[x] = "$"
flag = 1
x -= 1
left = w
global right
w = ""
flag = 0
x += 1
w += expr[x]
expr[x] = "$"
flag = 1
x += 1
right = w
def explore(expr):
global i, tmpch, no
fleft(expr, k[i].pos)
fright(expr, k[i].pos)
expr[k[i].pos] = chr(tmpch)
tmpch -= 1
i += 1
fright(expr, -1)
if no == 0 and k:
fleft(expr, len(expr))
sys.exit(0)
if k:
def main():
findopr(expr)
explore(expr)
if __name__ == "__main__":
main()
Z := d / e
Y := b * c
X := f * g
W := a + Y
V := Z + X
U := W - V
T := U - h
T := $