Vous êtes sur la page 1sur 7

Anlisis Semntico

Introduccin
Aqu les mostraremos un poco de lo que es la definicin de los siguientes
conceptos en cuanto anlisis semntico y los subtemas que veremos en la
primera unidad de lenguajes y autmatas 2
El objetivo de esta unidad es definir, disear, construir y programarlas fases
del analizador lxico y sintctico de un traductor o compilador.
Anlisis Semntico
Qu es un anlisis semntico?
bueno se refiere a los aspectos del significado, sentido o interpretacin de el
mismo de un determinado elemento, smbolo, palabra, expresin o
representacin formal
determina el tipo de resultados intermedios y que si los argumentos que
tiene un operador pertenece al conjunto de los operadores posibles.
revisa si el significado de lo que se va leyendo es vlido.
el resultado de la fase de anlisis semntico viene siendo lo que se conoce
como "rbol semntico"

rbol De Expresiones o rbol Semntico


Es una estructura jerrquica en la cual se registran las operaciones que
realiza el programa fuente, en cada una de las ramas del rbol se registra el
valor o significado que este debe tener y el anlisis analiza cul de los valores
registrado en las ramas es aplicable

ACCIONES SEMNTICAS
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 un 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.
Comprobacin de tipo en expresiones

E literal
E num
E id
E id [E1]

{E.tipo = char}
{E.tipo = entero}
{E.tipo = Consultar_TS(id.entrada)}
{id.tipo = Consultar_TS(id.entrada)}

Pila semantica en un analizador sintactico


Como podemos entender un analizador sintctico 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 analizador sintctico ascendente otra
columna que guarde los atributos de los smbolos que se van analizando.
Generacin de tablas de smbolos y de direcciones
Tambin se la llama tabla de nombres o tabla de identificadores y tiene dos
funciones
principales:
- Efectuar chequeos semnticos.
- Generacin de cdigo.
Permanece slo en tiempo de compilacin, no de ejecucin, excepto en
aquellos casos en
que se compila con opciones de depuracin.
La tabla almacena la informacin que en cada momento se necesita sobre las
variables del
programa, informacin tal como: nombre, tipo, direccin de localizacin,
tamao, etc.

Manejo de errores semnticos


Los errores semnticos son ms sutiles. Un error semntico se produce
cuando la sintxis del cdigo es correcta, pero la semntica o significado no
es el que se pretenda. La construccin obedece las reglas del lenguaje, y por
ello el compilador o intrprete no detectan los errores semnticos. Los

compiladores e intrpretes slo se ocupan de la estructura del cdigo que se


escribe, y no de su significado. Un error semntico puede hacer que el
programa termine de forma anormal, con o sin un mensaje de error.

Bibliografia

http://progsistemasf7.blogspot.mx/2010/10/pila-semantica-en-unanalizador.html
http://www.lcc.uma.es/~galvez/ftp/tci/tictema5.pdf
http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:compi:comp_s
esion16_2008-1.pdf
http://progsistemasf7.blogspot.mx/2010/10/57-manejo-de-erroressemanticos_9697.html
http://www.lsi.uned.es/procleng/apuntes/20102011/PDL.11.Tema7.AnalisisSemantico.ComprobacionDeTipos.pdf
http://www.slideshare.net/pepgonzalez/analisis-semantico

MANEJO DE ERRORES:
UNIDAD VII.-Manejo de errores.
7.1.-Funcin de manejo de errores.
Los errores encontrados en las distintas fases de anlisis se envan a un mdulo
denominado manejo de errores. En el caso ms sencillo puede ser un
subprograma al que se le invoca envindole el cdigo de error, y que se encarga
de escribir un mensaje con el error correspondiente, y el nmero de lnea donde
se ha producido, as como de cortar el proceso de traduccin. Si se desea
construir un tratamiento de errores ms completo, por ejemplo detectando todos

los errores del programa fuente, el mdulo se complica dado que los analizadores
deben proseguir su trabajo con falta de datos.
7.2.- Errores lxicos.
Los errores lxicos se detectan cuando el analizador lxico intenta reconocer
componentes lxicos y la cadena de caracteres de la entrada no encaja con
ningn patrn. Son situaciones en las que usa un carcter invlido (@, $,",>,...),
que no pertenece al vocabulario del lenguaje de programacin, al escribir mal un
identificador, palabra reservada u operador.
Algunos de los errores lxicos tpicos son:
Nombre ilegales de identificadores: un nombre contiene caracteres invlidos.
Nmeros incorrectos: un nmero contiene caracteres invlidos o no est
formado correctamente.
Errores en palabras reservadas: caracteres omitidos, adicionales o cambiados
de sitio.
Fin de archivo: se detecta un fin de archivo a la mitad de un componente lxico.
Los errores lxicos se deben a descuidos del programador. En general, la
recuperacin de errores lxicos es sencilla y siempre se traduce en la generacin
de un error de sintaxis que sera detectado ms tarde por el analizador sintctico
cuando el analizador lxico devuelve un componente lxico que el analizador
sintctico no espera en esa posicin.
Los mtodos de recuperacin de errores lxicos se basan bien en saltarse
caracteres en la entrada hasta que un patrn se ha podido reconocer; o bien usar
otros mtodos ms sofisticados que incluyen la insercin, borrado, sustitucin de
un carcter en la entrada o intercambio de dos caracteres consecutivos.
7.3.- Errores sintcticos.
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 recupere y siga buscando errores. Por lo tanto el manejador de errores
de un analizador sintctico debe tener 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.
Existen varias formas de corregir errores sintcticos y as evitar todos los
problemas que generara un error no detectado en esta fase y cuando se
encuentra en fases ms avanzadas

Ignorar el problema (Panic mode): consiste en ignorar el resto de la entrada


hasta llegar a una condicin de seguridad.
Recuperacin a nivel de frase: intenta recuperar el error una vez descubierto.
Hay que tener cuidado con este mtodo, pues puede dar lugar a recuperaciones
infinitas.
Reglas de produccin adicionales para el control de errores: la gramtica se
puede aumentar con las reglas que reconocen los errores ms comunes.
Correccin global: dada una secuencia completa de tokens a ser reconocida, si
hay algn error por el que no se puede reconocer, consiste en encontrar la
secuencia completa ms parecida que s se pueda reconocer. Es decir, el
analizador sintctico le pide toda la secuencia de tokens al lxico, y lo que hace es
devolver lo ms parecido a la cadena de entrada pero sin errores, as como el
rbol que lo reconoce.
7.4.- Errores semnticos.
En cierto modo, este tipo de error es el ms difcil de depurar, ya que ni el
compilador ni el sistema proporcionan informacin sobre qu est fallando. Lo
nico cierto es que el programa no se est comportando como debera.
Un error semntico se produce cuando la sintaxis del cdigo es correcta, pero la
semntica o significado no es el que se pretenda. La construccin obedece las
reglas del lenguaje, y por ello el compilador o intrprete no detectan los errores
semnticos. Los compiladores e intrpretes slo se ocupan de la estructura del
cdigo que se escribe, y no de su significado.
Un error semntico puede hacer que el programa termine de forma anormal, con o
sin un mensaje de error. Hablando en trminos coloquiales, puede hacer que el
equipo se quede "colgado".
Sin embargo, no todos los errores semnticos se manifiestan de una forma tan
obvia. Un programa puede continuar en ejecucin despus de haberse producido
errores semnticos, pero su estado interno puede ser distinto del esperado.
Eventualmente, la consecuencia ser un resultado incorrecto. Estos errores se
denominan lgicos, ya que aunque el programa no se bloquea, la lgica que
representan contiene un error.
El primer paso para corregirlo es intentar encontrar una correspondencia entre el
cdigo del programa y el comportamiento que se observa. Quiz las variables no
contengan los datos correctos, o bien es posible que el programa siga un camino
distinto del pretendido.