1.5 Esquema de traducción
Un esquema de traducción es una gramática independiente de contexto en la que se asocian atributos con los símbolos gramaticales y se insertan acciones semánticas encerradas entre llaves { } dentro de los lados derechos de las producciones. Los esquemas de traducción pueden tener tantos atributos sintetizados como heredados.
Cuando se diseña un esquema de traducción, se deben respetar algunas limitaciones para asegurarse de que el valor de un atributo esté disponible cuando una acción se refiera a él. Estas limitaciones, motivadas por las definiciones con atributos por la izquierda, garantizan que las acciones no hagan referencia a un atributo que aún no haya sido calculado. El ejemplo más sencillo ocurre cuando sólo se necesitan atributos sintetizados, en este caso, se puede construir el esquema de traducción creando una acción que conste de una asignación para cada regla semántica y colocando esta acción al final del lado derecho de la producción asociada.
El siguiente esquema de traducción recibe como entrada una expresión en infijo y produce como salida su traducción a postfijo para expresiones aritméticas con sólo restas de números:
Traducción descendente
Se trabaja con esquema de traducción en lugar de hacerlo con definiciones dirigidas por sintaxis, así que se puede ser explícito en cuanto al orden en que tienen que lugar las acciones y las evaluaciones de los atributos.
Eliminacion de la recursividad izquierda de un esquema de traducción
Como la mayoría de los operadores aritméticos son asociativos por la izquierda, es natural
utilizar gramáticas recursivas por la izquierda para las expresiones. La transformación se aplica a
esquemas de traducción con atributos sintetizados.
Para el análisis sintáctico descendente, se supone que una acción se ejecuta en el mismo
momento en que se expandiría un símbolo en la misma posición. Un atributo heredado de un símbolo
debe ser calculado por una acción que aparezca antes que el símbolo, y un atributo sintetizado del no
terminal de la izquierda se debe calcular después de que hayan sido calculados todos los atributos de los
que depende.
Observe que, en general, para poder aplicar un esquema de traducción hay que construir el árbol sintáctico y después aplicar las acciones empotradas en las reglas en el orden de recorrido primero-profundo. Por supuesto, si la gramática es ambigua una frase podría tener dos árboles y la ejecución de las acciones para ellos podría dar lugar a diferentes resultados. Si se quiere evitar la multiplicidad de resultados (interpretaciones semánticas) es necesario precisar de qué árbol sintáctico concreto se está hablando.
Investigador por Carlos Daniel Martinez Diaz
Referencia:
Alfred V. Aho, Ravi Sethi : At&T Bell Laboratories. Murray Hill, New Jersey, Jeffrey D. Ullman : Stanford University,Compiladores, principios, técnicas y herramientas, Ed. Addison Wesle Longman, Esquemas de traducción 38,39,40. 1990, 803 Páginas, Colaborador: Aoshi Shinomori
Investigador por Carlos Daniel Martinez Diaz
Referencia:
Alfred V. Aho, Ravi Sethi : At&T Bell Laboratories. Murray Hill, New Jersey, Jeffrey D. Ullman : Stanford University,Compiladores, principios, técnicas y herramientas, Ed. Addison Wesle Longman, Esquemas de traducción 38,39,40. 1990, 803 Páginas, Colaborador: Aoshi Shinomori
No hay comentarios.:
Publicar un comentario