<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Compiladores on Thy.Abstrakt.Objekt.Weblog</title><link>https://blog.kreig.rocks/categories/compiladores/</link><description>Recent content in Compiladores on Thy.Abstrakt.Objekt.Weblog</description><generator>Hugo</generator><language>es</language><lastBuildDate>Wed, 25 Apr 2018 03:26:21 -0600</lastBuildDate><atom:link href="https://blog.kreig.rocks/categories/compiladores/index.xml" rel="self" type="application/rss+xml"/><item><title>Tutorial ANTLR y Python III. Creando e implementando un intérprete de dos o más pasadas usando árboles de sintaxis abstracta...</title><link>https://blog.kreig.rocks/2009/04/06/tutorial-antlr-y-python-iii-creando-e-implementando-un-interprete-de-dos-o-mas-pasadas-usando-arboles-de-sintaxis-abstracta/</link><pubDate>Mon, 06 Apr 2009 16:29:37 -0600</pubDate><guid>https://blog.kreig.rocks/2009/04/06/tutorial-antlr-y-python-iii-creando-e-implementando-un-interprete-de-dos-o-mas-pasadas-usando-arboles-de-sintaxis-abstracta/</guid><description>&lt;p&gt;&lt;strong&gt;&amp;hellip;viene de &lt;a href="http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/"&gt;http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h3 id="tutorial-antlr-y-python"&gt;Tutorial ANTLR y Python:&lt;/h3&gt;&#10;&lt;h4 id="parte-i-introducción-e-instalación"&gt;&lt;a href="http://objektblog.wordpress.com/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/"&gt;Parte I: Introducción e Instalación.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-ii-creacion-de-una-gramática-sencilla"&gt;&lt;a href="http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/"&gt;Parte II: Creacion de una gramática sencilla.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-iii-creacion-e-implementación-de-un-ast"&gt;Parte III: Creacion e implementación de un AST.&lt;/h4&gt;&#10;&lt;p&gt;&lt;strong&gt;Antes de empezar pueden bajar el código que se estará utilizando del siguiente URL&lt;/strong&gt;&#10;&lt;strong&gt;&lt;a href="http://rapidshare.com/files/218352788/ejemploAST.tar.bz2"&gt;http://rapidshare.com/files/218352788/ejemploAST.tar.bz2&lt;/a&gt;&lt;/strong&gt;&#10;Bueno, anteriormente habiamos visto como Instalar Python y ANTLR, luego colocamos un ejemplo sencillo para un intérprete de una sola pasada usando ANTLR y Python,  esta vez toca ver una de las características que hacen de ANTLR una herramienta poderosa, los AST o Árboles de sintaxis abstractas por sus siglas en inglés.&lt;/p&gt;</description></item><item><title>Tutorial ANTLR y Python II. Creando una gramatica sencilla</title><link>https://blog.kreig.rocks/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/</link><pubDate>Mon, 30 Mar 2009 18:00:26 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/</guid><description>&lt;h3 id="viene-de"&gt;Viene de &lt;a href="http://objektblog.wordpress.com/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/"&gt;http://objektblog.wordpress.com/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/&lt;/a&gt;&lt;/h3&gt;&#10;&lt;h3 id="tutorial-antlr-y-python"&gt;Tutorial ANTLR y Python:&lt;/h3&gt;&#10;&lt;h4 id="parte-i-introducción-e-instalación"&gt;&lt;a href="http://objektblog.wordpress.com/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/"&gt;Parte I: Introducción e Instalación.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-ii-creacion-de-una-gramática-sencilla"&gt;Parte II: Creacion de una gramática sencilla&lt;a href="http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/"&gt;.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-iii-creacion-e-implementación-de-un-ast"&gt;&lt;a href="http://objektblog.wordpress.com/2009/04/06/tutorial-antlr-y-python-iii-creando-e-implementando-un-interprete-de-dos-o-mas-pasadas-usando-arboles-de-sintaxis-abstracta/"&gt;Parte III: Creacion e implementación de un AST.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;strong&gt;Antes de empezar, el codigo que se usara en los ejemplos esta publicado en el sig. URL:&lt;/strong&gt;&#10;&lt;a href="http://rapidshare.com/files/215758595/ejemplos.tar.bz2"&gt;http://rapidshare.com/files/215758595/ejemplos.tar.bz2&lt;/a&gt;&#10;Ahh las gramaticas, tan odiadas por muchos. Y no es para asombrarse, ya que tantos problemas que dan, más aún si la herramienta no es nada amigable (como la tan odiada combinacion JLex/CUP), &lt;strong&gt;ANTLR&lt;/strong&gt; es lo suficientemente amigable como para que desarrollemos gramáticas de la manera menos dolorosa posible, teniendo como valor agregado el &lt;strong&gt;ANTLRWorks&lt;/strong&gt;, un IDE que de verdad permite aumentar nuestra eficiencia a la hora de hacer gramáticas para ANTLR. Esta parte se enfocará en generar una gramática simple con la cual se aprenderá de manera básica la estructura y sintaxis de ANTLR.&lt;/p&gt;</description></item><item><title>Tutorial ANTLR y Python I. Introducción e Instalación</title><link>https://blog.kreig.rocks/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/</link><pubDate>Sun, 29 Mar 2009 18:00:37 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/</guid><description>&lt;h3 id="tutorial-antlr-y-python"&gt;Tutorial ANTLR y Python:&lt;/h3&gt;&#10;&lt;h4 id="parte-i-introducción-e-instalación"&gt;Parte I: Introducción e Instalación.&lt;/h4&gt;&#10;&lt;h4 id="parte-ii-creacion-de-una-gramática-sencilla"&gt;&lt;a href="http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/"&gt;Parte II: Creacion de una gramática sencilla.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-iii-creacion-e-implementación-de-un-ast"&gt;&lt;a href="http://objektblog.wordpress.com/2009/04/06/tutorial-antlr-y-python-iii-creando-e-implementando-un-interprete-de-dos-o-mas-pasadas-usando-arboles-de-sintaxis-abstracta/"&gt;Parte III: Creacion e implementación de un AST.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;p&gt;Dada la poca información que hay respecto al tema en Internet en español, me imagino que quizás por la poca apreciación que tiene la Teoría de Compiladores no sólo en mi país (Guatemala) sino en quiza toda latinoamérica. he decidido hacer un tutorial para intentar llenar ese vacio, y demostrar que existen herramientas más amistosas para generar analizadores léxico y sintácticos que la monolítica combinación FLEX/Bison, y que además, se pueden hacer en otros lenguajes que no sea el legendario C/C++.&#10;Pero antes de esto, una introducción (rapida para no aburrir) a las herramientas.&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte VI: Compiladores 1…</title><link>https://blog.kreig.rocks/2009/03/27/mis-proyectos-de-sistemas-en-la-usac-parte-vi-compiladores-1/</link><pubDate>Fri, 27 Mar 2009 12:00:31 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/27/mis-proyectos-de-sistemas-en-la-usac-parte-vi-compiladores-1/</guid><description>&lt;p&gt;Que ironía, se me olvidó colocar el curso que auxilio en la universidad,  Introducción a los lenguajes y Compiladores 1.  Y si lenguajes era introductorio a éste, éste a su vez, es introductorio a la yuca de Compiladores 2 como lo &lt;a href="http://objektblog.wordpress.com/2009/03/25/mis-proyectos-de-sistemas-en-la-usac-parte-v-compiladores-2%E2%80%A6/"&gt;describí anteriormente&lt;/a&gt;.  Lamentablemente, como tanto el auxiliar de ese curso, como el ingeniero, no sabian ni rosca, me tocó a mi estudiar por mi cuenta, mas por mi gusto que por ganarlo. y así fue. a continuación publico los únicos 2 proyectos que se realizaron.&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte V: Compiladores 2…</title><link>https://blog.kreig.rocks/2009/03/25/mis-proyectos-de-sistemas-en-la-usac-parte-v-compiladores-2/</link><pubDate>Wed, 25 Mar 2009 12:00:17 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/25/mis-proyectos-de-sistemas-en-la-usac-parte-v-compiladores-2/</guid><description>&lt;p&gt;Y luego de la trabada que fue Compiladores 1, Estructuras de Datos, y Organización Computacional.  se deja venir el 6to semestre con muchas más trabadas, solo que ésta vez exponenciales&amp;hellip; y no tanto por los cursos de sistemas, sino tambien por Investigación de Operaciones&amp;hellip; un curso en donde el que sepa llevar la subjetividad de Vinicio Monzón, el ingeniero que dá el curso, hasta en su auxiliar se puede convertir (sino vean a Patricio AKA César Rojas), pero bueno, ya mucho hablar de basura, y vamos a lo que me incumbe, publicar los proyectos del que, para muchos, es el curso más difícil de la carrera (aunque a mi me haya costado mas la investigacion de operaciones), no tanto por su contenido teórico, sino por la extensión y dificultad de sus proyectos de programación. Me refiero a Organización de Lenguajes y Compiladores 2.   Se realizaron 2 proyectos en este curso cuando lo lleve ya hace algunos años, los cuales son:&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte IV: Lenguajes Formales…</title><link>https://blog.kreig.rocks/2009/03/23/mis-proyectos-de-sistemas-en-la-usac-parte-iv-lenguajes-formales/</link><pubDate>Mon, 23 Mar 2009 12:00:52 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/23/mis-proyectos-de-sistemas-en-la-usac-parte-iv-lenguajes-formales/</guid><description>&lt;p&gt;Se me olvidaba un curso de 4to semestre, paralelo a &lt;a href="http://objektblog.wordpress.com/2009/03/19/mis-proyectos-de-sistemas-en-la-usac-parte-ii-progra-2%e2%80%a6/"&gt;IPC2&lt;/a&gt;, uno de los que enseñan lo que es desvelarse echando punta, Lenguajes formales, impartido por el mismísimo Satán.  Era un curso introductorio a Compiladores, y por lo tanto, a nivel de éstos en cuanto a extensión y dificultad en sus proyectos, aunque con menor magnitud obviamente&amp;hellip;  Aquí se realizaban 3 proyectos, los cuales se enfocaban en usar 3 diferentes lenguajes para comprobar 3 diferentes paradigmas supuestamente.&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte III: Estructuras de Datos…</title><link>https://blog.kreig.rocks/2009/03/20/mis-proyectos-de-sistemas-en-la-usac-parte-iii-estructuras-de-datos/</link><pubDate>Fri, 20 Mar 2009 12:00:26 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/20/mis-proyectos-de-sistemas-en-la-usac-parte-iii-estructuras-de-datos/</guid><description>&lt;p&gt;Uno de los cursos más difíciles en la vieja escuela, continuación de &lt;a href="http://objektblog.wordpress.com/2009/03/19/mis-proyectos-de-sistemas-en-la-usac-parte-ii-progra-2%e2%80%a6/"&gt;IPC 2&lt;/a&gt; en un semestre que no tenía nada de trivialidad al llevar cursos de Circuitos Digitales, y Compiladores simultáneamente con éste&amp;hellip; y un curso que tuve que repetir en vacaciones con los proyectos ya ganados, (eso era lo bueno), y que, en la actualidad, esta mas orientado a web services y J2EE que a estructuras de datos puras. como cuando la llevé. pero bueno, hace tres años todavía teníamos que hacer Matrices Ortogonales, Árboles AVL, Hash tables, y todo tipo de estructuras desde cero, pues usar librerías como las collection de Java y las STL de C++ era un pecado para los auxiliares. En fin, de éste curso incluiré solamente 1 proyecto, el de un dizque Excel hecho en Java que utilizaria Matrices Ortogonales para manejar las celdas. y 1 práctica ratosa.&lt;/p&gt;</description></item><item><title>Y Compiladores, para que p****?...</title><link>https://blog.kreig.rocks/2008/10/04/y-compiladores-para-que/</link><pubDate>Sat, 04 Oct 2008 19:24:49 -0600</pubDate><guid>https://blog.kreig.rocks/2008/10/04/y-compiladores-para-que/</guid><description>&lt;p&gt;&amp;hellip; Esto es lo que dice mucha gente en informatica, que estudia o estudió Ingeniería en Sistemas o Informática, o Ciencias de la Computacion, o como quiera llamarle, tiene cierto odio/resentimiento/&lt;em&gt;ahuevamiento&lt;/em&gt; con ciertos cursos como Estructuras de Datos, Administracion de Archivos, y en general aquellos que están directamente relacionados con la ciencia computacional.&#10;Sin embargo, de todos estos cursos, los que están a la cabeza son definitavemente los cursos relacionados Teoría de Compiladores, al cual mucha gente califica como  &amp;ldquo;Inaplicables&amp;rdquo;, &amp;ldquo;Inservibles&amp;rdquo;, &amp;ldquo;basura&amp;rdquo;, &amp;ldquo;m**rda&amp;rdquo; y va en descenso&amp;hellip; Sobre todo en países como los nuestros, con sus problemas económicos, que no  invierten casi nada en Investigación y Desarrollo, haciendo que los cursos de Compiladores queden siempre a la cabeza de los listados de las encuestas de &amp;ldquo;cursos que se deberían eliminar de la carrera&amp;rdquo;.&#10;Desafortunadamente, yo soy uno de esos pocos &lt;em&gt;freaks&lt;/em&gt; a los que si les gusta esos temas, mi pasíon por ésta teoria de compiladores nació desde que conocí el curso de Lenguajes Formales y Autómatas (en realidad no le pongo el nombre actual que le dan en mi universidad por que suena muy estúpido), el cual se puede decir que es un curso introductorio a compiladores (Compiladores 0 como le suelo decir), y desde ahí me gusto la idea de transformar algo tan natural como el lenguaje humano a una serie de instrucciones capaces de ser interpretadas por el ordenador.&#10;Me pareció bastante interesante,  que en el lugar donde laboro actualmente, se me asignó un proyecto ya hace algunos meses, en donde, se requiere el manejo de ciertas fórmulas para calcular el precio de energía de ciertas cosas segun cierta condicion.  Lo interesante es que estas fórmulas, obviamente, estarán persistidas en una base de datos de dudosa estabilidad (no digo la marca pero ya se imaginarán cual és, y lamentablemente sobre esa trabajamos), en formato varchar, o sea puro texto.&#10;Ahí es donde viene lo bueno, toca crear algún tipo &amp;ldquo;intérprete&amp;rdquo; para las mismas, ya que, aunque va a tener un conjunto de sentencias y expresiones bastante sencillas, me niego a hacerlas &amp;ldquo;a pie&amp;rdquo; por tres puntos:&lt;/p&gt;</description></item><item><title>Entonces... qué ha hecho el software libre por nosotros?</title><link>https://blog.kreig.rocks/2008/03/16/entonces-que-ha-hecho-el-software-libre-por-nosotros/</link><pubDate>Sun, 16 Mar 2008 18:34:41 -0600</pubDate><guid>https://blog.kreig.rocks/2008/03/16/entonces-que-ha-hecho-el-software-libre-por-nosotros/</guid><description>&lt;p&gt;ya sea por conveniencia o por ignorancia, ésta es una pregunta que quizá se haya hecho mucha gente que ve atemorizada cómo este modo de desarrollo de software ha crecido exponencialmente en los últimos años gracias a su naturaleza colaborativa, intentando atacar y defender a su software propietario simplemente por que no saben usarlo. Pues para todos aquellos que están renuentes a reconocer los grandes cambios que el software libre ha hecho en el mundo, aquí presento una lista de razones por qué el mundo es diferente desde la existencia de esta ideología.&#10;Basta con ver que la gran parte de software &amp;ldquo;significativo&amp;rdquo; de software, proyectos importantes de tiempo real, sistemas operativos, y la mayoria del software que mantienen vivo el mundo, e incluso juegos de video, está compilado usando &lt;strong&gt;GCC&lt;/strong&gt; y enlazados al conjunto de librerías &lt;strong&gt;GLIBC&lt;/strong&gt;, convirtiéndolo en quiza el &lt;strong&gt;compilador más usado del planeta&lt;/strong&gt;, no solo por su gran eficiencia o su arquitectura, sino también por su flexibilidad entre plataformas, permitiendo la interoperabilidad entre diferentes plataformas con leves cambios de código, usando el mismo lenguaje. Ésto señores si es multiplataforma.&#10;Este compilador es la base para que grandes proyectos como el &lt;strong&gt;Kernel de LINUX&lt;/strong&gt;, se volvieran una realidad, y se materializara uno de los cambios más importantes dentro del movimiento libre&amp;hellip; darle un Kernel al conjunto de utilidades y librerías &lt;strong&gt;GNU&lt;/strong&gt;, convirtiéndose más tarde en lo que conocemos como &lt;strong&gt;GNU/Linux&lt;/strong&gt; y toda la revolución estuviera por iniciar&amp;hellip; hasta la actualidad, donde el superordenador más poderoso del mundo, el &lt;strong&gt;BlueGene&lt;/strong&gt; de IBM, de cientos de teraflops, se ejecuta nada mas y nada menos que en el sistema operativo libre de preferencia, apto para mantener vivo este supercluster. Incluso Motivando a empresas manufacturadoras de Sistemas Operativos Propietarios a cambiar la arquitectura de sus kernels para sus versiones recien cocinadas del 2008 para poder hacerle frente a la estabilidad y escalabilidad que &lt;strong&gt;GNU/Linux&lt;/strong&gt; y los diferentes &lt;strong&gt;BSD&lt;/strong&gt; han dado durante años.&#10;Incluso no hay que ir tan lejos, basta con recordar también el Kernel del sistema operativo más usable y amigable. &lt;strong&gt;MacOS X&lt;/strong&gt;, el cual, con su apariencia reluciente, no es nada más que un shell gráfico sentado sobre una plataforma estable llamada &lt;strong&gt;Darwin&lt;/strong&gt;, y como no es de extrañarse por las descripciones anteriores, es software libre compilado con software libre. Y yendo un poco más abajo&amp;hellip; vemos ademas a &lt;strong&gt;Motorola&lt;/strong&gt; más frecuentemente produciendo teléfonos de calidad, y reduciendo costos de desarrollo, y por ende bajando precios al consumidor, al utilizar un sistema operativo muy famoso que tiene de mascota a un pingüino.&#10;&lt;strong&gt;Google&lt;/strong&gt; no hubiera sido tan exitosa (y quizá no existiera) sin software libre, así como el internet actual no sería lo mismo sin Google, quienes supieron sacarle el jugo a las capacidades de &amp;ldquo;crecimiento horizontal&amp;rdquo; que el software libre permite hacer al crear superclusters y lograr reducir los costos de procesamiento para una exitosa implementación de sus algoritmos de búsqueda distribuida.&#10;Incluso, otro proyecto clave para el crecimiento de Internet ha sido &lt;strong&gt;LAMP&lt;/strong&gt;, en donde un gran porcentaje de software &amp;ldquo;&lt;strong&gt;Web 2.0&lt;/strong&gt;&amp;rdquo; se ejecutan en este tipo de herramientas, el cual, también estoy seguro que el internet no sería el mismo sin LAMP así como este mundo actual no sería el mismo sin internet&amp;hellip; o será en vano que &lt;strong&gt;Sun Microsystems&lt;/strong&gt; recientemente adquiriera &lt;strong&gt;MySQL&lt;/strong&gt; para mejorar su interoperabilidad con &lt;strong&gt;Java&lt;/strong&gt;, tambien recientemente liberado?&#10;Con estos pocos ejemplos vemos que el software libre no son solamente ideales, es mejora continua para producir software de calidad&amp;hellip; y continua en crecimiento.&lt;/p&gt;</description></item><item><title>Proyectos creativos en Compiladores 2</title><link>https://blog.kreig.rocks/2007/08/30/proyectos-creativos-en-compiladores-2/</link><pubDate>Thu, 30 Aug 2007 20:49:46 -0600</pubDate><guid>https://blog.kreig.rocks/2007/08/30/proyectos-creativos-en-compiladores-2/</guid><description>&lt;p&gt;Desde que inicie la carrera de sistemas(entiéndase desde IPC1), los proyectos han sido mi pan de cada día, Han habido pocos proyectos con ideas creativas, muchos otros que no lo eran tanto, incluso muchos de los proyectos menos creativos resultaban ser los más costosos en cuanto a tiempo y esfuerzo.&#10;El semestre actual (jul-dic 2007), a los compañeros del curso Organización de Lenguajes y Compiladores 2 de la USAC, les asignaron un proyecto bastante interesante&amp;hellip; un Compilador de música&amp;hellip; Y esto que es? Algo asi como un generador de partituras musicales, además que permite la reproducción de la misma dentro de la aplicación. Me llamó la atención, ya que desde que entré a la carrera, quizá es el proyecto más atractivo para desarrollar que he visto, llegando a un nivel alto de aceptación por la mayoría de compañeros que están cursando esta asignatura, por que&amp;hellip; a quién no le gusta la música?&#10;también debido a que el proyecto de por sí no representa mucha dificultad en programación (Recuerdo que en primer proy. de compiladores 2, me toco hacer un generador LALR, lo cual no es algo tan sencillo), sin embargo, la dificultad está en que es necesario tener muchos fundamentos musicales básicos para su desarrollo tales como tiempos, compases, claves y todo lo referente a notación musical. Los compañeros deberán entonces aprender o refinar sus conocimientos algo que es un tópico que está dado de una manera deficiente y tediosa en la educación primaria y media en el país, aumentando de esta manera su acervo cultural y ampliando sus conocimientos de este bello arte, y de manera implícita desarrollar sus conocimientos en técnica de la generación de Compiladores.&#10;Felicito a los creadores de esta iniciativa (Aux. Ramirez o Aux. Ricart, quien quiera que haya sido) por este proyecto tan interesante, ya que permiten que el estudiante de sistemas común y corriente, salga de su infierno abstracto en el que vive, para poder aprender algo diferente e implementarlo de una manera útil. Espero que se sigan generando proyectos así en la carrera, y lástima que no asignaron éste proyecto cuando yo llevé el curso!&lt;/p&gt;</description></item><item><title>Proyecto, Generador de Analizadores LALR en Java</title><link>https://blog.kreig.rocks/2007/07/10/proyecto-generador-de-analizadores-lalr-en-java/</link><pubDate>Tue, 10 Jul 2007 21:10:14 -0600</pubDate><guid>https://blog.kreig.rocks/2007/07/10/proyecto-generador-de-analizadores-lalr-en-java/</guid><description>&lt;p&gt;Bueno señores, a continuación, un post aburridon y geek como cosa rara, pero estoy seguro que le puede servir a muchos estudiantes de Sistemas que van a llevar algun curso de Compiladores. Aqui publico el código fuente de uno de los más grandes y costosos proyectos que me ha tocado hacer en la carrera, un generador de analizadores sintácticos LALR. Este fue realizado para el laboratorio del curso Organización de lenguajes y Compiladores 2, y fue desarrollado en un mes aproximadamente. El proyecto fue hecho en parejas, complicándome yo mismo al elegir la parte más difícil (perdón pero la mejor manera de simplificarme la vida es complicándomela jaja) lo cual consistía en la de la creación de la tabla LR usando el famoso método LALR del famoso libro del dragón, así como también la interpretación del lenguaje de las acciones semánticas, si no entienden algo de lo que a continuación voy a escribir, por favor, ganen compiladores 1 y/o léanse (y entiendanlo que es lo mas difícil) el libro del dragon &lt;em&gt;(Compilers, Principles, Techniques, and Tools. 1986. Aho, Sethi, Ullman )&lt;/em&gt; del capitulo 1 hasta el capitulo 6 jeje.&#10;El proyecto consiste en un compilador de una gramática en formato similar a los archivos de entrada de CUP, el lo compila hacia un paquete .lalr dado, el cual es un archivo binario que contiene toda la información necesaria (tal como la tablas LR(1) de goto y accion, tokens, y acciones semánticas) para poder interpretar cualquier fuente que está descrito con esa gramática, ejecutando las acciones dadas en cada producción.&#10;Para ponerlo mas sencillo vean el sig. ejemplo:&lt;/p&gt;</description></item></channel></rss>