jueves, 17 de octubre de 2013

Análisis Semántico

Tarea1_López

Acciones que debe tomar el analizador semántico una vez que ha finalizado el proceso del analizador sintáctico. 

El análisis semántico se realiza después del sintáctico y es más difícil 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í, es decir, comprobará que el significado de lo que se va leyendo es válido. El análisis semántico utiliza como entrada el árbol sintáctico detectando restricciones de tipo y otras limitaciones semánticas y preparar la generación de código. La salida “teórica” de la fase de análisis semántico sería un árbol semántico. Consiste en un árbol sintáctico en el que cada una de sus ramas ha adquirido el significado que debe tener. En el caso de los operadores polimórficos (un único símbolo con varios significados), el análisis semántico determina cuál es el 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 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.

Semántica dirigida por sintaxis
Efectos de las acciones semánticas
  • Cálculo de valores de atributos
  • Guardar/Consultar información de la Tabla de Símbolos (variable global)
  • Generación de código
  • Notificación de mensajes de error
  • No es un proceso estándar como el análisis sintáctico.
  • Varía de un lenguaje a otro

Valores de atributos:
cada producción A=α se asocia con un conjunto de acciones semánticas representadas como una función:
X.atr=f (Y1.atr, ..., Yn.atr)
También se conocen estas acciones como “ecuaciones de atributos”

Una accion semantica se ejecuta justo cuando se han reconocido los sımbolos que se encuentran a su izquierda en el cuerpo de la produccion.
La accion semantica se puede ver como una regla sem´antica asociada a un nuevo sımbolo no terminal cuya unica producci´on asociada M → ε es ejecutada.