Você está na página 1de 15

INTRODUCCION

En esta investigacin entenderemos que el anlisis semntico no es ms que la salida de


un resultado, estos debes ser correcto ya que este anlisis detecta los errores que pueda
contener el programa.
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, comprobar que el significado do lo
que se va leyendo es vlido.
Podremos apreciar en cada fase del proceso de compilacin se pueden encontrar errores
pero el anlisis semntico detecta el error, la fase puede tratar el error, de manera que el
compilador pueda continuar, permitiendo as que se puedan detectar errores posteriores.
Un compilador que se detenga cuando encuentre el primer error no es muy eficaz.

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.

1.1 ARBOLES DE EXPRESIONES


Los rboles de expresiones representan el cdigo de nivel del lenguaje en forma de
datos. Los datos se almacenan en una estructura con forma de rbol. Cada nodo del
rbol de expresin representa una expresin, por ejemplo, una llamada al mtodo o una
operacin binaria, como x < y.

Un rbol de expresin sirve para evaluar expresiones del tipo: (a + b)*c/d.


Para que un rbol represente una expresin se deben tomar en cuenta 2 caractersticas
muy importantes:
ANLISIS SEMANTICO

Cualquier hoja est etiquetada slo con un operando.


Cualquier nodo interior n est etiquetado por un operador.

Al introducir la expresin debemos de tomar en cuenta las siguientes caractersticas:


La raz siempre debe ser un operador.
Las hojas siempre deben ser operandos.
Los nodos deben estar etiquetados por operadores.
Si un operador tiene mayor prioridad que la raz se coloca como hijo.
Si un operador tiene igual o menor prioridad que un nodo se coloca como padre.
Un nodo puede contener como hijo otro subrbol que contiene una pequea expresin.
En los rboles de expresin, la sucesin del preorden de etiquetas nos da lo que se
conoce como la forma prefijo de una expresin
Anlogamente, la sucesin postorden de las etiquetas de un rbol expresin nos da lo
que se conoce como la representacin postfijo de una expresin
Finalmente, el inorden de una expresin en un rbol de expresin nos da la expresin
infijo en s misma, pero sin parntesis
Construccin de un rbol de expresin
Algoritmo
Mientras carcter diferente de nulo
Leer carcter de la lista
Si es parntesis pasar al siguiente carcter
Crear un nodo nuevo que contenga ese carcter Operando

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.

1.2 ACCIONES SEMNTICAS DE UN ANALIZADOR SINTCTICO


Dependiendo del tipo de sentencias, las acciones semnticas pueden agruparse en:

Sentencias de Declaracin: completar la seccin de tipos de la Tabla de


Smbolos.
Sentencias ejecutables: realizar comprobaciones de tipos entre los operandos
implicados.
Funciones y procedimientos: comprobar el nmero, orden y tipo de los
parmetros actuales en cada llamada a 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 y solventar.
ANLISIS SEMANTICO

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

recupere y siga buscando errores. Por lo tanto el manejador de errores de un analizador


sintctico tiene como objetivos:
Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localizacin.
Recuperarse del error, para poder seguir examinando la entrada.
No ralentizar significativamente la compilacin
Tipo de gramtica que acepta un analizador sintctico
Nosotros nos centraremos en el anlisis sintctico para lenguajes basados en gramticas
formales, ya que de otra forma se hace muy difcil la comprensin del compilador, y se
pueden corregir, quizs ms fcilmente, errores de muy difcil localizacin, como es la
ambigedad en el reconocimiento de ciertas sentencias.
La gramtica que acepta el analizador sintctico es una gramtica de contexto libre:
Gramtica: G (N, T, P, S)
N = No terminales.
T = Terminales.
P = Reglas de Produccin.
S = Axioma Inicial.

1.3 COMPROBACIONES DE TIPOS EN EXPRESIONES


La labor de comprobacin de tipos consiste en conferir a las construcciones sintcticas
del lenguaje la semntica de tipificacin y en realizar todo tipo de comprobaciones de
dicha ndole. Por su naturaleza, sin embargo, sta se encuentra repartida entre la fase de
anlisis semntico y la generacin de cdigo intermedio.
Se dice que la comprobacin realizada por un compilador es esttica, mientras que la
comprobacin hecha al ejecutar el programa objeto se denomina dinmica. En
principio, cualquier verificacin se puede realizar dinmicamente, si el cdigo objeto
carga el tipo de un elemento con el valor de dicho elemento.
Un sistema de tipos seguro elimina la necesidad de comprobar dinmicamente errores
de tipos ya que permite determinar estticamente que dichos errores no pueden ocurrir
cuando se est ejecutando el programa objeto. Se dice que un lenguaje es fuertemente
tipificado si su compilador puede garantizar que los programas que acepte se ejecutarn
sin errores de tipo.
Comprobaciones estticas
Las comprobaciones estticas recogen el compendio de todas aquellas tareas de carcter
semntico que, por su naturaleza, pueden ser realizadas directamente durante la fase de
compilacin mediante el uso de los artefactos y mecanismos propios de dicha fase. Este
ANLISIS SEMANTICO

tipo de comprobaciones son beneficiosas puesto que confieren seguridad a la ejecucin


del programa.
Caractersticas:
-Diferente de la dinmica en runtime.
-Ejemplo: comprobacin de tipos, flujo de control, unicidad.
Comprobaciones dinmicas Las comprobaciones dinmicas son aquellas que no se
realizan durante la fase de compilacin y se delegan al momento de la ejecucin del
programa. Ello requiere generar cdigo ejecutable especficamente diseado para
realizar tales comprobaciones. Los lenguajes con una carga excesiva de comprobaciones
dinmicas generan programas ms largos, lentos e inseguros en ejecucin.
Verificacin de tipos
Comprueba la compatibilidad de tipos de todas las expresiones del cdigo fuente
recuperando la informacin durante la gestin de declaraciones. Adems se asegura de
que no existe en el programa ninguna referencia a ningn smbolo no declarado.
Hay situaciones en las cuales se tiene un valor de un tipo dado y se desea almacenar ese
valor en una variable de un tipo diferente.
En algunos tipos es posible almacenar simplemente el valor sin una conversin de tipos;
lo que se denomina conversin automtica.
A la conversin de tipos se le llama coercin o casting.
Inferencia de tipos
En lenguajes sin tipificacin de variables o con sobrecarga se aplican tareas de
inferencia de tipos en el nivel gramatical de las expresiones para resolver el tipo de
datos de la expresin resultante en funcin del contexto de evaluacin.
Esto slo es posible en algn lenguaje de programacin, si el compilador reconoce que
la variable destino tiene la suficiente precisin para contener el valor origen. En Java se
puede almacenar un valor byte en una variable int, dado que este tipo de datos es de
mayor precisin que el primero.
A esto se le llama ensanchamiento o promocin, dado que el tipo ms pequeo se
ensancha o promociona al tipo compatible ms grande. Si por el contrario, se desea
asignar un valor de variable int a una variable byte se necesita realizar una conversin
de tipos explcita.
En algunos casos se puede realizar la conversin pero se pueden perder datos, como por
ejemplo al pasar un valor flotante a un entero.
A esto se le llama estrechamiento, dado que se estrecha explcitamente el valor para que
quepa en el destino.

ANLISIS SEMANTICO

La conversin de un tipo se realiza poniendo delante un nombre de tipo entre parntesis,


por ejemplo, (tipo) valor.
Ejemplos de coercin: byte a; int b; a=(byte) b;
Comprobacin de Tipos
La comprobacin ayuda a evitar la mayora de los errores de programacin. Ejemplos
de comprobacin de tipos:
Para saber si el operador aplicado a los operadores es correcto.
Existen dos tipos de comprobacin: esttica y dinmica.
Un compilador debe informar de un error si se aplica un operador a un operando
incompatible, por ejemplo, si se suman una variable tipo matriz y una variable de
funcin.
2. Comprobaciones del flujo de control.
Las proposiciones que hacen que el flujo del control abandone una construccin deben
tener algn lugar a dnde transferir el flujo de control Por ejemplo, una proposicin
break en C hace que el control abandone la proposicin que la engloba, while, for o
switch ms cercana si dicha proposicin engloba dora no existe, ocurre un error.
3. Comprobacin de unicidad: definir un objeto una sola vez.
4. Comprobaciones relacionadas con nombres. En ocasiones, el mismo nombre debe
aparecer dos o ms veces en un mismo bloque de instrucciones, el compilador debe
comprobar que se utilice el mismo nombre en ambos sitios.
Comprobacin esttica Diferente de la dinmica (en runtime) Ejemplos
Comprobacin de tipos Incompatibilidad de operadores Flujo de control Exit Do,
break, halt, while, next
Unicidad Variables nicas en su mbito.
1.4 PILA SEMNTICA EN UN ANALIZADOR SINTCTICO
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.
ANLISIS SEMANTICO

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.
Objetivo terico
Es construir un rbol de anlisis sintctico, este raramente se construye como tal, sino
que las rutinas semnticas integradas van generando el rbol de Sintaxis abstracta. Se
especifica mediante una gramtica libre de contexto.
El anlisis semntico detecta la validez semntica de las sentencias aceptadas por el
analizador sintctico. El analizador semntico suele trabajar simultneamente al
analizador sintctico y en estrecha cooperacin. Se entiende por semntica como el
conjunto de reglas que especifican el significado de cualquier sentencia sintcticamente
correcta y escrita en un determinado lenguaje.
Las rutinas semnticas deben realizar la evaluacin de los atributos de las gramticas
siguiendo las reglas semnticas asociadas a cada produccin de la gramtica.
El anlisis sintctico es la fase en la que 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 entre s, etc.
En definitiva, comprobar que el significado de la que se va leyendo es vlido. La salida
terica de la fase de anlisis semntico sera un rbol semntico. Consiste en un rbol
sintctico en el que cada una de sus ramas ha adquirido el significado que debe tener.
Se compone de un conjunto de rutinas independientes, llamadas por los analizadores
morfolgico y sintctico. El anlisis semntico utiliza como entrada el rbol sintctico

ANLISIS SEMANTICO

detectado por el anlisis sintctico para comprobar restricciones de tipo y otras


limitaciones semnticas y preparar la generacin de cdigo.
Las rutinas semnticas suelen hacer uso de una pila que contiene la informacin
semntica asociada a los operadores en forma de registros semnticos.

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

Los fragmentos de cdigo as insertados se denominan acciones semnticas. Dichos


fragmentos actan, calculan y modifican los atributos asociados con los nodos del rbol
sintctico. El orden en que se evalan los fragmentos es el de un recorrido primeroprofundo del rbol de anlisis sintctico.
Obsrvese que, en general, para poder aplicar un esquema de traduccin hay que
construir el rbol sintctico y despus aplicar las acciones empotradas en las reglas en el
orden de recorrido primero-profundo. Por supuesto, si la gramtica es ambigua una frase
podra tener dos rboles y la ejecucin de las acciones para ellos podra dar lugar a
diferentes resultados. Si se quiere evitar la multiplicidad de resultados (interpretaciones
semnticas) es necesario precisar de qu rbol sintctico concreto se est hablando.
1.6 GENERACIN DE LA TABLA DE SMBOLO Y DE DIRECCIONES
Las tablas de smbolos (tambin llamadas tablas de identificadores y tablas de
nombres), realizan dos importantes funciones en el proceso de traduccin: verificar que
la semntica sea correcta y ayudar en la generacin apropiada de cdigo. Ambas
funciones se realizan insertando o recuperando desde la tabla de smbolos los atributos
de las variables usadas en el programa fuente. Estos atributos, tales como: el nombre,
tipo, direccin de almacenamiento y dimensin de una variable, usualmente se
encuentran explcitamente en las declaraciones o ms implcitamente a travs del
contexto en que aparecen los nombres de variables en el programa.
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.

1.7 MANEJO DE ERRORES SEMNTICOS

ANLISIS SEMANTICO

1
2

Es una de las misiones ms importantes de un compilador, aunque, al mismo tiempo, es


lo que ms dificulta su realizacin.
A veces unos errores ocultan otros. A veces un error provoca una avalancha de muchos
errores que se solucionan con el primero.
Es conveniente un buen manejo de errores, y que el compilador detecte todos los errores
que tiene el programa y no se pare en el primero que encuentre. Hay, pues, dos criterios
a seguir a la hora de manejar errores:
Pararse al detectar el primer error.
Detectar todos los errores de una pasada.
El anlisis semntico es posterior al sintctico y mucho ms difcil de formalizar que
ste. 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 entre s, etc. En definitiva, comprobar que el significado de lo que
se va leyendo es vlido.
La salida "terica" de la fase de anlisis semntico sera un rbol semntico. Consiste en
un rbol sintctico en el que cada una de sus ramas ha adquirido el significado que debe
tener. En el caso de los operadores polimrficos (un nico smbolo con varios
significados), el anlisis semntico determina cul es el aplicable.
Errores lxicos
Los errores lxicos se detectan cuando el analizador lxico intenta reconocer
componentes lxicos en el cdigo fuente.
Errores sintcticos
Un error de sintaxis se detecta cuando el analizador sintctico espera un smbolo que no
corresponde al que se acaba de leer. Los analizadores sintcticos LL y LR tienen la
ventaja de que pueden detectar errores sintcticos lo ms pronto posible, es decir, se
genera un mensaje de error en cuanto el smbolo analizado no sigue la secuencia de los
smbolos analizados hasta ese momento.
Error semntico
Los errores semnticos corresponden a la semntica del lenguaje de programacin, la
cual normalmente no est descrita por la gramtica. Los errores semnticos ms
comunes son la omisin de declaraciones.
Errores Lgicos
Los comete el programador
Ejemplo: una llamada infinitamente recursiva.

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

Você também pode gostar