Slr1
De WikiBCE
Contenido |
Introducción
La herramienta para generar analizadores sintácticos LR(1) Simples y analizadores lexicográficos a partir de una gramática y expresiones regulares se llama SLR1.
Actualmente está en la versión 2.4.1 y hay disponibles binarios para Linux 32 y 64 bits y para Windows (32 bits, XP y posterior).
La interfase en pantalla fue hecha con wxWidgets usando el RAD DialogBlocks.
Descargas
Código Fuente
- slr1-2.4.1-1.fc13.src.rpm 25 Ago 2010 - RPM del Código fuente de SLR1 v 2.4.1 para Fedora 13
- slr1-2.4.1.zip 25 Ago 2010 - Código fuente de SLR1 v 2.4.1
- slr1.spec 25 Ago 2010 - Archivo .spec para construir el rpm de SLR1 v 2.4.1 en Fedora.
- slr1v2-src.zip 26 Set 2008 - Código fuente de SLR1 v 2.4
Binarios
- slr1v2.4.2-w32.zip 31 Mar 2011 - Binario de SLR1 v 2.4.2 para Windows XP, Vista y 7 de 32 bits.
- slr1v2.4.1-w32.zip 26 Ago 2010 - Binario de SLR1 v 2.4.1 para Windows XP, Vista y 7 de 32 bits.
- slr1-2.4.1-1.fc13.i686.rpm 25 Ago 2010 - RPM para Fedora 13 i686 de SLR1 v 2.4.1
- SLR1 v 2.4 para Win32 - 28 Ago 2008
- SLR1 v 2.4 para Linux 32 bits (i686) - 28 Ago 2008
- SLR1 v 2.4 para Linux 64 bits (x86_64) - 28 Ago 2008
- SLR1 v 2.4 para FreeBSD 8.0 CURRENT (i686) - 30 Oct 2008
SLR1v2 es un solo ejecutable. Debe descompactar en la carpeta deseada y luego arrancar el programa.
En linux está compilado contra glib 2.0. Consultar si no funciona. Fue probado en Fedora 9 y 10 de 32 bit, Fedora 10 de 64 bit y Ubuntu 64 bit.
En FreeBSD fue compilado con las herramientas de gnu, gmake, y glib 2.0. Se agradece la colaboración del alumno Tobias Grosser <tobi-grosser@web.de> que se encargó de compilar y probar. La biblioteca BCE fue recompilada con CodeBlocks para FreeBSD.
La documentación la debe descargar de aquí. El manual está en formato Open Document. Abrir con OpenOffice.org Writer, con AbiWord o con algún otro editor de textos que abra el formato .odt.
Si va a usar otro sistema operativo, usar los fuentes (slr1v2-src.zip). En la carpeta slr1v2db hay un proyecto de DialogBlocks que le permitirá generar compilar y generar el ejecutable. Al DialogBlocks lo puede bajar de aquí. Informar casos de éxito en la compilación en otros sistemas operativos a domingobecker@gmail.com.
Ejemplos de Uso
Los ejemplos de usos de estas herramientas pueden estar parcial o totalmente bloqueados durante el dictado de la Cátedra en la Universidad Católica de Santiago del Estero. La razón es obvia: los prácticos son similares a los ejemplos presentados aquí y no es deseable que copien las soluciones.
Los que se puede consultar por el momento están a continuación.
Un pequeño compilador
Un traductor que genera código ensamblador para una máquina hipotética. Se implementan las operaciones sumar y restar.
Objetivos: que el alumno vea cómo se implementan las acciones semánticas para un esquema de traducción para un traductor (valga la redundancia) implementado con la técnica LR(1) Simple con la herramienta SLR1. El esquema de traducción debe generar código ensamblador en la salida estándar.
Un pequeño intérprete
Un intérprete que ejecuta las operaciones indicadas por la oración de entrada del lenguaje fuente. El lenguaje fuente es para una calculadora que suma y resta números enteros.
Objetivos: que el alumno vea cómo se implementan las acciones semánticas para un esquema de traducción para un intérprete implementado con la técnica LR(1) Simple con la herramienta SLR1. El intérprete debe imprimir en la salida estándar el resultado de la operación, caso contrario indicar dónde está el error de sintaxis o léxico.
Un pequeño intérprete para números fraccionarios
Un intérprete que ejecuta las operaciones indicadas por la oración de entrada del lenguaje fuente. El lenguaje fuente es para una calculadora que suma y resta números fraccionarios.
Objetivos: aplicar el concepto de "Estructura de Datos" visto en materias de años anteriores y construir una clase que implemente los números fraccionarios en memoria, y mediante la sobrecarga de operadores habilitar el uso de los operadores + y - binarios para poder reusar las acciones semánticas del ejemplo anterior.
Imprimir una lista de precios en Excel
Se tiene un archivo en excel con una lista de precios. El trabajo que hay que hacer es un traductor que imprima esa lista de precios en formato texto, sin tocar para nada el excel y usando solamente software libre.
Objetivos: aplicar la teoría de los lenguajes formales para resolver un problema de la vida real de acceder a un archivo en excel sin usar el Excel (valga la redundancia).
Estructuras de Control de la Ejecución
Este ejemplo muestra la estructura base de generación de código para las estructuras básicas de control de la ejecución de programas. El lenguaje fuente es el mismo del ejemplo Un pequeño compilador con las reglas agregadas para dar soporte a las estructuras de control de la ejecución.
Objetivos: que el alumno conozca la estructura básica del código intermedio generado para las estructuras básicas de control de la ejecución, que son el "mientras condición hacer sentencias", el "hacer sentencias hasta condición" y el "si condición sentencias sino sentencias". El esquema de traducción debe generar código ensamblador en la salida estándar.
Contacto: domingobecker@gmail.com