Chapter 8: Intermediate Code Generation

Control flow translation of boolean expression .

E not E 1 E 1 .true := E.false
  E 1 .false := E.true
  E.code := E1 .code
E (E 1 ) E 1 .true := E.true
  E1 .false := E.false
  E.code := E 1 .code
   

For an expression E of the form not E1, just interchange the true and false exits of E1 to get the true and false exits of E.

E -> not E1 E1.true := E.false

E1.false := E.true

E.code := E1.code

If E is a bracketed expression, it means the same as E1 and so E1.false and E1.true are set to E.false and E.true respectively.

E -> (E1) E1.true := E.true

E1.false := E.false

E.code := E1.code