Unidad 1 Analisis Semantico

download Unidad 1 Analisis Semantico

of 21

description

Automtas II

Transcript of Unidad 1 Analisis Semantico

INSTITUTO TECNOLGICO DE ACAPULCO

UNIDAD 1:ANLISIS SEMNTICOEQUIPO # 1 OZUNA PREZ MARTIN ALBERTO OLIVARES SOLS RICARDO JACOB RODRIGUEZ RAYO EDUARDO

CONTENIDOINTRODUCCIN31.ANALISIS SEMNTICO41.1ARBOLES DE EXPRESIONES41.1.1ARBOLES EN INFORMATICA61.1.2DEFINICION RECURSIVA.61.1.3REPRESENTACION DE UN ARBOL GENERAL71.1.4ARBOL BINARIO91.1.5NOTACION POLONESA.101.2ACCIONES SEMNTICAS DE UN ANALIZADOR111.3COMPROBACIONES DE TIPOS EN EXPRESIONES111.4PILA SEMNTICA EN UN ANALIZADOR SINTCTICO121.4.1TEORA DE COLAS Y PILAS131.5ESQUEMAS DE TRADUCCIN131.6GENERACIN DE LA TABLA DE SMBOLOS Y DE DIRECCIONES151.6.1CONTENIDO DE LA TABLA DE SMBOLOS171.7MANEJO DE ERRORES SEMNTICOS18CONCLUSIN20BIBLIOGRAFA21

INTRODUCCINEn 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 especficoEn el ltimo punto se dar a conocer nuestras conclusiones como equipo referente al desarrollo de esta unidad que a continuacin se presentar.

1. ANLISIS SEMNTICOLa 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 EXPRESIONESExpresin: 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 INFORMATICAEl 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 GENERALLa representacin y nomenclatura de los rboles se realiza con las tpicas notaciones de las relaciones familiares en los rboles genealgicos:NIVEL 0: A = RAIZNIVEL 1: {B}, {C, D, F, G} = 2 subrboles.NIVEL 2: {D}, {E}, {F, G}= 3 subrbolesNIVEL 3: {G}= 1 subrbol.NIVELES DE UN arbol

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 BINARIOExiste 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.

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 / xSi se recorre el sentido contrario obtendremos la lista de los nudos en el orden siguiente:6 3 x tg x / ++*/ tg6*XX3

Figura 5. Ejemplo de notacin polonesa.

1.2 ACCIONES SEMNTICAS DE UN ANALIZADORDependiendo 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 EXPRESIONESUn aspecto importante del anlisis semntico es la comprobacin de los tipos de las expresiones.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 SINTCTICOComo 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 analizando1.4.1 TEORA DE COLAS Y PILASSon 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 TRADUCCINUn 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 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.1.6 GENERACIN DE LA TABLA DE SMBOLOS Y DE DIRECCIONESLas 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 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 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 SMBOLOSUna 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. 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 SEMNTICOSLos 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.

CONCLUSINNuestras 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.

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.

1

20