Analisis semantico

Solo disponible en BuenasTareas
  • Páginas : 13 (3168 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de mayo de 2011
Leer documento completo
Vista previa del texto
Resto de Fases del Compilador
Software de Sistemas Mónica Pinto Alarcón Curso 2005/2006

Fases del Compilador
Fase de Análisis
Análisis léxico Análisis sintáctico Análisis semántico

Fase de Síntesis
Generación de Código Intermedio Optimización de Código Intermedio Generación de Código Máquina Optimización del Código Máquina
2/38

1

Análisis Semántico
Semántica
El conjunto dereglas que especifican el significado de cualquier sentencia sintácticamente correcta y escrita en un determinado lenguaje.

Se pueden encontrar sentencias que son sintácticamente correctas, pero que no se pueden ejecutar porque carecen de sentido. En general, el análisis semántico se hace a la par que el análisis sintáctico introduciendo en éste unas rutinas semánticas.
3/38

Análisis SemánticoEjemplo1:
Suponer que los identificadores de una sentencia son variables declaradas de tipo real. En la sentencia que se ha analizado existe una valor de tipo entero. Sin embargo, las operaciones se realizan entre identificadores reales, por lo que hay dos alternativas:
o emitir un mensaje de error “Discordancia de tipos”, o realizar una conversión automática de tipos, mediante una funciónauxiliar inttoreal().

Ejemplo2:
Suponer una sentencia en la que se suman dos identificadores, donde uno de ellos es el identificador de una variable de tipo entero y el otro el identificador de una variable de tipo array. El analizador semántico dará un error porque aunque la suma de dos identificadores sintácticamente es correcto en el lenguaje de programación, no está definida la operación desuma de un entero y un array.

4/38

2

Análisis Semántico
El compilador realiza una comprobación semántica estática, frente a la dinámica realizada en tiempo de ejecución Algunos ejemplos de Comprobaciones Semántica Estáticas son :
Comprobación de tipos: indicará error si un operador se aplica a un operando incompatible. Ejemplo: sumar una variable de tipo vector con un identificadorfunción. Comprobación del control de flujo: Las sentencias que producen la variación de flujo deben verificar hacia donde se transfiere el control.
Ejemplo: la sentencia break de C hace que el control abandone el bucle while más interior, o una sentencia switch, aparecería un error si tal bucle no existe.

Comprobación de unicidad: Existe situaciones en las que un elemento del lenguaje sólo sedefine una vez.
Ejemplo: en la zona de declaraciones, un identificador debe ser declarado una sola vez, las etiquetas de la sentencia case deben ser distintas o los elementos de un tipo enumerado no pueden repetirse.

5/38

Análisis Semántico
Especificación Formal de la Semántica Una forma de proporcionar una especificación precisa de los aspectos semánticos de los lenguajes de programación esmediante las gramáticas atribuidas. Gramática con Atributos
Una gramática con atributos es una gramática de contexto libre a cuyos símbolos X (terminales y no terminales) se les asocia un conjunto de atributos. Además a cada regla sintáctica se le asocian unas reglas semánticas que especifican como los atributos toman sus valores. Mediante una gramática atribuida podremos especificar qué debehacerse con los atributos para realizar el análisis semántico y / o la traducción una vez que se ha realizado con éxito el análisis sintáctico.
6/38

3

Análisis Semántico
G = (N,T,S,P) Gramática tipo 2 o de contexto libre:
A tira estando A en N y tira en (N U T)* Se puede cambiar A por tira independientemente del contexto en que aparezca A Ejemplo:
N: S, A, B T: a, b P : S aB | bA A a | aS |bAA B b | bS | aBB
7/38

Definición de las Reglas Semánticas
Reglas Semánticas:
Son una generalización o extensión de las reglas de la gramática.
Se basa en que el significado de una frase está directamente relacionado con su estructura sintáctica, según se representa en su árbol de análisis sintáctico. Se realizan en paralelo
Análisis Semántico Traducción

Esta notación asocia a cada...
tracking img