Sei sulla pagina 1di 21

UNIDAD 1:

LENGUAJES
YINSTITUTO
AUTMATAS
ANLISIS SEMNTICO
II
EQUIPO # 1

- OZUNA PREZ MARTIN


ALBERTO
- OLIVARES SOLS RICARDO
JACOB
- RODRIGUEZ RAYO EDUARDO

TECNOLGICO
DE ACAPULCO

CONTENIDO
INTRODUCCIN................................................................................................................ 3
1.

ANALISIS SEMNTICO................................................................................................ 4
1.1

ARBOLES DE EXPRESIONES.................................................................................4

1.1.1

ARBOLES EN INFORMATICA........................................................................... 6

1.1.2

DEFINICION RECURSIVA.................................................................................6

1.1.3

REPRESENTACION DE UN ARBOL GENERAL...................................................7

1.1.4

ARBOL BINARIO............................................................................................. 9

1.1.5

NOTACION POLONESA................................................................................. 10

1.2

ACCIONES SEMNTICAS DE UN ANALIZADOR....................................................11

1.3

COMPROBACIONES DE TIPOS EN EXPRESIONES................................................11

1.4

PILA SEMNTICA EN UN ANALIZADOR SINTCTICO............................................12

1.4.1

TEORA DE COLAS Y PILAS..........................................................................13

1.5

ESQUEMAS DE TRADUCCIN............................................................................. 13

1.6

GENERACIN DE LA TABLA DE SMBOLOS Y DE DIRECCIONES..........................15

1.6.1
1.7

CONTENIDO DE LA TABLA DE SMBOLOS.....................................................17

MANEJO DE ERRORES SEMNTICOS..................................................................18

CONCLUSIN.................................................................................................................. 20
BIBLIOGRAFA................................................................................................................. 21

INTRODUCCIN
En el desarrollo de la primera unidad correspondiente a la asignatura de Lenguajes y
autmatas se explicar el proceso del anlisis semntico, es decir, conceptualmente como
se realiza utilizando herramientas de representacin tales como rboles para brindar un
mejor entendimiento.
Se dar a conocer los conceptos involucrados con el anlisis semntico, utilizando arboles
de expresiones que ejemplifican algunos casos explicados en cada uno de los puntos que
lo requieren; para lograr verificar que los procesos involucrados en los procesos internos
en el anlisis se realiza comprobaciones de tipos en expresiones.
Otro de los procesos dentro del anlisis se encuentra el esquema de traduccin que ser
explicado de manera clara para entender dicho proceso; como es de imaginarse para que
el anlisis semntico logre concretarse correctamente se verifica que los smbolos en las
expresiones dadas pertenezcan a la tabla de smbolos se un lenguaje en especfico
En el ltimo punto se dar a conocer nuestras conclusiones como equipo referente al
desarrollo de esta unidad que a continuacin se presentar.

1. ANLISIS SEMNTICO
La fase de anlisis semntico revisa el programa fuente para tratar de encontrar
errores semnticos y rene la informacin sobre los tipos para la fase posterior de
generacin de cdigo. En ella se utiliza la estructura jerrquica determinada por la
fase de anlisis sintctico para identificar los operadores y operandos de
expresiones y proposiciones.
Un componente importante del anlisis semntico es la verificacin de tipos. Aqu, el
compilador verifica si cada operador tiene operandos permitidos por la
especificacin del lenguaje fuente. Por ejemplo, las definiciones de muchos
lenguajes de programacin requieren que el compilador indique un error cada vez
que se use un nmero real como ndice de una matriz. Sin embargo, la
especificacin del lenguaje puede permitir ciertas coerciones a los operandos, por
ejemplo, cuando un operador aritmtico binario se a plica a un nmero entero y a un
nmero real. En este caso, el compilador puede necesitar convertir el nmero entero
real.
1.1 RBOLES DE EXPRESIONES
Expresin: secuencia de tokens.
Token: puede ser un operando o un operador.
Operador: +, -, *, /.
Propiedades:
Cada hoja es un operando.
El nodo raz o los nodos internos son operadores.
Los subrboles son subexpresiones en los nodos que el nodo raz es un
operador.

Reglas de precedencia: + (positivo), - (negativo).


*, /, %
+, Ejemplo: a*(b+c)+d
los parntesis estn implcitos en el rbol.
La prioridad se determina solo por parntesis.
La expresin completa se sita con parntesis.

Figura 1. Diagrama de expresiones usando notacin polonesa.

1.1.1 RBOLES EN INFORMATICA


El rbol es una estructura de datos fundamental en informtica, muy bien
adaptada a la inteligencia artificial y al anlisis sintctico.
En la inteligencia artificial, las declaraciones de las reglas se efectan segn el
esquema premisas-conclusin, que corresponde al establecimiento de relaciones
de dependencia que se puedan poner en forma arborescente.

La resolucin de un problema se reduce entonces al recorrido de un rbol, con el


objeto de establecer un camino entre las hiptesis y las conclusiones generales.
En el anlisis sintctico, se definen gramticas formales que permiten
descomponer las expresiones. As se puede definir una fase como las
combinaciones de un grupo nominal y de un grupo verbal (verbo y
complemento), este grupo verbal se descompone en un verbo y en un grupo
nominal, formado por un nombre y una frase. La estructura jerrquica de una
expresin puede ser descrita por un esquema arborescente.
Un compilador podr, en el curso del tratamiento del texto de un programa,
utilizar rboles para decodificar tales expresiones.
1.1.2 DEFINICIN RECURSIVA.
Un rbol T es un conjunto finito de uno a ms nudos tales que:
Existe un nudo especial denominado raz del rbol.
Los otros nudos son particiones en m>0 conjuntos disjuntos T1, T2,TM
y cada conjunto es un rbol. Se dice entonces que T1, T2,.TM son sub
arboles de la raz.
Esta definicin recursiva, es decir que se define un rbol en trminos de rboles.
El nmero de subrboles de un nudo terminal se le llama nivel del nudo.
Un nudo de grado cero se designa nudo terminal u hoja.
El nivel de un nudo con relacin al rbol T se define de la siguiente forma:
La raz de T es de nivel 0
Los otros nudos tienen el nivel de la raz del subrbol que los contiene
ms.
Ejemplo:
Sea un rbol T que consta de siete nudos A, B, C, D, E, F, G, donde A es la raz
del rbol y tal que los grados de los diversos nudos son: grado de A=2, grado de
C=m, grado de F=1, grado de los otros nudos=0 (hojas).
1.1.3 REPRESENTACIN DE UN RBOL GENERAL
La representacin y nomenclatura de los rboles se realiza con las tpicas
notaciones de las relaciones familiares en los rboles genealgicos:

NIVELES DE UN arbol
NIVEL 0:
A = RAIZ
NIVEL 1:
{B}, {C, D, F, G} = 2 subrboles.
NIVEL 2:
{D}, {E}, {F, G}= 3 subrboles
NIVEL 3:
{G}= 1 subrbol.

Figura 2. Niveles de un rbol.


Padre,

hijo,

hermano,

ascendente,

descendente, etc. Un ejemplo es el rbol


general de la figura 2.
Las definiciones a considerar son:
Raz del rbol, todos los rboles que no
estn vacos tienen un nico nudo raz.
Todos los dems elementos o nudos
derivan o descienden de l. El nudo raz no tiene padre, es decir, no es
hijo de ningn nudo.
Nudo son los vrtices o elementos del rbol.
Nudo terminal u hoja, es aquel nudo que no contiene ningn subrbol, en
la figura son hojas los nudos E, F, K, L, H, I y J.

Figura 3. rbol general.


A cada nudo que no es hoja se le asocia a uno o varios subrboles
llamados descendientes o hijos. De igual forma, cada uno tiene asociado
un antecesor o ascendiente llamado padre.
Los nudos de un mismo padre se le llaman hermanos.
Los nudos con uno o dos subrboles no son hojas ni raz se llaman nudos
internos.
Un conjunto con dos o ms rboles se llama bosque.
Se denomina camino el enlace entre dos nudos consecutivos, y rama es
un camino que termina en una hoja.
Altura de un rbol es el nmero mximo de nudos de una rama. Equivale
al nivel ms alto de los nudos ms uno.
El peso de un rbol es el nmero de nudos terminales.
1.1.4 RBOL BINARIO
Existe un tipo de rbol denominado rbol binario que puede ser implementado
fcilmente en un ordenador.
Un rbol binario es un conjunto finito de cero o ms nudos tales que:
Existe un nudo llamado raz del rbol.
Cada nudo puede tener 0, 1 o 2 subrboles, conocidos como subrbol
izquierdo y subrbol derecho.
Estos dos subrboles son bien diferenciados. (Fig.3)
Sean dos rboles binarios:

Subrbol izquierdo: tiene una raz A y una hoja B.


Subrbol derecho: tiene una raz A y una hoja B

(a)

(b)
Figura 4. a) Subrbol izquierdo, b) Subrbol derecho.

Estos dos subrboles binarios son diferentes, mientras que es cualquier rbol
sern idnticos.
1.1.5 NOTACIN POLONESA.
Como ejemplo de aplicacin de los mtodos considerados, evaluaremos la
expresin algebraica.

y=6 tg ( 3 x ) +

Que se encuentra representada por el rbol de la figura 5.


El primer rbol est construido de la siguiente forma:
Cada operador binario (+, -, *, /,..) constituye una raz de un rbol.
Cada operador (1n,..) constituye la raz de un rbol cuya rama es el operando.
Las constantes y las variables forman las hojas del rbol.
Si se recorre el rbol, se obtendr+las listas de los nudos en el orden siguiente:
+ 6 tg 3 x /
x

Si se
en el orden
* recorre el sentido contrario obtendremos la lista de los nudos
/
siguiente:
6
6

tg

tg

10
3

Figura 5. Ejemplo de notacin polonesa.

1.2 ACCIONES SEMNTICAS DE UN ANALIZADOR


Dependiendo del tipo de sentencias, las acciones semnticas pueden agruparse
en:
Sentencias de declaracin: completar la seccin de tipos de la tabla de
smbolos.
Sentencias ejecutables: realizar comprobaciones de tipos entre los
operandos.
Funciones y procedimientos: comprobar el nmero, orden y tipo de los
parmetros actuales en cada llamada a una funcin o procedimiento.
Identificacin de variables: comprobar si un identificador ha sido
declarado antes de utilizarlo.
Etiquetas: comprobar si hay etiquetas repetidas y validacin.
Constantes: comprobar que no se utilicen en la parte izquierda de una
asignacin.
Conversiones y equivalencias de tipo: verificacin.
Sobrecarga de operadores y funciones: detectar y solventar.
1.3 COMPROBACIONES DE TIPOS EN EXPRESIONES
Un aspecto importante del anlisis semntico es la comprobacin de los tipos de
las expresiones.

11

Un lenguaje con comprobacin fuerte de tipos es capaz de garantizar que los


programas se pueden ejecutar sin errores de tipo, por lo que los errores de tipo se
detectaran siempre en tiempo de compilacin.
Como mnimo, ante un error, un comprobador de tipos debe informar de la
naturaleza y posicin del error y recuperarse para continuar con la comprobacin
del resto del programa a analizar.
Algunas operaciones en una comprobacin de tipos son las siguientes:
Conversin de tipos: a veces es necesario transformar el tipo de una
expresin para utilizar correctamente un operador o para pasar de forma
adecuada un parmetro a una funcin.
Coercin: es una conversin de tipos que realiza de forma implcita el
propio compilador. Si es el programador el que realiza la conversin se
tratar entonces de una conversin explcita.
Sobrecarga de operadores: la sobrecarga se resuelve determinando el
tipo de cada una de las expresiones intervinientes en la sobrecarga.
Funciones polimrficas: son aquellas que trabajan con argumentos cuyo
tipo puede cambiar en distintas llamadas a la funcin.
1.4 PILA SEMNTICA EN UN ANALIZADOR SINTCTICO
Como podemos entender un analizador sintctico ascendente utiliza durante el
anlisis una pila. En esta va guardando datos que le permiten ir haciendo las
operaciones de reduccin que necesita.
Para incorporar acciones semnticas como lo es construir el rbol sintctico, es
necesario incorporar a la pila del analizador sintctico ascendente otra columna
que guarde los atributos de los smbolos que se van analizando

12

1.4.1 TEORA DE COLAS Y PILAS


Son estructuras de datos que se utilizan principalmente para simplificar ciertas
operaciones de programacin estas estructuras pueden implementarse mediante
arrays o listas enlazadas
Pila:
Una coleccin de datos a los cuales se les puede acceder mediante un extremo,
que se conoce generalmente como tope
Las pilas tienen 2 operaciones bsicas:
Push (para insertar un elemento).
Pop (para extraer un elemento).
Su caracterstica principal es que al extraer se obtiene siempre un ltimo
elemento que acaba de insertarse por esta razn por eso se conocen como
estructuras de datos lifo gracias a la pila es posible el uso de la recursividad la
variable a la que llama al mismo procedimiento en el que esta, habr que
guardarla as como el reto de las variables de la nueva llamada para huella de la
recursividad.
1.5 ESQUEMAS DE TRADUCCIN
Un esquema de traduccin es una gramtica atribuida en la que hay intercalados
en el lado derecho de las reglas de produccin, fragmentos de cdigo en un
lenguaje de programacin, que implementan acciones semnticas. Un ETDS es
una Definicin Dirigida por Sintaxis (DDS) en que se da un orden en la ejecucin
de las acciones semnticas. Las acciones semnticas se sitan a la derecha de los

13

smbolos a lo que se refieren y entre llaves. Esta regla de situar las acciones
semnticas despus de los smbolos que utilizan da un orden en su ejecucin.
Una caracterstica fundamental de un ETDS es que la traduccin pueda realizarse
de una sola pasada. Por lo tanto, un ETDS no permite herencia de los atributos
desde la derecha hacia la izquierda.
Por todo ello, un ETDS es una Gramtica con Atributos por la Izquierda (GAI) en
que se insertan acciones semnticas.
Los ETDS se utilizan a menudo para convertir un formato de un lenguaje en el
formato de otro lenguaje.
Si tenemos una gramtica y queremos que sea un ETDS, deberemos decidir los
atributos necesarios y asignarlos a los smbolos de la gramtica. Luego, debemos
insertar las acciones semnticas necesarias. En este segundo paso debemos tener
en cuenta que se deben cumplir las restricciones de un ETDS, es decir:
a) Si todos los atributos son sintetizados, pondremos las acciones
semnticas despus de los atributos implicados. Lo mejor es situarlas al
final de la regla de produccin. Para cada atributo sintetizado, siempre
hay que calcularlo despus de que hayan tomado valor todos los dems
atributos que intervienen en el clculo.
b) Si hay atributos heredados:
Un atributo heredado A.h debe calcularse antes de que aparezca el

smbolo A.
Un atributo sintetizado A.s no debe usarse antes de que aparezca el

smbolo A.
c) Una accin semntica no debe referirse a un atributo sintetizado de un
smbolo que est a la derecha de la accin.

14

1.6 GENERACIN DE LA TABLA DE SMBOLOS Y DE DIRECCIONES


Las tablas de smbolos (tambin llamadas tablas de identificadores y tablas de
nombres), realizan dos importantes funciones en el proceso de traduccin:
verificar que la semntica sea correcta y ayudar en la generacin apropiada de
cdigo. Ambas funciones se realizan insertando o recuperando desde la tabla de
smbolos los atributos de las variables usadas en el programa fuente. Estos
atributos, tales como: el nombre, tipo, direccin de almacenamiento y dimensin
de una variable, usualmente se encuentran explcitamente en las declaraciones o
ms implcitamente a travs del contexto en que aparecen los nombres de
variables en el programa.
Una de las estructuras de datos que se encuentran relacionadas con las fases del
proceso de compilacin es la tabla de smbolos, la cual tiene como propsito
registrar informacin que se comparte entre varias etapas y que permite
administrar los recursos asociados a las entidades que manipular el programa.
La tabla de smbolos tiene tpicamente la siguiente estructura:

Figura 6. Estructura tpica de una tabla de smbolos.


En donde vemos la designacin de la entidad y su token -derivados del anlisis
de lxico- as como una serie de atributos (tipo de dato, direccin en memoria)
que emanan de otras fases (anlisis gramatical y semntico). Las consultas a la

15

tabla de smbolos se realizan por medio del lexema con que se designa a la
entidad.
Esta concepcin de la tabla de smbolos es demasiado simple para fines
prcticos si consideramos que el lexema de la entidad es de longitud variable y se
desea que la estructura sea homognea. Una solucin es considerar que en el
campo lexema se tiene un apuntador (que siempre ocupa el mismo espacio)
hacia donde se registrarn propiamente los lexemas. Eso evitar el desperdicio
de memoria al tener el espacio justo para representar a cada lexema.

Figura 7. Representacin de direcciones en una tabla de smbolos.


La creacin de la tabla de smbolos compete inicialmente al analizador de lxico,
quien registrar a las entidades (reconocidas bajo el patrn de Identificador) de
manera nica, por medio del binomio de operaciones Bsqueda-Insercin. En el
contexto de un programa las entidades pueden describir propiamente objetos
manipulables por el lenguaje (por ejemplo variables, constantes o funciones) o
descriptores de acciones (las palabras reservadas); ambas situaciones son

16

reconocidas bajo el mismo patrn de identificador y la tabla de smbolos se


emplea para hacer su discriminacin.
1.6.1 CONTENIDO DE LA TABLA DE SMBOLOS
Una tabla de smbolos puede conceptualizarse como una serie de renglones,
cada uno de los cuales contiene una lista de valores de atributos que son
asociados con una variable en particular. Las clases de los atributos que
aparecen en una tabla de smbolos dependen en algn grado de la naturaleza
del lenguaje de programacin para el cual se escribe el compilador. Por ejemplo,
un lenguaje puede ser sin tipos, y por lo tanto el atributo tipo no necesita
aparecer en la tabla. Similarmente, la organizacin de la tabla de smbolos
variar dependiendo de las limitaciones de memoria y tiempo de acceso.
A continuacin se presenta un ejemplo de una tabla de smbolos tpica.

Los atributos que se manejan en la tabla anterior y que se describen enseguida,


no son estrictamente necesarios para todos los compiladores; sin embargo, cada
uno de tales atributos deber ser considerado para la implementacin de un
compilador de un compilador en particular.
Nombre de la variable.

17

Direccin del cdigo objeto.


Tipo.
Valor (o nmero de parmetros para uno procedimiento).
Nmero de lnea fuente donde fue declarada la variable.
Nmeros de lnea fuente donde se hace referencia a la variable.
Liga. Campo cuyos valores sirven para listar las variables en orden
alfabtico.

1.7 MANEJO DE ERRORES SEMNTICOS


Los errores que puede detectar el analizador sintctico son aquellos que violan las
reglas de una gramtica independiente del contexto. Algunas de las caractersticas
de un lenguaje de programacin no pueden enunciarse con reglas independientes
del contexto, ya que dependen de l; por ejemplo, la restriccin de que los
identificadores deben declararse previamente. Por lo tanto, los principales errores
semnticos son:
Identificadores no definidos.
Operadores y operandos incompatibles.
La mayora de los errores semnticos pueden ser detectados mediante la revisin
de la tabla de smbolos, suponiendo un tipo que se base en el contexto donde
ocurra o un tipo universal que permita al identificador ser un operando de cualquier
operador del lenguaje. Al hacerlo, evitamos la produccin de un mensaje de error
cada vez que se use la variable no definida. Si el tipo de un operando no
concuerda con los requisitos de tipo del operador, tambin es conveniente
reemplazar el operando con una variable ficticia de tipo universal.

18

CONCLUSIN
Nuestras conclusiones acerca del desarrollo de la unidad 1 es que gracias a dicha
actividad logramos capturar y entender nuevos conceptos y definiciones que al inicio del
curso de esta asignatura no contbamos.
En el desarrollo de esta unidad se describieron los arboles de expresiones as como cada
una de sus caractersticas que nos brindan conocimiento para poder entender el
procedimiento del anlisis en una representacin grfica mediante rboles.
Para el proceso del anlisis conlleva otros procesos ms relacionados tales como la
generacin de la tabla de smbolos, la comprobacin de tipos en expresiones, un esquema
de traduccin, entre otros.
La mayora de los procesos deben de esperar a que finalice uno para poder iniciar, adems
de que algunos otros procesos en el anlisis se repiten hasta validar las expresiones
correctas.

19

BIBLIOGRAFA
Arbones, M., & E.A. (1992). Tecnicas graficas en productica. Barcelona, Espaa:
MARCOMBO.
Cataln, J. R. (2010). Compiladores. Teora e implementacin. Madrid, Espaa:
Alfaomega.
Malisani Arbones, E. A. (1992). Tecnicas graficas en productica. Barcelona, Espaa:
MARCOMBO.
Snchez Dueas, G., & Valverde Andreu, J. A. (1990). Compiladores e interpretes. Un
enfoque pragmatico. Madrid: Daz de Santos.
V. Aho, A., Sethi, R., & D. Ullman, J. (1990). Compiladores. Principios, tcnicas y
herramientas. Massachusetts, EUA: Addison Wesley Longman.

20

21

Potrebbero piacerti anche