Sei sulla pagina 1di 3

10/10/2012

Anlisis semntico Acciones semnticas de un analizador sintctico


El anlisis semntico dota de un significado coherente a lo

que hemos hecho en el anlisis sintctico.


El chequeo semntico se encarga de que los tipos que

intervienen en las expresiones sean compatibles o que los parmetros reales de una funcin sean coherentes con los parmetros formales

Tareas del Analizador Semntico


1.- Comprobacin de tipos 2.- Comprobacin de parmetros. 3.- Generacin de cdigo intermedio.

Errores tpicos semntico


Variables usadas no declaradas

del

analizador

Declare @nombre char (10) @nombre = Jorge @apellido = Prez

Conversin de tipos no permitidos Int X; X= 7.36

Atributos y acciones semnticas


Para poder dotar de significado a los smbolos hay que Se desea construir una pequea calculadora que realiza las

asignarles cierta informacin que le llamamos atributos.


Para manipular esa informacin portada por los atributos de

los smbolos, es decir, para poder realizar el anlisis semntico es necesario que las reglas de la gramtica puedan realizar acciones semnticas y manipular los atributos.

operaciones + y * . La gramtica ser la siguiente: E E +T |T T T * F | F F ( E ) | num Queremos calcular: 33 + 12 + 20.

10/10/2012

Si deseamos construir un intrprete, el siguiente paso es

saber qu resultado nos da cada operacin, y para ello hemos etiquetado el rbol indicando el orden en el que se han aplicado las reducciones. A los terminales le asignaremos ese valor mediante una accin asociada al patrn correspondiente en el anlisis lxico, de la siguiente forma:
[0-9]+ { Convertir yytext en un entero y asociar dicho entero al token NUM; return NUM; } rbol de reconocimiento de num + num + num. Los nmeros entre crculos indican la secuencia de reducciones del anlisis. Por lo tanto lo que le llegar al analizador sintctico es: num.33 +.nada num.12 +.nada num.20

Esta propagacin puede implementarse ejecutando acciones

asociadas a cada regla de produccin, de tal manera que la accin se ejecutar cada vez que se reduzca por su regla asociada, de igual manera que podamos asociar una accin a un patrn del analizador lxico.

Figura de propagacin de atributos de las hojas hacia la raz

De esta manera, con las asociaciones de valores a los

As, un atributo es una informacin asociada a un

terminales y no terminales y las asociaciones de acciones semnticas a los patrones y a las reglas de produccin, podemos evaluar el comportamiento de un programa, es decir, generamos cdigo.

terminal o a un no terminal.
Una accin o regla semntica es un algoritmo que

puede acceder a los atributos de los terminales y/o no terminales.

Estas acciones se deben ejecutar cada vez que se reduce

sintcticamente por la regla asociada.

10/10/2012

Como accin semntica no slo se puede poner una

Si slo se deseara que apareciera el valor resultante global,

asignacin a un atributo, adems puede aadirse cdigo; p.ej. si se hace la asociacin: E1 E2 + T {E1 = E2 + T; printf(%d\n, E1)}

podra aadirse una nueva regla S E y pasar el printf de la regla 1 a esta otra: S E { printf(%d\n, E); } E1 E2 + T {E1 = E2 + T; }

visualizar en pantalla el valor del atributo de la regla que, en el ejemplo, sern los valores 45 y 65

Potrebbero piacerti anche