20.06.2013 Views

Acceso al documento en PDF - Biblioteca Nacional de Maestros

Acceso al documento en PDF - Biblioteca Nacional de Maestros

Acceso al documento en PDF - Biblioteca Nacional de Maestros

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.2.1.3 - La Tabla <strong>de</strong> Símbolos<br />

La administración <strong>de</strong> la tabla <strong>de</strong> símbolos se <strong>en</strong>cu<strong>en</strong>tra a cargo <strong>de</strong>l an<strong>al</strong>izador sintáctico. Dado que<br />

el l<strong>en</strong>guaje FP es un l<strong>en</strong>guaje aplicativo puro, la tarea <strong>de</strong>l administrador <strong>de</strong> la tabla <strong>de</strong> símbolos se vio<br />

reducida a los controles <strong>de</strong> re<strong>de</strong>finición <strong>de</strong> funciones y uso <strong>de</strong> un id<strong>en</strong>tificador <strong>de</strong> función no <strong>de</strong>finido.<br />

Una vez fin<strong>al</strong>izada la construcción <strong>de</strong>l an<strong>al</strong>izador sintáctico, se pudo id<strong>en</strong>tificar claram<strong>en</strong>te d<strong>en</strong>tro<br />

<strong>de</strong> este programa los puntos don<strong>de</strong> el administrador <strong>de</strong> la tabla <strong>de</strong> símbolos actuaría.<br />

Por un lado, se id<strong>en</strong>tificó, d<strong>en</strong>tro <strong>de</strong> la rutina <strong>en</strong>cargada <strong>de</strong>l no termin<strong>al</strong> <strong>de</strong> la gramática<br />

, un punto don<strong>de</strong> el administrador <strong>de</strong> la tabla <strong>de</strong> símbolos <strong>de</strong>be recuperar <strong>de</strong>l par (código,<br />

v<strong>al</strong>or) -<strong>de</strong>vuelto por ‘el an<strong>al</strong>izador lexicográfico <strong>al</strong> parser- el v<strong>al</strong>or. En este punto, el código correspon<strong>de</strong><br />

a un código <strong>de</strong> id<strong>en</strong>tificador <strong>de</strong> función y el v<strong>al</strong>or <strong>al</strong> id<strong>en</strong>tificador <strong>de</strong> la función. El administrador <strong>de</strong> ta<br />

<strong>en</strong>cargará <strong>de</strong> <strong>al</strong>mac<strong>en</strong>arlo, controlando previam<strong>en</strong>te que ya no exista, caso<br />

<strong>de</strong> errores se ocupará <strong>de</strong> informar el error <strong>de</strong> re<strong>de</strong>finición <strong>de</strong> función para<br />

Por otro lado, <strong>en</strong> la rutina correspondi<strong>en</strong>te <strong>al</strong> no termin<strong>al</strong> se pudo id<strong>en</strong>tificar otro<br />

punto don<strong>de</strong> también actuaría el administrador <strong>de</strong> la tabla <strong>de</strong> símbolos. Cuando el an<strong>al</strong>izador<br />

lexicográfico <strong>de</strong>vuelve <strong>al</strong> parser el código <strong>de</strong> id<strong>en</strong>tificador y el correspondi<strong>en</strong>te nombre <strong>de</strong>l mismo, el<br />

administrador <strong>de</strong> la fabla <strong>de</strong> símbolos chequeará si ese nombre se <strong>en</strong>cu<strong>en</strong>tra <strong>de</strong>finido, es <strong>de</strong>cir, si se<br />

<strong>en</strong>cu<strong>en</strong>tra <strong>al</strong>mac<strong>en</strong>ado <strong>en</strong> la tabla <strong>de</strong> símbolos, caso contrario, se informará el error correspondi<strong>en</strong>te <strong>al</strong><br />

uso <strong>de</strong> un id<strong>en</strong>tificador <strong>de</strong> función no <strong>de</strong>finido.<br />

La tabla <strong>de</strong> símbolos fue organizada como una lista <strong>en</strong>cad<strong>en</strong>ada, la que fue llamada LFDU por Lista<br />

<strong>de</strong> Funciones Definidas por el Usuario, <strong>en</strong> la que cada nodo correspon<strong>de</strong> a una función <strong>de</strong>finida <strong>en</strong> el<br />

programa. La información <strong>al</strong>mac<strong>en</strong>ada <strong>en</strong> cada nodo <strong>de</strong> la lista, correspondi<strong>en</strong>te a una función <strong>de</strong>finida<br />

<strong>en</strong> el programa, consiste <strong>en</strong> un par:<br />

Nombre<br />

Lista <strong>de</strong> composición<br />

Fig. 4 Información cont<strong>en</strong>ida <strong>en</strong> un nodo <strong>de</strong> LFDU<br />

don<strong>de</strong> Nombre correspon<strong>de</strong> <strong>al</strong> nombre <strong>de</strong> la función <strong>de</strong>finida y Lista <strong>de</strong> composición es el acceso a<br />

una lista, inici<strong>al</strong>m<strong>en</strong>te vacía, que cont<strong>en</strong>drá las distintas funciones que conforman la parte <strong>de</strong>recha <strong>de</strong> la<br />

<strong>de</strong>finición. Estas listas son construidas por el g<strong>en</strong>erador <strong>de</strong> código intermedio y serán explicadas con<br />

mayor <strong>de</strong>t<strong>al</strong>le <strong>en</strong> la etapa <strong>de</strong> construcción <strong>de</strong>l g<strong>en</strong>erador <strong>de</strong> código intermedio.<br />

De esta forma, por ejemplo para el sigui<strong>en</strong>te programa funcion<strong>al</strong><br />

(Este programa c<strong>al</strong>cula la longitud <strong>de</strong> una secu<strong>en</strong>cia )<br />

Fig. 5 Ejemplo <strong>de</strong> programa<br />

t<strong>en</strong>dremos que la tabla <strong>de</strong> símbolos, cont<strong>en</strong>drá la sigui<strong>en</strong>te información:<br />

!<br />

LFDU<br />

Fig. 6 Tabla <strong>de</strong> símbolos para el programa <strong>de</strong> la figura 5.<br />

233

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!