36
Analisis Semantico 1 Unidad 4 - Análisis Semántico Universidad "Gerardo Barrios" Facultad de Ciencia y Tecnología Compiladores e Interpretes Ciclo I-2016

Unidad4 analisis-semantico

Embed Size (px)

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

CÓMPUTO III

Análisis Semántico

Analisis Semantico 7

Jueves 29/03/2012 Analisis Semantico 8

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

Acciones del AS

• 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.

Analisis Semantico 42