Home » Boolean expressions

Boolean expressions

by Online Tutorials Library

Boolean expressions

Boolean expressions have two primary purposes. They are used for computing the logical values. They are also used as conditional expression using if-then-else or while-do.

Consider the grammar

The relop is denoted by <, >, <, >.

The AND and OR are left associated. NOT has the higher precedence then AND and lastly OR.

Production rule Semantic actions
E → E1 OR E2 {E.place = newtemp();
Emit (E.place ‘:=’ E1.place ‘OR’ E2.place)
}
E → E1 + E2 {E.place = newtemp();
Emit (E.place ‘:=’ E1.place ‘AND’ E2.place)
}
E → NOT E1 {E.place = newtemp();
 Emit (E.place ‘:=’ ‘NOT’ E1.place)
}
E → (E1) {E.place = E1.place}
E → id relop id2 {E.place = newtemp();
 Emit (‘if’ id1.place relop.op id2.place ‘goto’
 nextstar + 3);
 EMIT (E.place ‘:=’ ‘0’)
 EMIT (‘goto’ nextstat + 2)
 EMIT (E.place ‘:=’ ‘1’)
}
E → TRUE {E.place := newtemp();
 Emit (E.place ‘:=’ ‘1’)
}
E → FALSE {E.place := newtemp();
 Emit (E.place ‘:=’ ‘0’)
}

The EMIT function is used to generate the three address code and the newtemp( ) function is used to generate the temporary variables.

The E → id relop id2 contains the next_state and it gives the index of next three address statements in the output sequence.

Here is the example which generates the three address code using the above translation scheme:

You may also like