Análisis Semántico
Análisis Semántico
Análisis Semántico
Anlisis semntico
Introduccin
Adems de controlar que un programa cumpla con las reglas de la gramtica del
lenguaje, hay que comprobar que lo que se quiere hacer tiene sentido. La verificacin
semntica 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: p.ej. no suele tener mucho sentido el multiplicar una cadena de
caracteres por un entero.
Lenguajes y Autmatas II
Int a;
A=100;
A=A+A;
Output A
end
GRAMATICA
PROGRAMA->begin declaraciones;sentencias end
DECLARACIONES->DECLARACIONES | DECLARACION
DECLARACION->TIPO IDS
SENTENCIAS->SENTENCIA SENTENCIAS
SENTENCIA->ASIGNACION
Lenguajes y Autmatas II
Lenguaje natural
Especificacin formal: Semntica Operacional, semntica denotacional,
semntica Axiomtica, Gramticas con Atributos.
Lenguajes y Autmatas II
Por ejemplo:
Lenguajes y Autmatas II
reglas semnticas. Un conjunto de atributos y ecuaciones relacionados con la gramtica se le
denomina gramtica con atributos. Las gramticas con atributos son ms tiles por que
obedecen al principio de traduccin dirigida por sintaxis.
Un atributo es cualquier propiedad de una construccin del lenguaje de programacin.
Ejemplos: el tipo de datos, el valor de una expresin, la ubicacin de la variable en la memoria,
el cdigo objeto de un procedimiento, el nmero de dgitos significativos de un nmero.
Los atributos se pueden establecer antes del proceso de compilacin, adems los atributos solo
se pueden establecer durante la ejecucin del programa.
Ejemplos de atributos:
El proceso de calcular un atributo y asociar el valor calculado se le conoce como fijacin del
atributo. El tiempo que toma el proceso de compilacin/ejecucin cuando se presenta la fijacin
de un atributo se denomina tiempo de fijacin. Si el atributo puede fijarse antes de la ejecucin
se denomina esttico, mientras que los atributos que slo pueden fijarse durante la ejecucin se
denominan dinmico.
Gramticas de atributos
En la semntica dirigida por sintaxis los atributos estn directamente asociados en los smbolos
gramticas del lenguaje (los terminales y no terminales). Si X es un smbolo gramticas, y a es
un atributo asociado a X, entonces X.a es una regla gramatical.
Informalmente, se llamara atributos de un smbolo de la gramatica a toda la informacin
aadida en el rbol de derivacin por el analizador semntico, asociada a los smbolos de los
nodos anotados.
Una gramtica con atributos es una extensin de las gramticas independientes del contexto a
las que se aade un sistema de atributos formado por:
Lenguajes y Autmatas II
En la semntica dirigida por sintaxis los atributos estn directamente asociados con los smbolos
gramticas de los lenguajes.
Ejemplo. Considere la siguiente gramtica
numero->numero digito | digito
Numero->0 | 1 | 2 |3 |4 |5 |6 |7 |8 |9
El atributo ms importante de un nmero es el valor.
Reglas semnticas
Numero1.val=numero2.val*10+digito.val
Numero.val=digito.val
Digito.val=0
Digito.val=1
Digito.val=2
Digito.val=3
Digito.val=4
Lenguajes y Autmatas II
El atributo principal es el valor.
Regla Gramatical
Exp1->exp2+term
Exp1->exp2-term
Exp->term
Term1->term2*factor
Term->factor
Factor->(exp)
Factor->numero
Reglas Semnticas
Exp1.val=exp2.val+term.val
Exp1.val=exp2.val-term.val
Exp.val=term.val
Term1.val->term2.val*factor.val
Term.val->factor.val
Factor.val=exp.val
Factor.val=numero.val
Lenguajes y Autmatas II
que no ha sido previamente declarado, lo que suele considerarse un error
semntico del que hay que informar al programador.
En estos casos, el analizador lexicogrfico, cuando se encuentra un identificador
desconoce en qu rea lo ha encontrado, por lo que no resulta fcil incluir una accin
lxica que discrimine entre realizar una insercin o una bsqueda; as, deber ser el
analizador sintctico quien haga estas operaciones. As, el atributo del token
identificador suele ser su propio nombre.
Sin embargo, hay unos pocos lenguajes de programacin en los que no es
necesario declarar las variables, bien porque slo existe un nico tipo de datos (como en
nuestro ejemplo de la calculadora donde todo se consideran valores enteros) o bien
porque el propio nombre de la variable sirve para discernir su tipo (en BASIC las
variables que acaban en $ son de tipo cadena de caracteres). En estos casos, el propio
analizador lexicogrfico puede insertar el identificador en la tabla de smbolos la
primera vez que aparezca; antes de insertarlo realiza una operacin de bsqueda por si
ya exista. Y sea cual sea el caso, se obtiene la entrada o ndice de la tabla en la que se
encontraba o se ha incluido; dicho ndice ser el valor que el analizador lxico pasa al
sintctico como atributo de cada identificador.
La tabla de smbolo es el principal atributo heredado de un compilador. Las
principales operaciones de la tabla de smbolos son la insercin, bsqueda y
eliminacin.