Escolar Documentos
Profissional Documentos
Cultura Documentos
de Ciudad Victoria
Educacin a Distancia
LENGUAJES Y
AUTOMATAS 2
2015
RESUMEN UNIDAD 1
ASESOR:
Ing. Miguel ngel Macas
Garca
ANLISIS SEMNTICO.
Se compone de un conjunto de rutinas independientes, llamadas por los analizadores
morfolgico y sintctico.El anlisis semntico utiliza como entrada el rbol sintctico
detectado por el anlisis sintctico para comprobar restricciones de tipo y otras
limitaciones semnticas y preparar la generacin de cdigo.En compiladores de un solo
paso, las llamadas a las rutinas semnticas se realizan directamente desde el analizador
sintctico y son dichas rutinas las que llaman al generador de cdigo. El instrumento
ms utilizado para conseguirlo es la gramtica de atributos.En compiladores de dos o
ms pasos, el anlisis semntico se realiza independientemente de la generacin de
cdigo, pasndose informacin a travs de un archivo intermedio, que normalmente
contiene informacin sobre el rbol sintctico en forma lineal, para facilitar su manejo y
hacer posible su almacenamiento en memoria auxiliar.Las rutinas semnticas suelen
hacer uso de una pila (pila semntica) que contiene la informacin semntica asociada a
los operandos en forma de registros semnticos.
FUNCIONAMIENTO.
Recibe como entrada el rbol de derivacin del programa aade al rbol de derivacin
una serie de anotaciones, que permiten determinar la correccin semntica del
programa y preparar la generacin de cdigo La salida que genera es un rbol de
derivacin con anotaciones semnticas.
FUNCIONES PRINCIPALES.
Identificar cada tipo de instruccin y sus componentes
Completar la Tabla de Smbolos
Realizar distintas comprobaciones y validaciones:
Comprobaciones de tipos.
Comprobaciones de unicidad.
Comprobaciones de emparejamiento.
RBOLES DE EXPRESIN.
Regla 1:
Existe un orden de prioridad para los operadores, que de menor a mayor es el siguiente:
suma (+) y resta (-), multiplicacin (*) y divisin (/), exponenciacin (^), operadores
unarios. El parntesis izquierdo lo trataremos como un operador (aunque no lo es) cuyo
orden de prioridad es el mayor de todos cuando se quiera apilar y el menor de todos
cuando est en la cima de la pila.
Cuando se intente apilar algn operador se har lo siguiente: si es un operador unario
entonces se apila, si es un operador binario, se comparar su prioridad con el ltimo
insertado en la pila (el de la cima), si su prioridad es mayor, entonces se apilar. Si
Regla 2.
Si el nodo corresponde a un operando, entonces se apila. Si el nodo corresponde a una
operador unario entonces se desapilan un nodo de la pila de nodos y es enlazado a la
rama izquierda del nodo correspondiente al operador unario y este ltimo es apilado. Si
el nodo corresponde a un operador binario entonces dos nodos son desapilados de la
pila de nodos, el primero es enlazado a la rama derecha del nodo binario y el segundo a
la rama izquierda, nuevamente este nodo es apilado.
En el siguiente ejemplo se usa la misma expresin infija anterior (2^sen(y+x) ln (x))
para ilustrar el procedimiento para construir el rbol:
Recorrido en preorden
En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por
pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata
el subrbol izquierdo y cuando se haya concluido, el subrbol derecho. Otra forma para
entender el recorrido con este mtodo seria seguir el orden: nodo raz, nodo izquierda,
nodo derecha.
Ejemplo de rbol con etiquetas: el nodo 2 tiene el operador + como etiqueta y sus hijos
izquierdo y derecho representan las expresiones a y b. por tanto, n2 representa (a)+(b) o
Acciones semnticas
Dependiendo del tipo de sentencias, las accionessemnticas pueden agruparse en:
Sentencias de Declaracin: completar la seccin de tipos de la Tabla de Smbolos.
Sentencias ejecutables: realizar comprobaciones detipos entre los operandos
implicados.
Funciones y procedimientos: comprobar el nmero, orden y tipo de los parmetros
actuales en cada llamadaa una funcin o procedimiento.
Identificacin de variables: comprobar si identificador ha sido declarado antes de
utilizarlo.
Etiquetas: comprobar si hay etiquetas repetidas y validacin.
Constantes: comprobar que no se utilicen en la parte izquierda de una asignacin.
Conversiones y equivalencias de tipo: verificacin.
Sobrecarga de operadores y funciones: detectar ysolventar.
TIPOS
Qu es un tipo?
La nocin vara de lenguaje a lenguaje.
Consenso
Un conjunto de valores
TIPOS Y OPERACIONES
Ciertas Operaciones son legales para cada tipo
No tiene sentido sumar un apuntador a funcin y un entero en C
Tiene sentido sumar dos enteros
Pero ambos tienen la misma implementacin en lenguaje ensamblador!
Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar
ciertas operaciones de programacin. Estas estructuras pueden implementarse
mediante arrays o listas enlazadas.
Pila: coleccin de datos a los cuales se les puede acceder mediante un extremo, que se
conoce generalmente como tope. Las pilas tienen dos operaciones bsicas:
Push (para introducir un elemento)
Pop (para extraer un elemento)
Sus caractersticas fundamentales es que al extraer se obtiene siempre el ltimo
elemento que acabe de insertarse. Por esta razn tambin se conoce como estructuras
de datos LIFO, una posible implementacin mediante listas enlazadas seria insertando y
extrayendo siempre por el principio de la lista. Las pilas se utilizan en muchas
aplicaciones que utilizamos con frecuencia. Las pilas y colas son estructuras de datos
que se utilizan generalmente para simplificar ciertas operaciones de programacin.
Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Un
analizador sintctico es un autmata de pila que reconoce la estructura de una cadena
de componentes lxicos. En general, el analizador sintctico inicializa el compilador y
para cada smbolo de entrada llama al analizador morfolgico y proporciona el siguiente
smbolo de entrada. Al decir pila semntica no se refiere a que hay varios tipos de pila,
hace referencia a que se debe programar nica y exclusivamente en un solo lenguaje,
es decir, no podemos mezclar cdigo de C++ con Visual Basic.
Ventajas
Los problemas de integracin entre los subsistemas son sumamente costosos y
muchos de ellos no se solucionan hasta que la programacin alcanza la fecha lmite
para la integracin total del sistema.
Se necesita una memoria auxiliar que nos permita guardar los datos para poder hacer
la comparacin.
Reglas semnticas
Son el conjunto de normas y especificaciones que definen al lenguaje de programacin y
estn dadas por la sintaxis del lenguaje, las reglas semnticas asignan un significado
lgico a ciertas expresiones definidas en la sintaxis del lenguaje.La evaluacin de las
reglas semnticas define los valores de los atributos en los nodos del rbol de anlisis
sintctico para la cadena de entrada. Una regla semntica tambin puede tener efectos
colaterales, por ejemplo, imprimir un valor o actualizar una variable global.
Compatibilidad de tipos
Durante la fase de anlisis semntico, el compilador debe verificar que los tipos y
valores asociados a los objetos de un programa se utilizan de acuerdo con la
especificacin del lenguaje. Adems debe detectar conversiones implcitas de tipos para
efectuarlas o insertar el cdigo apropiado para efectuarlas as como almacenar
informacin relativa a los tipos de los objetos y aplicar las reglas de verificacin de tipos.
Analizadores descendentes:
Parten del axioma inicial de la gramtica, se va descendiendo utilizando las derivaciones
izquierdas, hasta llegar a construir la cadena analizada. Se va construyendo el rbol
desde sus nodos terminales. Es decir, se construye desde los smbolos de cadena hasta
llegar al axioma de la gramtica.
Bottom up
Es un principio de muchos aos del estilo de programacin que los elementos
funcionales de un programa no deben ser demasiado grandes. Si un cierto componente
de un programa crece ms all de la etapa donde est fcilmente comprensible, se
convierte en una masa de la complejidad que encubre errores tan fcilmente como una
ciudad grande encubre a fugitivos.
Top-down
Este mtodo consiste
en
problemas
subproblemas
ms
una
ms
en
dividir
solucin
los
una
expresin.
ESQUEMA DE TRADUCCIN
Traduccin descendente
Se trabaja con esquema de traduccin en lugar de hacerlo con definiciones dirigidas por
sintaxis, as que se puede ser explcito en cuanto al orden en que tienen que lugar las
acciones y las evaluaciones de los atributos.
Eliminacin de la recursividad izquierda de un esquema de traduccin
Como la mayora de los operadores aritmticos son asociativos por la izquierda, es
natural utilizar gramticas recursivas por la izquierda para las expresiones. La
transformacin se aplica a esquemas de traduccin con atributos sintetizados. Para el
anlisis sintctico descendente, se supone que una accin se ejecuta en el mismo
momento en que se expandira un smbolo en la misma posicin. Un atributo heredado
de un smbolo debe ser calculado por una accin que aparezca antes que el smbolo, y
un atributo sintetizado del no terminal de la izquierda se debe calcular despus de que
hayan sido calculados todos los atributos de los que depende.
Una de las estructuras de datos que se encuentran relacionadas con las fases del
proceso de compilacin es la tabla de smbolos, la cual tiene como propsito registrar
informacin que se comparte entre varias etapas y que permite administrar los recursos
asociados a las entidades que manipular el programa.
La tabla de smbolos tiene tpicamente la siguiente estructura:
Una tabla de smbolos puede conceptualizarse como una serie de renglones, cada uno
de los cuales contiene una lista de valores de atributos que son asociados con una
variable en particular. Las clases de los atributos que aparecen en una tabla de smbolos
dependen en algn grado de la naturaleza del lenguaje de programacin para el cual se
escribe el compilador.
Por ejemplo, un lenguaje puede ser sin tipos, y por lo tanto el atributo tipo no necesita
aparecer en la tabla. Similarmente, la organizacin de la tabla de smbolos variar
dependiendo de las limitaciones de memoria y tiempo de acceso.
REFERENCIAS
http://arantxa.ii.uam.es/~epulido/procesadores/semantico1.pdf
http://informatica.isipedia.com/primero/automatas-gramaticas-y-lenguajes/05-analisissemantico
http://biblioteca.uns.edu.pe/saladocentes/archivoz/publicacionez/sesion_iii_3u___analisis
_semantico.pdf
https://jesyib.wordpress.com/category/consultas/
https://sites.google.com/site/iscmendezportafolio/arboles-de-expresion
http://www.utm.mx/~jahdezp/archivos%20estructuras/arboles%20con
%20expresiones.pdf
https://es.scribd.com/doc/128330225/1-2-Acciones-semanticas
https://es.scribd.com/doc/219732692/Lenguajes-y-Automatas-II-Unidad-I-Sem-2-20131#download
http://itpn.mx/recursosisc/7semestre/leguajesyautomatas2/Unidad%20I.pdf
http://dsc.itmorelia.edu.mx/~jcolivares/courses/ps207a/ps2_u5.pdf
http://revistas.udistrital.edu.co/ojs/index.php/visele/article/view/246/356