martes, 12 de marzo de 2013

Analisis Semantico

Introduccion

Aqui les mostraremos un poco de lo que es la definicion de los siguientes conceptos en cuanto analisis semantico y los subtemas que veremos en la primera unidad de lenguajes y automatas 2
el objetivo de esta unidad es definir, diseñar, construir y programarlas fases de el analizador lexico y sintactico de un traductoro compilador.

Analisis Semantico

¿Que es un analisis semantico?
bueno se refiere a los aspectos del significado, sentido o interpretacion de el mismo de un determinado elemento, simbolo, palabra, expresion o representacion formal

determina el tipo de resulados 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 valido.
el resultado de la fase de analisis semantico viene siendo lo que se conoce como "arbol semantico"

Arbol De Expresiones o Arbol Semántico

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



ACCIONES SEMÁNTICAS

Dependiendo del tipo de sentencias, las acciones semánticas pueden agruparse en: Sentencias de Declaración: Completar la sección de tipos de la Tabla de
Símbolos.
Sentencias “ejecutables”: Realizar comprobaciones de tipos entre los operandos
implicados.
Funciones y procedimientos: Comprobar el número, orden y tipo de los
parámetros actuales en cada llamada a una función o procedimiento.
Identificación de variables: Comprobar si un identificador ha sido declarado
antes de utilizarlo.
Etiquetas: Comprobar si hay etiquetas repetidas y validación.
Constantes: Comprobar que no se utilicen en la parte izquierda de una asignación.
Conversiones y equivalencias de tipo: Verificación.
Sobrecarga de operadores y funciones: Detectar y solventar.

Comprobación de tipo en expresiones

E à literal         {E.tipo = char}
E à num           {E.tipo = entero}
E à id              {E.tipo = Consultar_TS(id.entrada)}
E à id  [E1]      {id.tipo = Consultar_TS(id.entrada)}

Pila semantica en un analizador sintactico 

Como podemos entender un analizador sintactico ascendente utiliza durante el análisis una pila. En esta va guardando datos que le permiten ir haciendo las operaciones de reducción que necesita.
Para incorporar acciones semánticas como lo es construir el árbol sintáctico, es necesario incorporar a la pila del analizador sintactico ascendente otra columna que guarde los atributos de los símbolos que se van analizando.

Generacion de tablas de simbolos y de direcciones

También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones
principales:
- Efectuar chequeos semánticos.
- Generación de código.
Permanece sólo en tiempo de compilación, no de ejecución, excepto en aquellos casos en
que se compila con opciones de depuración.
La tabla almacena la información que en cada momento se necesita sobre las variables del
programa, información tal como: nombre, tipo, dirección de localización, tamaño, etc.
 


















Manejo de errores semanticos

Los errores semánticos son más sutiles. Un error semántico se produce cuando la sintáxis del código es correcta, pero la semántica o significado no es el que se pretendía. La construcción obedece las reglas del lenguaje, y por ello el compilador o intérprete no detectan los errores semánticos. Los compiladores e intérpretes sólo se ocupan de la estructura del código que se escribe, y no de su significado. Un error semántico 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-un-analizador.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_sesion16_2008-1.pdf
http://progsistemasf7.blogspot.mx/2010/10/57-manejo-de-errores-semanticos_9697.html
http://www.lsi.uned.es/procleng/apuntes/2010-2011/PDL.11.Tema7.AnalisisSemantico.ComprobacionDeTipos.pdf
http://www.slideshare.net/pepgonzalez/analisis-semantico