Está en la página 1de 26

1.

4 Pila semntica en
analizador sintctico
Eduardo Antonio Crdenas Rincn

Francisco Alonso Esquivel
Definiciones
Sez (2010) Define Un tipo abstracto de datos (abreviadamente
TAD) es un tipo de datos al cual se ha aadido el concepto de
abstraccin para indicar que la implementacin del tipo es invisible
para los usuarios del tipo. (p. 6). Aqu nos dice que hay tipos de
datos que no son visibles para usuarios normales

Sez (2010) Menciona que Una pila es un TAD que se caracteriza por
el hecho que el ltimo elemento en entrar es el primero en salir.(p.
9). Nos dice que la pila es un tipo de datos que no es visible por el
usuario normal
Sez (2010) Menciona que En ingls una pila se suele denominar
con las siglas LIFO (last in first out).(p. 9). Nos muestra una forma en
que se puede encontrar las pilas sobre cmo se llaman y este nombre
nos muestra su naturaleza como lo es que las pilas se basan en que el
primero en entrar es el primero en salir.

Sez (2010) Nos dice que la definicin de una pila Indica que todas
las operaciones trabajan sobre el mismo extremo de la secuencia. En
otras palabras, los elementos se sacan de la estructura en el orden
inverso al orden en que se han insertado, ya que el nico elemento de
la secuencia que se puede obtener es el ltimo. (p. 9). Aqu nos
explica su mecanismo en el que el primero en entrar ser el ltimo en
salir de la pila

Gonzlez (2013) dice que las pilas organizan los datos: A partir de
una direccin de memoria, los datos se almacenan como si fueran
una coleccin ordenada de elementos (cartas, platos, libros, camisas,
etc).(p. 6). En las pilas todo dato que se guarde se hace de forma
ordenada nunca se guardan en forma desordenada



Gonzlez (2013) dice que las caractersticas de una pila son:

Homognea: almacena elementos del mismo tipo.
Dinmica: permite agregar y sacar elementos duran te la ejecucin
del programa.
Acceso LIFO:(Last In First Out)
En cualquier momento se puede recuperar el objeto que se encuentra
al tope de la pila. (p. 4). Las pilas deben de ser homogneas no es
posible hacer una pila que tenga distintos tipos de datos

Gonzlez (2013) dice que las operaciones de una pila son:

Crear una pila.
Agregar un elemento.
Sacar un elemento.
Poder saber cul es el elemento que est al tope de la pila.
Cantidad de elementos de la pila.
Saber si una pila est vaca. (p. 5) hay diversas operaciones en una
pila como lo son las bsicas agregar y eliminar elementos
Sez (2010) Menciona que En ingls, una cola suele denominarse
con las siglas FIFO (first in first out). (p. 16).aqu nos dice que el
nombre de una cola es fifo y nos da una breve explicacin de cmo
es una cola que el primero en entrar es el primero en salir.

Sez (2010) Nos dice que la definicin de una cola indica que las
operaciones trabajan sobre ambos extremos de la secuencia: un
extremo para aadir los elementos y el otro para consultarlos o
extraerlos. En otras palabras, los elementos se extraen en el mismo
orden en que se han insertado previamente, ya que se insertan por el
final de la secuencia y se extraen por la cabecera. (p. 16). A
diferencia de la pila la cola recibe datos por un extremo y los elimina
por el otro extremo

Gonzlez (2013) dice que en una cola: Los datos se almacenan
sucesivamente como si fueran una coleccin ordenada de elementos,
En cualquier momento se puede recuperar el objeto que se encuentra
primero en la estructura. (p. 17) nos dice aqu que los datos se
almacenan uno detrs del otro

Gonzlez (2013) dice que las caractersticas de una cola son:

Homognea: almacena elementos del mismo tipo.
Dinmica: permite agregar y sacar elementos durante la ejecucin del
programa.
Acceso FIFO:(First In First Out)
En cualquier momento se puede recuperar el elemento que se
encuentra en el frente de la cola. (p. 18). Aqu podemos observar las
caractersticas de una cola donde tiene la misma caracterstica que es
homognea de la pila.

Gonzlez (2013) dice que las operaciones de una cola son:

Crear una cola.
Agregar un elemento.
Sacar un elemento.
Poder saber cul es el elemento que est al frente.
Poder saber cul es el elemento que est al fondo.
Cantidad de elementos.
Saber si una cola est vaca. (p. 19). Nos muestra las operaciones de una
cola donde tambin se pude eliminar y agregar elementos a esta

Aho y ullman (s.f) nos hablan sobre el anlisis sintctico que El
anlisis jerrquico se denomina anlisis sintctico. Este implica
agrupar los componentes lxicos del programa fuente en frases
gramaticales que el compilador utiliza para sintetizar la salida. (p. 6).
Nos dicen que el anlisis sintctico es solo el orden de las cosas.

Aho y ullman (s.f) nos dicen Por lo general, las frases gramaticales
del programa fuente se representan mediante un rbol de anlisis
sintctico (p. 6). Aqu vemos el rbol de anlisis sintctico que
muestra que el orden es lo que importa en el anlisis sintctico.

Aho y ullman (s.f) nos hablan de 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. (p. 8) el anlisis semntico trata
de hallar errores de los tipos de datos

Aho y ullman (s.f) no dicen que las fases 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 adems en ella se utiliza la estructura
jerrquica determinada por la fase de anlisis sintctico para
identificar los operadores y operando de expresiones y
proposiciones (p. 9). En el anlisis semntico utiliza la estructura del
anlisis sintctico.

#include<iostream.h>
#include<conio.h>
void main()
{
int pila [10];
int maxpila=10,alto=0;
char resp;
int trans=4;
cout<<"\t\tPROGRAMA QUE INSERTA Y ELIMINA ELEMETOS DE
UNA PILA:\n\n\n";
cout<<"TECLEE LA LETRA CORRESPONDIENTE A LA OPCION QUE
ELIJA DEL MENU:\n\n";

while(trans==4)
{
while(trans>=0||trans<=3)
{
cout<<"\t I-INSERCION DE DATOS\n\t B-BORRADO DE DATOS\n\t V-VISUALIZACION
DE DATOS\n\t O-Suma de los datos\n\t S-SALIR\n";
cin>>resp;
if(resp=='i'||resp=='I')
trans=1;
if(resp=='b'||resp=='B')
trans=0;
if(resp=='v'||resp=='V')
trans=2;
if(resp=='o'||resp=='O')
trans=3;
if(resp=='s'||resp=='S')
trans=-1;
clrscr();
if(trans==1)

{
if(alto==maxpila)
{
cout<<"LA PILA ESTA LLENA, NO ES POSIBLE INSERTAR MAS
LEMENTOS";
getch();
clrscr();
trans=4;
}
else
{
cout<<"INSERTE UN ELEMENTO:\n";
cin>>pila[alto];
alto++;
clrscr();
trans=4;
}
}

if(trans==0)
{
if(alto==0)
{
gotoxy(3,6);
cout<<"LA PILA ESTA VACIA, NO HAY ELEMENTOS
QUE ELIMINAR:\n\n";
getch();
clrscr();
trans=4;
}
else
{
gotoxy(3,8);
cout<<"SE
ELIMINARA EL NUMERO:"<<pila[ alto-1 ];
alto--;
getch();
clrscr();
trans=4;
}
}
if(trans==2)
{
if(alto==0)
{
cout<<"NO HAY ELEMENTOS
GUARDADOS EN LA PILA, HASTA AHORA:\n";
getch();
clrscr();
trans=4;
}
else
{
cout<<"LOS ELEMENTEOS DE LA
PILA AHORA SON:\n\n";
for(int i=alto-1;i>=0;i--)
{
cout<<pila[i]<<"\n";
}}
}
if(trans==3)
{
if(alto==0)
{
gotoxy(3,6);
cout<<"LA PILA ESTA
VACIA, NO HAY ELEMENTOS QUE SUMAR:\n\n";
getch();
clrscr();
trans=4;

else
{ int sum=0,j;

cout<<"\nSE
SUMARAN LOS SIGUIENTES NUMEROS: ";
for(j=alto-1;j>=0;j--)
{

cout<<pila[j]<<"\t";

sum=sum+pila[j];
}
cout<<"\n\nLA
SUMA DE TODOS LOS VALORES ES: "<<sum;
getch();
clrscr();
trans=4;
}
}
getch();
clrscr();
trans=4;
}
}
if(trans==-1)
{

trans=5;
getch();
}


getch();
}

Ejercicios
1.- Crear pila en la que se pueda insertar un elemento

2.- Crear pila en la que se pueda borrar un elemento

3.- Crear pila en la que se pueda visualizar elementos

Consideraciones usar variables
pila[5] (Donde esta variable representa el tamao de elementos de la pila
maxpila=5 (Donde esta variable representa el limite de elementos de la pila y
alto=0 (donde esta variable representa el lugar en el que se ecuentra el element
en la pila). Todas las variables son de tipo entero.
Conclusin:

En todo el documento hablamos de las pilas e incluso de las colas como
estructuras de datos pues es necesario estos conocimientos para poder entender
ms adelante la informacin conseguida, adems hablamos de lo que son los
anlisis sintctico y de anlisis semntico, explicamos cmo funcionan siendo el
anlisis sintctico, el que se encarga de verificar el programa para poder observar
el orden de todo el documento para esto se utiliza un rbol con jerarqua que las
ordena, en el anlisis semntica se verifican los tipos de datos que estos estn
bien puestos pues no es posible restarle a un tipo de dato entero un tipo de dato
carcter, esto genera un error, para poder definir y analizar los tipos de datos es
necesario hacer primero el anlisis sintctico, esto quiere decir que para poder
realizar el anlisis semntico primero deberemos tener hecho el anlisis
sintctico, las pilas son necesarias para poder almacenar los datos en esta y
sacarlos en un determinado orden .

Bibliografa:
Aho, A. V. y Ullman, J. D. (s.f.). Compiladores: principios, tcnicas y herramientas. Dragon
book, Mxico.

Alfonseca, M. (s.f.) Anlisis semntico. Espaa. Disponible en
http://arantxa.ii.uam.es/~alfonsec/docs/compila5.htm

Arteaga, J. J. y Encarnacin, E. I. y Gmez, G. y Gonzales, N. G y Rodrguez, S. (2010) Anlisis
Semntico. Mxico. Disponible en
http://cursocompiladoresuaeh.blogspot.mx/2010/11/unidad-vi-analisis-semantico.html

Gonzlez, A. H. (2013) Tipo de dato Abstracto (Tad) PILAS COLAS. Argentina. Disponible en
http://sedici.unlp.edu.ar/handle/10915/33386

Moreno, F. J. (s.f.) Anlisis sintctico descendente. Espaa. Disponible en
http://www.uhu.es/francisco.moreno/gii_pl/docs/Tema_3.pdf

Sez, X. (2010). Estructuras de datos bsicas. Eureca Media, SL. Espaa. Disponible en
http://www.cartagena99.com/recursos/alumnos/temarios/Estructuras%20de%20datos%20b
asicas.pdf

También podría gustarte