Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 1)/2 :
k
1
= c
1
k
i
= (qk
i1
+ c
i
) mod 2
w
, 1 < i n
h = T(k
n
a mod 1), 0 < a < 1
Si doble dispersin [rehashing], usando p.e. a
e/9
para h
:
h
j
= (h + j(2h
/2 + 1)) mod T, j = 0, 1, . . .
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.7 .
Chequeos de tipos (y otros)
Un compilador debe realizar una serie de chequeos
estticos, como chequeos de tipos:
Consistencia: unicidad, existencia, no-ciclicidad, ...
Equivalencia y compatibilidad de tipos
Conversin explcita [cast] o forzada [coercion]
Inferencia de tipos (en valores)
Sobrecarga de funciones y operadores
Funciones polimrcas,
u otros (p.e., consistencia de instrucciones de control).
En otros casos, debe generar cdigo para realizar che-
queos dinmicos (p.e., valor dentro de rango).
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.8 .
Deniciones de tipos
Tambin llamadas expresiones de tipos, en las que el
programador desarrolla los componentes de la estructura.
Cuestiones:
Puede ser conveniente construir un rbol/grafo:
En caso de equivalencia estructural
Para comprobacin de no-ciclicidad:
type a=b; b=a;
(Descomponer en) tipos annimos
Las deniciones incompletas (declaraciones) son necesa-
rias para deniciones recursivas: entrada en tabla provi-
sionalmente vaca para tipo base.
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.9 .
El rbol sintctico abstracto (1/2)
En ingls (abstract) syntax tree, AST, para distinguirlo del rbol del
anlisis segn la gramtica [parse tree].
if(a<3) {b=2*a;};
2 a
*
a 3
<
b
if-then
:=
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.10 .
El rbol sintctico abstracto (2/2)
Representacin compacta correspondiente a una
gramtica sin limitaciones de mtodo de anlisis,
caracterizada por que los nodos interiores son
operadores, en sentido amplio.
til para ser anotado o decorado con atributos
en recorridos ulteriores, y a partir de ah:
Realizar chequeos
Generar cdigo (intermedio)
Con frecuencia se puede simular su recorrido (sin cons-
truirlo) durante el anlisis sintctico.
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.11 .
Representaciones internas (1/2)
Intermedias entre frontal [front-end] y dorsal [back-end],
permiten desacoplar los diseos de unos y otros.
Orientadas a:
Su optimizacin (instrucciones claras y simples)
Generar cdigo de distintas mquinas objeto
El diseo debe permitir su fcil generacin por el analiza-
dor semtico.
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.12 .
Representaciones internas (2/2)
Podemos clasicarlas por su nivel de abstraccin
(distancia a la mquina objeto real):
Alto: prxima al rbol abstracto, con
correspondencia con las estructuras del lenguaje
Medio: instrucciones de mquina virtual (a veces
realmente implementada: P-code, bytecode), tales
como tuplas de tres direcciones
Bajo: mquina prxima al ensamblador, sin
restriccin de nmero de registros
Algunos compiladores pasan por varias representaciones
de distintos niveles de abstraccin.
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.13 .
Cudruplas
Operaciones con hasta tres direcciones, que pueden ser
variables del programa o temporales:
x := y op z
x := op z x := z
x := y[z] x[y] := z
if x op y goto L goto L
param x
1
, ..., param x
n
, call p(n)
Podemos entenderlas como una linealizacin de un cierto
tipo de rbol abstracto.
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.14 .
Ejemplo de cudruplas
for i in a..b do
...
endfor;
...
:= i a
:= t8 b
if >goto i t8 L5
L4: ...
if = goto i t8 L5
:= + i i 1
goto L4
L5: ...
An alisis sem atico v1.2 c 2005 Jos e Fortes G alvez p.15 .