You are on page 1of 7

Instituto Tecnolgico de Tecnolgico de Cd.

Jimnez

-Alma Karina Herrada Balderas -Nancy Acosta Rodriguez -Sergio Alan Villegas Payan

Septimo semestre.
Septiembre de 2013

Introduccion
En este apartado hablaremos de la pila semntica en un analizador lxico veremos su concepto y un ejemplo del mismo, tambin hablaremos del concepto de esquemas de traduccin dirigidos por sintaxis y asi ser mas fcil desarrollar un lenguaje de anlisis sintctico ms completo y correcto.

Pila Semantica en un Analizador Lexico.


Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfolgico y sintctico. El anlisis semntico utiliza como entrada el rbol sintctico detectado por el anlisis sintctico para comprobar restricciones de tipo y otras limitaciones semnticas y preparar la generacin de cdigo. En compiladores de un solo paso, las llamadas a las rutinas semnticas se realizan directamente desde el analizador sintctico y son dichas rutinas las que llaman al generador de cdigo. El instrumento ms utilizado para conseguirlo es la gramtica de atributos. En compiladores de dos o ms pasos, el anlisis semntico se realiza independientemente de la generacin de cdigo, pasndose informacin a travs de un archivo intermedio, que normalmente contiene informacin sobre el rbol sintctico en forma linealizada (para facilitar su manejo y hacer posible su almacenamiento en memoria auxiliar). En cualquier caso, las rutinas semnticas suelen hacer uso de una pila (la pila semntica) que contiene la informacin semntica asociada a los operandos (y a veces a los operadores) en forma de registros semnticos.

Esquemas de Traduccion Dirigidos por Sintaxis


Son una notacin complementaria a las deniciones dirigidas por sintaxis. Consiste en una gramtica incontextual con fragmentos de programa insertados en medio del cuerpo de las producciones. Los fragmentos se llaman acciones semnticas. Un esquema de traduccin dirigido por sintaxis se puede implementar construyendo el rbol de anlisis sintctico y luego realizar un recorrido en pre orden del rbol ejecutando las acciones semnticas. Hay dos combinaciones que funcionan muy bien: Una gramtica LR y reglas semnticas S-atribuidas Una gramtica LL y reglas semnticas L-atribuidas En ambos casos, las reglas semnticas de una denicion dirigida por sintaxis se pueden convertir en un esquema de traduccin con acciones que pueden realizarse en el momento apropiado.

Ejemplo de una Pila Semantica


El ejemplo de cdigo siguiente muestra cmo declarar instancias de tipos de referencia con la semntica de la pila, cmo funciona el constructor del operador de asignacin y copiar, y cmo inicializar una referencia de seguimiento con el tipo de referencia creado mediante la semntica de la pila.

Cdigo
// stack_semantics_for_reference_types.cpp // compile with: /clr ref class R { public: int i; R(){} // assignment operator void operator=(R% r) { i = r.i; } // copy constructor R(R% r) : i(r.i) {} }; void Test(R r) {} // requires copy constructor int main() { R r1; r1.i = 98; R r2(r1); // requires copy constructor System::Console::WriteLine(r1.i); System::Console::WriteLine(r2.i); // use % unary operator to convert instance using stack semantics // to its underlying handle R ^ r3 = %r1; System::Console::WriteLine(r3->i); Test(r1); R r4; R r5; r5.i = 13; r4 = r5; // requires a user-defined assignment operator System::Console::WriteLine(r4.i); // initialize tracking reference R % r6 = r4; System::Console::WriteLine(r6.i); }

Ejemplo de Esquema de Traduccion


Considera la gramtica:

Donde las categoras lxicas apar y cpar corresponden a parntesis (de apertura y cierre, respectivamente) y acor y ccor, anlogamente, corresponden a corchetes. Observa que esta gramtica permite utilizar un delimitador de cierre de tipo distinto al utilizado en la apertura (abrir un corchete y cerrar un parntesis, por ejemplo), una circunstancia que se desea controlar semnticamente. Se trata, por lo tanto, de aadir acciones semnticas a la gramtica anterior de forma que el esquema de traduccin resultante pueda sintetizar, mientras lleva a cabo un anlisis LL(1) de su entrada, un atributo lgico hLisi.ok que indique si se ha utilizado el mismo tipo de delimitador en apertura y cierre (valor Cierto) o no ha sido as (valor Falso). Adems, ten en cuenta las Siguientes restricciones: No puedes utilizar ningn objeto global. Todos los atributos deben ser de tipo lgico. Solo se permiten acciones semnticas en el extremo derecho de la parte derecha de cada produccin in-contextual. Y debes documentar de forma clara y concisa el signicado de cada atributo. Por ejemplo: Atributo hLisi.ok: valor Cierto solo si en la lista se utiliza el mismo tipo de delimitador para la apertura y el cierre.

Conclusion
En importante conocer los conceptos, algunos ejemplos y aplicaciones de la pila semntica en un analizador lxico as como mtodos y las funciones que se realizan en un programa.

You might also like