Consider the following grammar (that admits a series of declarations, followed by expressions) and the associated syntax directed translation (SDT) actions, given as pseudo-code:
P→D∗ E∗
D→ int ID {record that ID.|exeme is of type int}
D→ bool ID {record that ID.|exeme is of type bool}
E→E1+E2 {check thatE1. type=int; set E.type:=int}
E→!E1 {check thatE1. type = bool; set E. type: = bool}
E→ID {set E.type: = int}
With respect to the above grammar, which one of the following choices is correct?