Documente Academic
Documente Profesional
Documente Cultură
c
Analisis sematico v1.2
2005
Jose Fortes p.1
c
Analisis sematico v1.2
2005
Jose Fortes p.2
c
Analisis sematico v1.2
2005
Jose Fortes p.2
c
Analisis sematico v1.2
2005
Jose Fortes p.2
Ejemplo de extensin
del anlisis sintctico
La tabla de smbolos permite que el analizador lxico
devuelva un token distinto segn la categora del
identificador en ese contexto. Con esta tcnica:
En el fondo, estamos introduciendo dependencia
del contexto sobre una gramtica independiente del
contexto.
Por tanto, aumentamos la potencia del
anlisis sintctico
Podemos resolver algunos conflictos y as evitar
modificar la gramtica o el lenguaje
c
Analisis sematico v1.2
2005
Jose Fortes p.3
Tabla(s) de smbolos
Va conteniendo un registro por cada identificador
definido/declarado por el programador, aadindose
informacin asociada:
Ristra del identificador (maysculas y minsculas?)
Categora: variable, constante, tipo, campo,
procedimiento, funcin, parmetro, clase, etiqueta,
mdulo, macro, etc.
A qu mbito pertenece (profundidad)
Otra informacin segn categora: tamao;
ubicacin; valor; enlaces a tipo, parmetros o
campos; si incompletamente definido; etc.
c
Analisis sematico v1.2
2005
Jose Fortes p.4
c
Analisis sematico v1.2
2005
Jose Fortes p.5
s
?
?
c
main
c
Analisis sematico v1.2
2005
Jose Fortes p.6
s
?
?
c
main
real
c
Analisis sematico v1.2
2005
Jose Fortes p.6
s
?
?
c
main
real
x
c
c
Analisis sematico v1.2
2005
Jose Fortes p.6
s
?
?
c
main
real
c
Analisis sematico v1.2
2005
Jose Fortes p.6
s
?
?
c
main
c
Analisis sematico v1.2
2005
Jose Fortes p.6
s
c
d
c
main
c
Analisis sematico v1.2
2005
Jose Fortes p.6
c
Analisis sematico v1.2
2005
Jose Fortes p.8
Definiciones 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 definiciones incompletas (declaraciones) son necesarias para definiciones recursivas: entrada en tabla provisionalmente vaca para tipo base.
c
Analisis sematico v1.2
2005
Jose Fortes p.9
if(a<3) {b=2*a;};
if-then
<
a 3
:=
2 a
c
Analisis sematico v1.2
2005
Jose Fortes p.10
c
Analisis sematico v1.2
2005
Jose Fortes p.12
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 x1 , ..., param xn , call p(n)
Podemos entenderlas como una linealizacin de un cierto
tipo de rbol abstracto.
c
Analisis sematico v1.2
2005
Jose Fortes p.14
Ejemplo de cudruplas
for i in a..b do
...
endfor;
...
:=
:=
if >goto
L4:
...
if = goto
:= +
goto
L5:
...
i a
t8 b
i t8 L5
i t8 L5
i i 1
L4
c
Analisis sematico v1.2
2005
Jose Fortes p.15