Escolar Documentos
Profissional Documentos
Cultura Documentos
ANLISIS SEMANTICO
ANLISIS SEMANTICO
En el anlisis semntico se detectan errores relacionados con la validez del
programa. Se puede decir que estos errores son de tipo sintctico-semntico, pero no
pueden ser detectados por el analizador sintctico, ya que se relacionan con
interdependencias entre las diferentes partes de un programa que no son reflejadas en un
anlisis gramatical. El analizador semntico recibe la informacin resultado del anlisis
sintctico que puede ser un rbol jerrquico con la informacin relativa a la
organizacin de los tokens en la instruccin que se est analizando.
Durante el anlisis semntico de un lenguaje de fuerte chequeo de tipos el rbol
sintctico debe ser modificado para reflejar el anlisis de los tipos de los datos. Note que
haciendo un chequeo de tipos la constante 7, al ser una constante entera debe ser
convertida a real para poder ser operada y las dems variables no tienen dificultad
alguna para ser utilizadas al ser todas reales.
El anlisis semntico se trata de determinar el tipo de los resultados intermedios,
comprobar que los argumentos que tiene un operador pertenecen al conjunto de los
operadores posibles, y si son compatibles ente si, etc. En definitiva, comprobar que el
significado do lo que se va leyendo es vlido.
El anlisis semntico se realiza posteriormente al sintctico y mucho ms difcil de
formalizar que ste.
La salida terica de la fase de anlisis semntico sera un rbol semntico.
ANLISIS SEMANTICO
Si el rbol est vaco hacer raz a nuevo, si no recorrer el rbol por la derecha hasta
llegar a un nodo con hojas, si la hoja izquierda, no est etiquetada colocar operando, si
no colocarlo en la hoja derecha.
Operador
Si la raz es un operando, insertar nuevo en ese nodo, y convertir el operando en el
hijo izquierdo, si no si hay un parntesis abierto insertar nuevo en la ltima hoja derecha
y colocar operando como hijo izquierdo.
Si el carcter anterior es parntesis izquierdo si el siguiente carcter es parntesis
derecho si solo hay un operador en el rbol nuevo se convierte en raz, si no se inserta
en el ltimo nodo derecho, y el nodo se convierte en hijo izquierdo.
Si no se cumple ninguna de las condiciones anteriores si la raz es de igual prioridad o
menor prioridad convertir la raz en el hijo izq. de nuevo si no la prioridad del nodo raz
es mayor al de nuevo insertar nuevo como hijo derecho y colocar el nodo reemplazado
como hijo izquierdo.
La verificacin de los tipos de datos se hace asignando el valor de tipo de cada una de
los componentes lxicos. Estos valores se comparan para verificar que los tipos de datos
coincidan y sean congruentes, de lo contrario no se pueden realizar los clculos.
Definicin de un analizador sintctico: es la fase del analizador que se encarga de
chequear el texto de entrada en base a una gramtica dada. Y en caso de que el
programa de entrada sea vlido, suministra el rbol sintctico que lo reconoce.
En teora, se supone que la salida del analizador sintctico es alguna representacin del
rbol sintctico que reconoce la secuencia de Token suministrada por el analizador
lxico.
En la prctica, el analizador sintctico tambin hace:
Acceder a la tabla de smbolos (para hacer parte del trabajo del analizador semntico).
Chequeo de tipos (del analizador semntico).
Generar cdigo intermedio.
Generar errores cuando se producen.
En definitiva, realiza casi todas las operaciones de la compilacin. Este mtodo de
trabajo da lugar a los mtodos de compilacin dirigidos por sintaxis.
Manejo de errores sintcticos
Los errores sintcticos son dados por una expresin aritmtica o parntesis no
equilibrados.
El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la
creacin de compiladores. Nos interesa que cuando el compilador encuentre un error, se
ANLISIS SEMANTICO
ANLISIS SEMANTICO
ANLISIS SEMANTICO
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 dividir los problemas en subproblemas ms sencillos para
conseguir una solucin ms rpida. El diseo descendente es un mtodo para resolver el
problema que posteriormente se traducir a un lenguaje compresible por la
computadora.
ANLISIS SEMANTICO
1
0
Un parser ascendente utiliza durante el anlisis una pila. En esta va guardando datos que
le permiten ir haciendo las operaciones de reduccin que necesita. Para incorporar
acciones semnticas como lo es construir el rbol sintctico, es necesario incorporar a la
pila del parser otra columna que guarde los atributos de los smbolos que se van
analizando. Estos atributos estaran ligados a la correspondiente produccin en la tabla
de parsing.
La pila juega un papel fundamental en el desarrollo de cualquier analizador semntico.
Dentro de cada elemento de la pila se guardan los valores que pueden tener una
expresin.
1.5 ESQUEMA DE TRADUCCIN
Un esquema de traduccin es una gramtica independiente de contexto en la que se
asocian atributos con los smbolos gramaticales y se insertan acciones semnticas
encerradas entre llaves { } dentro de los lados derechos de las producciones. Los
esquemas de traduccin pueden tener tantos atributos sintetizados como heredados.
Cuando se disea un esquema de traduccin, se deben respetar algunas limitaciones
para asegurarse de que el valor de un atributo est disponible cuando una accin 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 an no haya
sido calculado. El ejemplo ms sencillo ocurre cuando slo se necesitan atributos
sintetizados, en este caso, se puede construir el esquema de traduccin creando una
accin que conste de una asignacin para cada regla semntica y colocando esta accin
al final del lado derecho de la produccin asociada.
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.
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.
ANLISIS SEMANTICO
1
1
ANLISIS SEMANTICO
1
2
ANLISIS SEMANTICO
1
3
RESUMEN
Como bien pudimos ver que el analizador 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 ella se utiliza la estructura jerrquica determinada por la fase de anlisis sintctico
para identificar los operadores y operandos de expresiones y proposiciones.
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 linealizada para facilitar su manejo y hacer posible su almacenamiento en
memoria auxiliar.
ANLISIS SEMANTICO
1
4
BIBLIOGRAFIA:
http://www.slideshare.net/pepgonzalez/analisis-semantico
http://www.ecured.cu/index.php/Teor%C3%ADa_de_compiladores
http://itpn.mx/recursosisc/7semestre/leguajesyautomatas2/Unidad%20I.pdf
Obtenido de http://es.scribd.com/doc/128330225/1-2- Acciones-semantica
http://compiladoresasignatura.blogspot.mx/2011/05/unidad-vii-manejo-de-errores.html
ANLISIS SEMANTICO
1
5