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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

automatizar y organizar perfectam<strong>en</strong>te cada paso. De esta forma se logra trabajar con un l<strong>en</strong>guaje<br />

escrito -con todas las <strong>de</strong>sv<strong>en</strong>tajas que pose<strong>en</strong>- y a su vez ahorrar tiempo.<br />

A continuación se <strong>de</strong>scribirán los módulos fundam<strong>en</strong>t<strong>al</strong>es <strong>de</strong>l proyecto. En ellos se observará<br />

la fusión <strong>de</strong> diversas tecnologías <strong>de</strong> software involucradas.<br />

2.3. Compiladores.<br />

Un compilador es un programa o grupo <strong>de</strong> programas que traduc<strong>en</strong> un l<strong>en</strong>guaje <strong>en</strong> otro. Los<br />

compiladores tradicion<strong>al</strong>es se separan <strong>en</strong> difer<strong>en</strong>tes secciones d<strong>en</strong>ominadas “pasadas”, que se<br />

intercomunican a través <strong>de</strong> archivos temporarios. La estructura típica <strong>de</strong> un compilador consiste <strong>en</strong><br />

cuatro pasadas.<br />

La primera, pasada es el preprocesador. Norm<strong>al</strong>m<strong>en</strong>te el preprocesador hace la substitución<br />

por macros, anula los com<strong>en</strong>tarios y re<strong>al</strong>iza otra serte <strong>de</strong> tareas secundarias. La segunda pasada es<br />

el corazón <strong>de</strong>l compilador. Se compone <strong>de</strong>l an<strong>al</strong>izador <strong>de</strong> léxico, el parser y el g<strong>en</strong>erador <strong>de</strong> código.<br />

Se <strong>en</strong>carga <strong>de</strong> traducir el código fu<strong>en</strong>te <strong>en</strong> un l<strong>en</strong>guaje intermedio más parecido <strong>al</strong> l<strong>en</strong>guaje fin<strong>al</strong>. La<br />

tercera pasada es el optimizador, el cu<strong>al</strong> mejora la c<strong>al</strong>idad <strong>de</strong>l código intermedio g<strong>en</strong>erado, y la<br />

Cuarta pasada es el back <strong>en</strong>d, el cu<strong>al</strong> traduce el código optimizado <strong>en</strong> el l<strong>en</strong>guaje fin<strong>al</strong>. Por supuesto,<br />

exist<strong>en</strong> muchas variaciones sobre esta estructura. Nuestro <strong>de</strong>sarrollo se basa <strong>en</strong> un compilador <strong>de</strong><br />

dos pasadas.<br />

2.3. 1. Compilador <strong>de</strong> Bloques.<br />

El punto <strong>de</strong> partida es la g<strong>en</strong>eración <strong>de</strong> los bloques. Para ello, un pot<strong>en</strong>te editor <strong>de</strong> bloques<br />

ayuda <strong>en</strong> forma interactiva <strong>al</strong> <strong>de</strong>sarrollador. Para cada grupo se <strong>de</strong>fine un “mundo” 0 proyecto <strong>en</strong><br />

don<strong>de</strong> se incluy<strong>en</strong> las reglas <strong>de</strong> diseño <strong>de</strong>l fabricante seleccionadas, las reglas <strong>de</strong> restricciones y<br />

variables g<strong>en</strong>er<strong>al</strong>es que se emplearán más a<strong>de</strong>lante.<br />

Una vez <strong>de</strong>finida la parte g<strong>en</strong>er<strong>al</strong> <strong>de</strong>l “mundo” <strong>de</strong>l grupo, se crea una estructura <strong>de</strong> árbol <strong>de</strong><br />

un nivel o rama <strong>en</strong> don<strong>de</strong> cada nodo posee:<br />

reglas macro, conformadas por la combinación <strong>de</strong> diversas reglas <strong>de</strong> diseño. Se<br />

utilizan para simplificar los parámetros <strong>en</strong> el diseño <strong>de</strong>l bloque.<br />

0 sub-bloques, para crear bloques <strong>en</strong> forma más rápida.<br />

bloques, son la parte fundam<strong>en</strong>t<strong>al</strong> <strong>de</strong> la estructura.<br />

Es posible crear varios nodos <strong>de</strong>s<strong>de</strong> la raíz, pero no se pued<strong>en</strong> crear nodos que <strong>de</strong>p<strong>en</strong>dan <strong>de</strong><br />

otros nodos. Es <strong>de</strong>cir, se acepta un solo nivel.<br />

Se proce<strong>de</strong> a continuación a g<strong>en</strong>erar un bloque. Se <strong>de</strong>fin<strong>en</strong> todas las capas <strong>de</strong>l layout <strong>en</strong> el<br />

l<strong>en</strong>guaje propio <strong>de</strong>l compilador <strong>de</strong> bloques y se indican los puertos <strong>de</strong> <strong>en</strong>trada/s<strong>al</strong>ida para su futura<br />

ext<strong>en</strong>sión. Esto será explicado <strong>en</strong> la sección sigui<strong>en</strong>te.<br />

Una característica importante <strong>de</strong>l compilador es que permite que el conjunto <strong>de</strong> instrucciones<br />

disponibles para la <strong>de</strong>finición <strong>de</strong> los bloques sea ampliado.<br />

Para agregar sub-bloques simplem<strong>en</strong>te se indica con una instrucción y se <strong>de</strong>fine la posición<br />

que va a tomar d<strong>en</strong>tro <strong>de</strong>l bloque.<br />

Las variables g<strong>en</strong>er<strong>al</strong>es y las reglas <strong>de</strong> diseño son empleadas <strong>en</strong> todos los nodos. Cada nodo<br />

pue<strong>de</strong> g<strong>en</strong>erar nuevas reglas macro pero estas reglas son propias <strong>de</strong>l nodo y no pued<strong>en</strong> ser<br />

compartidas con otros nodos.<br />

2.3.2. Compilador <strong>de</strong> Grupo.<br />

El Editor <strong>de</strong> Grupo es el <strong>en</strong>cargado <strong>de</strong> <strong>de</strong>finir la planilla. Se <strong>de</strong>be <strong>de</strong>finir un bloque o conjunto<br />

<strong>de</strong> bloques para cada celda. En este último caso, se <strong>de</strong>be agregar una condición para que el<br />

Compilador <strong>de</strong>fina que bloque va a insertar <strong>en</strong> la celda. Para la resolución <strong>de</strong> estas condiciones es<br />

necesario emplear las variables g<strong>en</strong>er<strong>al</strong>es <strong>de</strong>finidas <strong>en</strong> el mundo <strong>de</strong>l grupo.<br />

El compilador no permite que se superpongan bloques <strong>en</strong> las celdas. El Editor ‘es ‘el<br />

responsable <strong>de</strong> traducir la información gráfica a un archivo <strong>de</strong> <strong>de</strong>finición <strong>de</strong> grupo.<br />

30

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

Saved successfully!

Ooh no, something went wrong!