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
|