Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LENGUAJES DE
ANLISIS SEMNTICO Y TRADUCCIN
PROGRAMACION
Fase de anlisis
semntico
Fase de anlisis
semntico
Sea el siguiente rbol sintctico para
la expresin: comision=fijo+valor*8
Fase de anlisis
semntico
Ejemplo:
Si suponemos que nuestro lenguaje solo
trabaja con nmeros reales, la salida
sera su mismo rbol, excepto porque el
atributo de <NUM>, que era el entero 8 a
la entrada, ahora pasara a ser el real 8,0.
Adems se ha debido controlar que las
variables implicadas en la sentencia, a
saber, comisin, fijo y valor son
compatibles con el tipo numrico de la
constante 8,0.
Anlisis Semntico
Comprobacin esttica
Comprobacin de tipos
La aplicacin de los operadores y operandos deben ser
compatibles
Comprobaciones del flujo del control
Las proposiciones que hacen que se abandone el flujo del
control de una construccin debe transferirse a otro
punto. (break, exit)
Comprobaciones de unicidad
Anlisis Semntico
Adems de comprobar que un programa
cumple con las reglas de la gramtica, hay
que comprobar que lo que se quiere hacer
tiene sentido.
Esta fase tambin modifica la tabla de
smbolos y suele estar mezclada con la
generacin de cdigo intermedio.
Las gramticas independientes del contexto
(G2) no son suficientes para realizar el
anlisis semntico. Por ejemplo, no hay forma
de comprobar si una variable ha sido definida
ya, o si existe una determinada etiqueta.
Es necesario definir un tipo de gramtica ms
rica como las gramticas de atributo.
Definicin
Definicin
Las gramticas de atributo son
gramticas G2 a las que se aaden
atributos y reglas de evaluacin de
atributos
(funciones/reglas
semnticas)
Generacin de cdigo
Guardar/Consultar informacin de la
Tabla de Smbolos
Notificacin de mensajes de error.
Heredados
Ejemplo
Ejemplo
Sintetizados,
Ascendente
Produccin
L->E n
print
E->E1 + T
E->T
E.val
T->T1 * F
T->F
T.val
F-> ( E )
F->dgito
CALCULADORA,
Reglas Semnticas
(E.val)
E.val := E1.val + T.val
:= T.val
T.val := T1.val * F.val
:= F.val
F.val := E.val
F.val := dgito.valex
Anlisis
INFORMACIN
Produccin
Reglas Semnticas
D->T L
L.her := T.tipo
T->int
T.tipo := integer
T->real T.tipo := real
L->L1,id
L1.her := L.her
aadetipo (id.entrada, L.her)
L->id
aadetipo (id.entrada, L.her)
DE
Grafos de dependencias
Si un atributo b en un nodo depende
de un atributo c, entonces se debe
evaluar la regla semntica para b
despus de la regla semntica que
define a c
Las interdependencias entre atributos
heredados y sintetizados de un rbol
de anlisis sintctico se pueden
representar mediante un grafo dirigido
llamado Grafo de Dependencias
Grafos de dependencias
Algoritmo de Construccin
Para cada nodo n en el rbol de anlisis sintctico hacer
Para cada atributo a del smbolo gramatical en el nodo n
hacer
Construir un nodo en el grafo de dependencias para a;
Para cada nodo n en el rbol de anlisis sintctico hacer
Para cada regla semntica b:=f(c1, c2, ..., ck) asociada con
la
produccin utilizada en n hacer
Para cada i:=1 hasta k hacer
Construir una arista desde el nodo ci hasta el nodo
para b;
Produccin
Regla Semntica
E->E1+E2
E.val:=E1.val+E2.val
Grafo de dependencias
Ejemplo: real id1, id2, id3
Grafo de dependencias
Evaluacin de las reglas semnticas
Fragmento de Cdigo
print (val [tope])
val [ntope] := val [tope-2] + val
Esquema de traduccin
Cada smbolo tiene un conjunto de atributos
asociados
Nombre_de_Smbolo.Nombre_de_Atributo
Esquemas de traduccin
Slo con atributos sintetizados
Generacin de cdigo
intermedio
Proceso de Sntesis
Lenguaje Intermedio
Generacin de Cdigo
Tipos de representaciones
intermedias
Notacin Polaca Inversa (RPN)
Ventajas
Inconvenientes
rboles de sintaxis
abstracta
Son rboles de derivacin en los que no
existe informacin superflua
Cada nodo hoja representa un operando y
cada no-hoja un operador
Cdigos de tres
direcciones
Cada lnea de cdigo tiene un operador y
hasta tres direcciones
Tipos: Cuartetos, Tercetos, Tercetos Indirectos
Cuartetos. Se representan por cuatro valores:
(<OPERADOR>,<Operando1>,<Operando2>,<Resulta
do>)
Tercetos
Los cuartetos son la herramienta ms
general
Inconvenientes
Ocupan demasiado espacio
Requieren muchas variables auxiliares para
almacenar los resultados intermedios
Tercetos y tercetos
indirectos
Tercetos indirectos,
ejemplos
Tercetos indirectos,
optimizacin
Comparacin entre
representaciones
Nivel de Indireccin
La representacin de tercetos tiene
mayor nivel de indireccin que los
cuartetos
Optimizacin
Mover cdigo en los tercetos es
relativamente ms difcil, aunque en menor
grado para los tercetos indirectos
Espacio
Los cuartetos ocupan ms memoria,
especialmente si se utilizan las variables
temporales ms de una vez
Tercetos
Traduccin dirigida por la sintaxis a
cdigo de tres direcciones
Generacin de cdigo a
partir
Notacin Polaca
El cdigode
se genera cuando se encuentra el operador.
Generacin de Cdigo
Intermedio
Se pueden utilizar las rutinas de rboles de
ensintaxis
el Anlisis
abstracta, Sintctico
incorporndolas al cdigo
Supongamos que se genera con el anlisis un rbol
Recursivo
binario con tres campos por nodo: info (informacin
del nodo); izda (puntero al subrbol izquierdo; dcha
(puntero al subrbol derecho)
Ejemplo GCI
GCI - Condicionales
GCI - Ciclos
Generacin de cdigo
final
Traduccin de la representacin intermedia a cdigo
objeto.
Generacin de cdigo
Estrategias