Attribute grammars enable semantic evaluation on
attributed parse trees (i.e., parse trees along with the semantic
attributes for each node). Semantic evaluation consists of
assigning values to the attributes of each node, and it is driven
by the dependencies between attributes (see Figure 1b). An
attribute depends on those attributes that are required to
compute it (in Figure 1b it is indicated by arrows; notice that if