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
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