Chapter 8: Intermediate Code Generation

Boolean expressions .

. Consider E E1 and M E 2

- if E 1 is false then E is also false so statements in E1 .falselist become part of E.falselist

- if E1 is true then E2 must be tested so target of E1 .truelist is beginning of E2

- target is obtained by marker M

- attribute M.quad records the number of the first statement of E2 .code

truelist and faliselist are synthesized attributes. if E 1is false then E is also false so statements in E1.falselist become part of E.falselist. And if E1 is true then E2 must be tested so target of E 1.truelist is beginning of E 2 . The target of E1 .truelist is obtained from the marker M with the help of M.quad which records the number ( position) of the first statement of E 2 .code because if E1 is true then the code flow will depend on E 2 .