Está en la página 1de 6

Unidad I.

Análisis Semántico
Facilitador:Torres “ESQUEMAS DE TRADUCCIÓN”
Integrantes : Gonzalez Hernandez Jonathan
Ibarra Ivonne
Grupo: 7Z Gonzalez Alanis Hector Armando
Gonzalez Martinez Yonatan
Garcia Gurrola Leonel Enrique
Escamilla Valenzuela David Rene
Esquemas de Traducción

Un esquema de traducción es una gramática independiente del contexto en la cual se han insertado
fragmentos de código en las partes derechas de sus reglas de producción. Los fragmentos de código
así insertados se denominan acciones semánticas. Dichos fragmentos actúan, calculan y modifican
los atributos asociados con los nodos del árbol sintáctico. El orden en que se evalúan los fragmentos
es el de un recorrido primero-profundo del árbol de análisis sintáctico.

Obsérvese 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 que árbol sintáctico concreto se
está hablando.
PROCESO PARA GENERAR/USAR UN
ESQUEMA DE TRADUCCIÓN
• Un esquema de traducción dirigido por sintaxis se puede implementar construyendo
el árbol de análisis sintáctico y luego realizar un recorrido en preorden del árbol
ejecutando las acciones semánticas.
a) Construir el árbol de análisis sintáctico ignorando las acciones semánticas.
b) Adicionar nuevos hijos a cada símbolo de la parte izquierda como nuevos hijos que
contienen las acciones semánticas en el punto donde ellas se deben realizar
c) Recorrer en preorden el árbol de análisis sintáctico ejecutando las acciones.
EJEMPLO DE UN ESQUEMA DE TRADUCCIÓN

• GRAMÁTICA A USAR (DISPONIBLE)


• L E n { print(E.val); }
• E E1 + T { E.val = E1.val + T.val; }
• E T { E.val = T.val; }
• T T1 * F { T.val = T1.val x F.val; }
• T F { T.val = F.val; }
• F ( E ) { F.val = E.val; }
• F digit { F.val = digit.lexval; }
EJERCICIO
DESCRIPCIÓN
• EN BASE AL ESQUEMA DE TRADUCCIÓN ANTERIOR, Y BASADO EN ESAS REGLAS, ENCUENTRE
COMO SE GENERARA LA EXPRESIÓN • 3 * 5 + 4
ÁRBOL DE ANÁLISIS SINTÁCTICO
CONT. EJERCICIO ESQ. DE
TRADUCCIÓN
ÁRBOL CON ESQUEMA DE
REGLAS UTILIZADAS Y SU SECUENCIA TRADUCCIÓN
1. L E n
2. E { print (‘+’); } E1 + T
3. E T
4. T {print(*); } T1 * F
5. T F
6. F ( E )
7. F digit { print(digit.lexval); }

También podría gustarte