Práctica: Transformaciones en Los Árboles del Analizador PL0

Partimos del código realizado en la práctica Análisis de Ámbito en PL0 5.8.

Modifique el árbol generado por el código de esa práctica usando las transformaciones de constant folding o plegado de las constantes:



$ PLUS(NUM_1, NUM_2) \Longrightarrow NUM_3$ { $NUM_3{VAL} = $NUM_1{VAL} + $NUM_2{VAL} }

$ MINUS(NUM_1, NUM_2) \Longrightarrow NUM_3$ { $NUM_3{VAL} = $NUM_1{VAL} - $NUM_2{VAL} }

$ TIMES(NUM_1, NUM_2) \Longrightarrow NUM_3$ { $NUM_3{VAL} = $NUM_1{VAL} * $NUM_2{VAL} }

$ DIV(NUM_1, NUM_2) \Longrightarrow NUM_3$ { $NUM_3{VAL} = $NUM_1{VAL} / $NUM_2{VAL} }

etc.

Opcionalmente si lo desea puede considerar otras transformaciones:

$ TIMES(X, NUM_2)$ and { $NUM_2{VAL} = $ 2^s$ para algún $ s$ } $ \Longrightarrow SHIFTLEFT(X; NUM_3)$ { $NUM_3{VAL} = s }

Casiano Rodríguez León
2016-03-27