rutinas semanticas
Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico.
El análisis semántico utiliza como entrada el árbol sintácticodetectado por el análisis sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código.
En compiladores de un solo paso, las llamadas a las rutinassemánticas se realizan directamente desde el analizador sintáctico y son dichas rutinas las que llaman al generador de código. El instrumento más utilizado para conseguirlo es la gramática deatributos.
En compiladores de dos o más pasos, el análisis semántico se realiza independientemente de la generación de código, pasándose información a través de un archivo intermedio, que normalmentecontiene información sobre el árbol sintáctico en forma linealizada (para facilitar su manejo y hacer posible su almacenamiento en memoria auxiliar).
En cualquier caso, las rutinas semánticas suelen haceruso de una pila (la pila semántica) que contiene la información semántica asociada a los operandos (y a veces a los operadores) en forma de registros semánticos.
Propagación de atributos
Sea laexpresión
int a,b,c;
a/(b+c^2)
El árbol sintáctico es:
/
---------
| |
a +
---------
| |
b ^---------
| |
c 2
De la instrucción declarativa, la tabla de símbolos y el analizador morfológico obtenemos los atributos de los operandos:/
---------
| |
a +
int ---------
| |
b ^
int ---------
| |
c 2int int
Propagando los atributos obtenemos:
/ int
---------
| |
a + int
int ---------
| |
b ^ int...
Regístrate para leer el documento completo.