Está en la página 1de 7

INSTITUTO TECNOLOGICO SUPERIOR DE

IRAPUATO

CARRERA
ING. SISTEMAS COMPUTACIONALES
MATERIA
LENGUAJES Y AUTÓMATAS II
TEMA
ANÁLISIS SEMÁNTICO
UNIDAD 1
ACTIVIDAD 8 (INVESTIGACIÓN):
INVESTIGAR QUÉ ES UN ESQUEMA DE TRADUCCIÓN Y
CÓMO SE HACEN
PRESENTA
RAMÍREZ LUNA JESSICA ELIZABETH
DOCENTE
JUAN CARLOS GONZALEZ CORDOBA

FEACHA ENTREGA
18/09/2020
INTRODUCCIÓN

Un traductor lee un programa fuente y produce un programa objeto con el mismo


significado que el programa fuente.
Puesto que un traductor toma un programa escrito en un cierto lenguaje fuente
(con una sintaxis) y lo convierte en otro programa escrito en otro lenguaje objeto
(con otra sintaxis diferente), un programa debe tener una propiedad independiente
de la sintaxis del lenguaje en el que este escrito. Un traductor debe mantener
invariante el significado del programa. El significado global de un programa se
suele definir a partir del significado, más elemental, de los objetos elementales
sintácticos y del significado de sus construcciones sintácticas. Es lo que llamamos
descripción semántica del lenguaje. Sin embargo, son pocos los lenguajes que
disponen actualmente de una definición precisa de semántica.
Aunque la semántica no sea necesaria en el análisis sintáctico, sí que es
imprescindible para realizar la traducción. Es decir, antes de realizar la traducción
de un lenguaje se debe tener muy claro el significado de sus objetos y estructuras
sintácticas.
Los esquemas de traducción ejecutan las rutinas semánticas de un modo
imperativo, el modo en el que se deriven las distintas producciones de la
gramática variará el orden de ejecución de las rutinas. De este modo, el diferenciar
si un esquema de traducción emplea un análisis descendente o ascendente es
fundamental para la ubicación de sus rutinas semánticas. Las limitaciones de los
esquemas de traducción basados en analizadores descendentes son los mismos
que los identificados para la evaluación descendente de gramáticas L-atribuidas
en una única pasada. Adicionalmente a estas limitaciones, hay que añadir que la
ubicación de las rutinas semánticas, dentro de la parte derecha de cada
producción, sea en los sitios oportunos. Las restricciones para ubicar las rutinas
son:
 Un atributo heredado para un símbolo en el lado derecho de una
producción se debe calcular antes que dicho símbolo.
 Una rutina semántica no debe utilizar atributos sintetizados de un símbolo
gramatical que esté a la derecha de ella.
 Un atributo sintetizado para el no terminal de la izquierda sólo se puede
calcular posteriormente a los atributos de los que depende. La rutina
semántica que calcula estos atributos se suele colocar al final del lado
derecho de la producción.
ESQUEMAS DE TRADUCCION
¿Qué es?
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.

¿Cómo se hace?
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. Las reglas semánticas van entre corchetes y se ubican en el
lugar de la regla en que queremos que se ejecuten. Los esquemas de traducción
pueden tener tanto atributos sintetizados como heredados.
Esquemas de traducción dirigidos por la sintaxis
Los esquemas de traducción dirigidos por la sintaxis son formalismos abstractos
de traducción de alto nivel por tanto adolecen de un mecanismo para indicar el
momento exacto en el que cada regla semántica debe ejecutarse. Una versión
computacional que soluciona este problema son los esquemas de traducción
dirigidos por la sintaxis.
Elementos de las traducciones dirigidas por la sintaxis

1. Gramática con atributos.


Como en las definiciones dirigidas por la sintaxis, los
esquemas de traducción también se construyen sobre
gramáticas atributos.
2. Acciones semánticas.
Las acciones semánticas se insertan entre los símbolos gramaticales de la
parte derecha de cada regla y, cuando se
visitan durante la construcción del árbol de análisis sintáctico, realizan las
traducciones semánticas pertinentes.

Atributos
Un atributo es un espacio de información con tipificación explícita que sirve para
albergar una característica propia del proceso de traducción y que puede ser
transferida a otras producciones gramaticales para que pueda ser utilizada desde
allí por sus reglas semánticas. Existen dos tipos de atributos:
1. Atributos sintetizados
Se dice que un atributo es sintetizado si su valor es
calculado exclusivamente a partir de atributos de
los símbolos gramaticales de la parte derecha de
sus reglas de producción. El carácter sintetizado de
un atributo se mantiene a lo largo de toda la gramática.
2. Atributos heredados
Se dice que un atributo es heredado si su valor es
calculado a partir de atributos de los símbolos
gramaticales de la regla de producción en que
aparece o los antecedentes de esta. El carácter
heredado de un atributo se mantiene a lo largo de
toda la gramática.
Acción semántica
Una acción semántica es un fragmento de código ejecutable, insertando en algún
punto de la parte derecha de una regla de producción, encargado de realizar cierta
lógica de traducción a partir de la información soportada por los atributos de los
símbolos
gramaticales de
dicha regla.

Cada acción El contenido de la Como en las DDS, las


semántica se inserta acción se expresa, acciones semánticas
en el lugar adecuado frecuentemente, en el frecuentemente
para que sea lenguaje de realizan operaciones
ejecutada en el programación anfitrión de manipulación de
momento preciso del compilador que se atributos, pero también
durante la está construyendo. puede llevar a cabo
construcción del árbol operaciones con
de análisis sintáctico. potenciales efectos
colaterales.
Diseño de traducciones dirigidas por la sintaxis
Antes de dar un procedimiento orientativo para la construcción de esquemas de
traducción dirigidos por la sintaxis es preciso conocer ciertas restricciones de
diseño de estos relacionadas con el lugar adecuado donde deben ubicarse las
acciones semánticas.
Si existen atributos sintetizados colocar la acción semántica después de todos los
símbolos implicados o al final de la producción.

Un atributo sintetizado no debe usarse antes de que aparezca el símbolo en la


parte derecha.

Si existen atributos heredados deben calcularse antes de que aparezca el símbolo


en la parte derecha.

Si existen acciones con efectos laterales deben situarse en el punto exacto de la


parte derecha de la regla en la que deberían evaluarse. Hay que verificar que no
utilizan atributos de símbolos situados a la derecha de dicho punto.
El diseño de esquemas de traducción dirigidas por la sintaxis es un ejercicio
complejo que requiere realizar cuidadosa y sistemáticamente. A continuación, se
muestra un procedimiento orientativo que puede ayudar a alcanzar más fácilmente
este objetivo:
1. Especificación gramatical. Construya la gramática sobre la cual desea
articular la traducción dirigida por la sintaxis. Asegúrese de que gramática
es correcta y no ambigua.
2. Selección de una frase representativa. Seleccione una frase del lenguaje.
Asegúrese de que es lo suficientemente compleja como para que implique
visitar al menos una vez cada regla gramatical.
3. Construcción del árbol de análisis. Construya el árbol de análisis
sintáctico asociado a dicha frase. Asegúrese de que existe al menos una
instancia a cada regla.
4. Selección de atributos. Defina los atributos que requiera su esquema de
traducción en cada símbolo gramatical y caracterícelos como sintetizados o
heredados. Esto último se puede postergar para final.
5. Grafo de dependencias. Dibuje el grafo de dependencia que debería
producirse para asegurarse que la información fluya adecuadamente.
Considere siempre un procesamiento descendente.
6. Especificación de la traducción. Escrita la traducción dirigida por la
sintaxis ubicando las acciones semánticas de acuerdo con las restricciones
de diseño preliminares.
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.
Eliminación 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 un 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 a 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 terminar de la izquierda se
debe calcular después de que haya sido calculados todos los atributos de los que
depende.
Un atributo heredado de un símbolo debe ser calculado por una acción que
aparezca antes que el símbolo, un atributo sintetizado del no terminal de la
izquierda se debe calcular después de que hayan sido todos los atributos de los
que depende.
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 fase podría tener dos árboles y 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.
BIBLIOGRAFÍA
Libros
Construcción de compiladores: principios y práctica. Kenneth C. Louden
International Thomson Editores, 2004 ISBN 970-686-299-4.
Compiladores: Principios, técnicas y herramientas. Segunda Edición Aho, Lam
Sethi, Ullman Addision – Wesley, Pearson Educación, México 2008.
Diseño de compiladores. A. Garrido, J. Iñesta, F. Moreno y J. Pérez. 2002. Edita
Universidad de Alicante
Jiménez Millán, J. A. (2014). Compiladores y procesadores de lenguajes. Cádiz,
Spain: Servicio de Publicaciones de la Universidad de Cádiz. Recuperado de
https://elibro.net/en/ereader/itesi-irapuato/33847?page=172.
Alfonseca Cubero, E. (2007). Teoría de autómatas y lenguajes formales. Madrid
etc., Spain: McGraw-Hill España. Recuperado de https://elibro.net/en/ereader/itesi-
irapuato/50119?page=1.

Web
José Domínguez Pérez. (2019). Herramientas de ayuda para compiladores.
16/09/2020, de Univerdidas Politecnica de Madrid Sitio web:
http://oa.upm.es/55766/1/TFG_JOSE_DOMINGUEZ_PEREZ.pdf

También podría gustarte