

Recuerde que el orden en que se evalúan los fragmentos de código es el de un recorrido primero-profundo del árbol de análisis sintáctico. Mas específicamente, considerando a las acciones como hijos-hoja del nodo, el recorrido que realiza un esquema de traducción es:
1 sub esquema_de_traduccion {
2 my $node = shift;
3
4 for my $child ($node->children) { # de izquierda a derecha
5 if ($child->isa('ACTION') {
6 $child->execute;
7 }
8 else { esquema_de_traduccion($child) }
9 }
10 }
Obsérvese que, como el bucle de la línea 4 recorre a los hijos de izquierda a derecha, se debe dar la siguiente condición para que un esquema de traducción funcione:
Para cualquier regla de producción aumentada con acciones, de la forma
{ action($A{b}, $X{c} X{d})}
debe ocurrir que los atributos evaluados en
la acción insertada después de
dependan de atributos y variables que fueron computadas durante
la visita de los hermanos izquierdos o de sus ancestros.
En particular no deberían depender de atributos asociados
con las variables
. Ello no significa que
no sea correcto evaluar atributos de
en esa acción.

