View
211
Download
1
Category
Preview:
Citation preview
Analisis Semantico 1
Unidad 4 - Análisis
Semántico
Universidad "Gerardo Barrios"
Facultad de Ciencia y Tecnología
Compiladores e Interpretes Ciclo I-2016
Unidad 01: Introducción a Los
Traductores
Conceptos Generales
Clasificación de los Traductores
Estructura de un Compilador
Ing. Marvin Osmaro Parada
Unidad 02: Análisis Léxico
Definición
Conceptos de Token, patrones, lexema y
atributo
Especificaciones de un Token.
Expresiones regulares
Tratamiento de Errores
Tabla de Símbolos
Ing. Marvin Osmaro Parada
Unidad 03: Análisis Sintáctico
Analizador Sintáctico. Tipos
Analizador Sintáctico descendente
determinista LL(1)
Tratamiento de errores.
Ing. Marvin Osmaro Parada
Unidad 04 Análisis Semántico
4.1 Introducción
4.2 Especificación formal
4.3 Fases en el Análisis Semántico
4.4 Determinación de los tipos de
Comprobaciones Semánticas a Realizar
4.5 Implementación de acciones
Semánticas
Ing. Marvin Osmaro Parada
Analisis Semantico 9
Contenido
• Dar a conocer las fases del análisis
semántico.
• Enseñar la especificación semántica
de un lenguaje de programación.
Definición
Analisis Semantico 10
Semántica de un lenguaje de programación es el
conjunto de reglas que especifican el significado
de cualquier sentencia sintácticamente válida.
Análisis Semántico
Es la etapa que procesa la
información adicional necesaria para
el procesamiento de un lenguaje,
una vez que la estructura sintáctica
de un programa haya sido obtenida
Analisis Semantico 11
Analisis Semantico 12
Un analizador semántico comprueba que un
analizador sintáctico es semánticamente válido.
Además genera un árbol semántico o etiquetado.
Análisis semántico
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
válido.
Análisis semántico
1. El análisis semántico se
realiza posteriormente al
sintáctico y mucho más
difícil de formalizar que
éste.
2. La salida “teórica” de la
fase de análisis semántico
sería un árbol semántico.
Sintaxis/Semántica
Analisis Semantico 15
Sintaxisconjunto de reglas formales que especifican la estructura de los programas pertenecientes a dicho lenguaje
Semántica
conjunto de reglas que especifican el significado de
cualquier sentencia sintácticamente válida
Ejemplo:
Suponiendo que tenemos esta linea de codigo en
C:
res=valor1+valor2;
El analisis semantico se va a encargar que tanto
el valor1 como el valor2 tengan datos que son
compatibles en común y que ademas se les
pueda aplicar dicho operador.
En C el simbolo(+) implica unasuma de valoreso una union delas cadenas
Sistemas de tipo:
Conjunto de reglas que determinan el
criterio para asignar expresiones de
tipo a las diferentes partes del código
fuente.
Tipo básico: entero, carácter, real, lógico
Funciones a=suma();
Objetivo de ésta etapa
El objetivo principal es detectar la
validez semántica de las sentencias
aceptadas por el analizador
sintáctico.
Analisis Semantico 18
Por ejemplo
Comprueba las correcciones
semánticas de la instrucción.
Ejemplo:
compatibilidad de tipo de las
variables en una expresión. Analisis Semantico 19
Funciones Generales
Detectar si las variables, constantes y funciones
han sido declaradas antes de ser utilizadas.
Verificar que las variables, constantes y funciones
sean accesibles (visibilidad) desde el ámbito en
que son utilizadas.
Comprobar que los diferentes identificadores solo
hayan sido declarados una vez.
Analisis Semantico 26
Funciones Generales
Comprobaciones de tipos al evaluar las
expresiones. Por ejemplo que no se multiplique un
número por una cadena o que la expresión a
evaluar en un IF sea del tipo booleano.
Verificar que no se intente modificar el valor de
una constante.
Generar la tabla de símbolos.
Analisis Semantico 27
Ejemplos de comprobación
semántica
Int z
Char j
Z= 1 + 2 * j + 4
ERROR:
Identificador no declarado: j en línea 1
Columna 13 variable j .
Analisis Semantico 28
Ejemplos de comprobación
semántica
j = 1 + verdadero
ERROR: Se esperaba un valor de
tipo numérico o cadena tras el
operador: + en la línea 2
Columna 7
Analisis Semantico 29
Ejemplos de comprobación
semántica
si "a" = 3 entonces
j = 4
ERROR: No es posible realizar la
comparación ya que los dos
operandos son de tipos distintos.
Línea 1 Columna 8
Analisis Semantico 30
Lenguajes y uso de Gramáticas
Pascal, C, Visual C son ejemplos de
lenguajes que usan gramáticas
sensibles al contexto.
Aunque la mayoría usan gramáticas
libres de contexto.
Analisis Semantico 31
Formas de descripción semántica
Existen dos formas de describir la
semántica de un lenguaje de
programación:
• Especificación Informal o Natural y
• Especificación Formal.
Analisis Semantico 32
Descripción Informal
Analisis Semantico 33
Es una descripción de los elementos
del lenguaje.
El ejemplo mas claro es la
documentación que se realiza para
cada lenguaje desarrollado.
Descripción Formal
Es la descripción rigurosa del
significado o comportamiento de
programas, lenguajes de
programación.
Analisis Semantico 34
Clasificación de las Descripciones
Formales de Semántica.
Analisis Semantico 35
Descripciones
Formales
S. operacional
S. denotacional
S. Axiomática
S. Algebraica
Semántica Operacional
Los significados del programa son descritos
en términos de operaciones, utilizando un
lenguaje basado en reglas de inferencia
lógicas en las que se describen formalmente
las secuencias de ejecución de las diferentes
instrucciones sobre una máquina
abstracta(Almacen).
Analisis Semantico 36
Semántica Denotacional
La representación del comportamiento de cada
sentencia o frase del lenguaje se lleva a cabo
mediante entidades matemáticas (denotación) que
representan el efecto de haber ejecutado las
sentencia o frase asociada.
Se utiliza mayoritariamente en diseño de lenguajes
de programación y se ha empleado para especificar la
semántica completa de lenguajes como Ada, Algol-60
y Pascal.
Analisis Semantico 37
Semántica Axiomática
Especifica las propiedades del efecto de
ejecutar las sentencias sintácticamente
correctas. El sistema permite estudiar
formalmente las propiedades del lenguaje y
se requiere la utilización de sistemas
consistentes y completos.
Analisis Semantico 38
Semántica Algebraica
Se basa en la especificación de tipos de
datos abstractos mediante una colección de
operaciones (incluyendo alguna constante).
Puesto que un conjunto de valores al que se
le añaden una colección de operaciones
constituye un álgebra, este método de
descripción formal de semántica se
denomina semántica algebraica.
Analisis Semantico 39
Acciones del AS
• 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.
Analisis Semantico 40
Acciones del AS
•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.
Analisis Semantico 41
Recommended