Semantico
atica
II26 Procesadores de lenguaje
An´alisis sem´antico
Esquema del tema
1. Introducci´
on
2. Esquemas de traducci´
on dirigidos por la sintaxis
3. El ´arbol de sintaxis abstracta
4. Comprobaciones sem´anticas
5. Interpretaci´
on
6. Introducci´
on a metacomp
7. Algunas aplicaciones
8. Resumen del tema
1.
Introducci´
on
Hay determinadas caracter´ısticas de los lenguajesde programaci´on que no pueden ser modeladas mediante gram´
aticas incontextuales y que es necesario comprobar en una fase posterior al
an´
alisis sint´
actico. Por otro lado, las fases posteriores de la compilaci´on o interpretaci´on necesitan
una representaci´
on de la entrada que les permita llevar a cabo sus funciones de manera adecuada.
Estas dos vertientes —detecci´
on de errores yrepresentaci´on de la informaci´on— est´an muy
relacionadas y se solapan en la pr´
actica. Supongamos, por ejemplo, que nuestro lenguaje permite
asignaciones seg´
un la regla
Asignaci´on → id:= Expresi´on ;
Es habitual que se impongan ciertas restricciones. En nuestro caso, estas podr´ıan ser:
El identificador de la parte izquierda debe estar declarado previamente.
El tipo de la expresi´
on debe sercompatible con el del identificador.
El analizador sem´
antico deber´
a comprobar que estas dos restricciones se cumplen antes de declarar que la sentencia de asignaci´
on est´a bien formada. Pero sucede que la informaci´on necesaria
para comprobarlas es u
´til tambi´en para generar c´odigo. Esto quiere decir que si tuvi´eramos una
separaci´
on estricta entre las fases del compilador, para generarc´odigo deber´ıamos volver a mirar
el identificador para saber a qu´e objeto (variable, funci´on, constante, etc.) corresponde y qu´e tipo
tiene y tambi´en deber´ıamos volver a comprobar los tipos de la expresi´on para generar el c´odigo
adecuado.
Por otro lado, aunque en teor´ıa el a´rbol de an´alisis ser´ıa suficiente para fases posteriores de la
compilaci´
on o interpretaci´
on, es unarepresentaci´on que contiene mucha informaci´on redundante.
As´ı, el ´
arbol correspondiente a a:= b+c; bien podr´ıa tener el aspecto del ´arbol de la izquierda,
cuando el de la derecha contiene esencialmente la misma informaci´on y resulta m´as c´omodo para
2
II26 Procesadores de lenguaje
trabajar:
Asignaci´
on
ida :=
Expresi´
on
;
asignaci´
on
Expresi´
on
+
T´ermino
variablea
T´ermino
suma
Factorvariableb constantec
Factor
idc
idb
El segundo ´
arbol se conoce como ´
arbol de sintaxis abstracta (o AST, de las iniciales en ingl´es).
Como hemos comentado, durante el an´alisis sem´antico se recoge una serie de informaciones que
resultan de utilidad para fases posteriores. Estas informaciones se pueden almacenar en el ´arbol,
“decor´
andolo”:
asignaci´
on
variable
suma
nombre: a
tipo:entero
tipo: entero
variable
constante
nombre: b
tipo: entero
nombre: c
tipo: entero
valor: 5
As´ı el objetivo de la fase de an´
alisis sem´antico ser´a doble: por un lado detectaremos errores que
no se han detectado en fases previas y por otro lado obtendremos el AST decorado de la entrada.
Para ello utilizaremos esquemas de traducci´
on dirigidos por la sintaxis, que permitir´an asociaracciones a las reglas de la gram´
atica. Estas acciones realizar´an comprobaciones y construir´an el
AST que despu´es se recorrer´
a para terminar las comprobaciones y ser´a la base para la interpretaci´
on o la generaci´
on de c´
odigo.
2.
Esquemas de traducci´
on dirigidos por la sintaxis
Nuestro objetivo es especificar una serie de acciones que se realizar´an durante el an´alisis de
la entrada ytener un mecanismo que nos permita obtener la informaci´on necesaria para realizar
estas acciones. Para esto a˜
nadimos a las gram´aticas dos elementos nuevos:
Acciones intercaladas en las reglas.
Atributos asociados a los no terminales de la gram´atica.
2.1.
Acciones intercaladas en las reglas
Supongamos que tenemos el no terminal A que deriva dos partes diferenciadas y queremos
que se...
Regístrate para leer el documento completo.