Chapter 8: Intermediate Code Generation

Syntax directed translation of boolean expressions

E id1 relop id2

E.place := newtmp

emit(if id1.place relop id2.place goto nextstat+3)

emit(E.place = 0) emit(goto nextstat+2)

emit(E.place = 1)

E true

E.place := newtmp

emit(E.place = '1')

E false

E.place := newtmp

emit(E.place = '0')

In the above scheme, nextstat gives the index of the next three address code in the output sequence and emit increments nextstat after producing each three address statement.