Está en la página 1de 6

Alexis Andrade Loeza

Superior de Valladolid.

Instituto Tecnolgico

1.3 Comprobaciones de tipos en expresiones.


La verificacin o comprobacin de tipos es una tcnica utilizada para asegurar
que un programa obedece las reglas de compatibilidad especficas del lenguaje
de programacin utilizado y se puede realizar de dos formas: En tiempo de
ejecucin o de manera esttica.
La verificacin o comprobacin de los tipos de datos se hace asignando
el valor de tipo de cada una de los componentes lxicos.
Estos valores se comparan para verificar que los tipos de datos
coincidan y sean congruentes, de lo contrario no se pueden realizar los
clculos.
Cuando mezclamos diferentes tipos en una misma expresin o que
llamamos una rutina que no existe un error semntico.
Una de las funciones del analizador semntico es verificar que los tipos
de una expresin sean compatibles entre s.
Para hacer lo anterior el compilador cuenta con informacin de los
atributos (tipos, tamao, nmero de argumento, etc.) de los
identificadores en una tabla de smbolos.
Hay situaciones en las cuales se tiene un valor de un tipo dado y se desea
almacenar ese valor en una variable de un tipo diferente.
En algunos tipos es posible almacenar simplemente el valor sin una
conversin de tipos; lo que se denomina conversin automtica.
Existen dos tipos de comprobacin: Esttica y Dinmica.
La comprobacin ayuda a evitar la mayora de los errores de
programacin.
Para saber si el operador aplicado a los operadores es correcto.
Comprobacin de flujo de control: Se debe verificar que las instrucciones
que cambia el flujo de un programa sean vlidos. Ejemplo: break, goto.
Comprobacin de unicidad: Definir un objeto una sola vez.
Comprobacin relacionada con nombres: El mismo nombre debe aparecer
dos veces. Variables que se declaran pero no utilizan.
La comprobacin de tipos es la ms complicada. Las dems comprobaciones
son rutinarias.
El operador %: Ocupa que los dos operandos sean enteros.
Signo +: Es una funcin suma (a, b) que est sobrecargada para distintos tipos
de datos.

Alexis Andrade Loeza


Superior de Valladolid.

Instituto Tecnolgico

Siempre se disean reglas de tipos como los valores numricos se


convierten al de mayor jerarqua o el tipo de datos punteros slo apunta
al tipo de datos declarado.
Algunos lenguajes revisan el tamao de los arreglos (Java) de manera
esttica otros lo hacen de manera dinmica (en tiempo de ejecucin).
Al conjunto de reglas que se definen para la comprobacin de los tipos
de datos se denomina sistema de tipos.
La mayora de veces la recuperacin de errores se suele omitir ya que el
programa no finaliza pero tal vez no obtenga los valores deseados.
1.4 Pila semntica en un analizador sintctico.
DEFINICIN Y DESCRIPCIN
Anlisis Semntico
Detecta la validez semntica de las sentencias aceptadas por el analizador
sintctico. El analizador semntico suele trabajar simultneamente al
analizador sintctico. Se entiende por semntica al conjunto de reglas que
especifican el significado de cualquier sentencia sintcticamente correcta y
escrita en un determinado lenguaje. Las rutinas semnticas deben realizar la
evaluacin de los atributos de las gramticas siguiendo las reglas semnticas
asociadas a cada produccin de la gramtica.
Anlisis Sintctico
Analiza el smbolo, la pila y el estado del autmata, produce las estructuras
necesarias para la siguiente etapa y en el caso de compilacin dirigida por la
sintaxis invoca llamadas directas al analizador semntico y al generador de
cdigo. Escribe mensajes de errores y trata de limitar el efecto de estos
errores.
"Reconoce la estructura de una cadena de componentes lxicos".

Alexis Andrade Loeza


Superior de Valladolid.

Instituto Tecnolgico

Teora de Pilas Y Colas


Son estructuras de datos que se utilizan generalmente para simplificar ciertas
operaciones de programacin.
Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Al
utilizar arreglos para implementar pilas se tiene la limitacin de que se debe
reservar el espacio en memoria con anticipacin.
Una vez dado un mximo de capacidad a la pila no es posible insertar un
nmero de elementos mayor que el mximo establecido.
Una posible solucin a este tipo de inconvenientes consiste en definir pilas de
gran tamao, pero esto resultar ineficiente y costoso.
No siempre es viable saber con exactitud el nmero de elementos a tratar, y
siempre existe la posibilidad de que ocurra un error de desbordamiento.
Colas

Tambin son llamadas FIFO (First In First Out), que quiere decir El primero
que entra es el primero que sale. 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.
1. Colas Simples
Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta
por el final y se saca por el principio. Para gestionar este tipo de cola hay que
recordar siempre cual es el siguiente elemento que se va a leer y cul es el
ltimo elemento que se ha introducido.
2. Colas Circulares
En las colas circulares se considera que despus del ltimo elemento se
accede de nuevo al primero. De esta forma se reutilizan las posiciones
extradas, el final de la cola es a su vez el principio, crendose un circuito
cerrado.
3. Colas con Prioridad
Las colas con prioridad se implementan mediante listas o arrays Ordenados.
No nos interesa en este caso que salgan en el orden de entrada sino con una
prioridad que le asignemos. Puede darse el caso que existan varios elementos

Alexis Andrade Loeza


Superior de Valladolid.

Instituto Tecnolgico

con la misma prioridad, en este caso saldr primero aquel que primero llego
(FIFO).
Reglas semnticas
Conjunto de normas y especificaciones que definen al lenguaje de
programacin y estn dadas por la sintaxis del lenguaje, las reglas semnticas
asignan un significado lgico a ciertas expresiones definidas en la sintaxis del
lenguaje.
Analizador Sintctico Descendente
Parten del axioma inicial de la gramtica, se va descendiendo utilizando las
derivaciones izquierdas, hasta llegar a construir la cadena analizada.
Analizador Sintctico Ascendente
Se va construyendo el rbol desde sus nodos terminales. Es decir, se
construye desde los smbolos de la cadena hasta llegar al axioma de la
gramtica. 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; para la integracin total del sistema. El Diseo
Descendente es un mtodo para resolver el problema que posteriormente se
traducir a un lenguaje comprensible por la computadora. Es el proceso
mediante el cual un problema se descompone en una serie de niveles o pasos
sucesivos de refinamiento. La metodologa descendiente consiste en efectuar
una relacin entre las sucesivas etapas de estructuracin de modo que se
relacionen unas con otras mediante entradas y salidas de informacin.
Pila

Una coleccin de datos a los cuales se les puede acceder mediante un


extremo, que se conoce generalmente como tope.
Las Pilas tienen dos operaciones bsicas:

Alexis Andrade Loeza


Superior de Valladolid.

Instituto Tecnolgico

Push (para insertar un elemento)


Pop (para extraer un elemento).
Gracias a las pilas es posible el uso de la recursividad. La variable que llama al
mismo procedimiento en el que est, habr que guardarla as como el resto de
variables de la nueva llamada, para a la vuelta de la recursividad ir sacndolas,
esto es posible a la implementacin de pilas Su caracterstica fundamental es
que al extraer se obtiene siempre el ltimo elemento que acaba de insertarse.
Por esta razn tambin se conocen como estructuras de datos LIFO.
CARACTERSTICAS

Su caracterstica fundamental es que al extraer se obtiene siempre el


ltimo elemento que acaba de insertarse. Por esta razn tambin se
conocen como estructuras de datos LIFO (del ingls Last In First Out).
Una posible implementacin mediante listas enlazadas sera insertando
y extrayendo siempre por el principio de la lista.
Gracias a las pilas es posible el uso de la recursividad. La variable que
llama al mismo procedimiento en el que est, habr que guardarla as
como el resto de variables de la nueva llamada, para a la vuelta de la
recursividad ir sacndolas, esto es posible a la implementacin de pilas.
Contiene la informacin semntica asociada a los operandos (y a veces
a los operadores) en forma de registros semnticos.
Los Autmatas con Pila son una extensin de los AFD a los que se les
aade una memoria (pila).
En la pila se almacenan smbolos de la cadena de entrada y de la
gramtica, as como caracteres especiales (#) para indicar el estado de
pila vaca.
Las transiciones son de la forma: (p, x, s; q, t):
p=estado inicial
q=estado al que llega
x= smbolo de la cadena de entrada
s=smbolo que se desapila
t=smbolo que se apila

Una pila es utilizada para almacenar el prefijo viable de una forma


sentencial de una derivacin ms a la derecha. Los smbolos, y son
utilizados para identificar el pivote, por lo tanto sabremos cuando
Desplazar o cuando Reducir.

Alexis Andrade Loeza


Superior de Valladolid.

Instituto Tecnolgico

VENTAJAS

Es posible el uso de la recursividad. La variable que llama al mismo


procedimiento en el que est, habr que guardarla as como el resto de
variables de la nueva llamada, para a la vuelta de la recursividad ir
sacndolas, esto es posible a la implementacin de pilas.
Simplifican ciertas operaciones de programacin. Se pueden
implementar mediante arrays o listas enlazadas.

DESVENTAJAS

Se tiene la limitacin de que se debe reservar el espacio en memoria


con anticipacin. Una vez dado un mximo de capacidad a la pila no es
posible insertar un nmero de elementos mayor que el mximo
establecido.
Si esto ocurre, en otras palabras si la pila est llena y se intenta insertar
un nuevo elemento, se producir un error conocido como
desbordamiento-overflow.
Se deben definir pilas de gran tamao, pero esto resultar ineficiente y
costoso.
No siempre es viable saber con exactitud el nmero de elementos a
tratar, y siempre existe la posibilidad de que ocurra el error de
desbordamiento.