When we encounter declarations, we need to lay out storage for the declared variables.
For every local name in a procedure, we create a ST(Symbol Table) entry containing:
- The type of the name
- How much storage the name requires
The production:
1. D → integer, id
2. D → real, id
3. D → D1, id
A suitable transition scheme for declarations would be:
Production rule | Semantic action |
D → integer, id | ENTER (id.PLACE, integer) D.ATTR = integer |
D → real, id | ENTER (id.PLACE, real) D.ATTR = real |
D → D1, id | ENTER (id.PLACE, D1.ATTR) D.ATTR = D1.ATTR |
ENTER is used to make the entry into symbol table and ATTR is used to trace the data type.