← Volver a proyectos

PROYECTO PROPIO · LENGUAJES DE PROGRAMACIÓN · EDUCACIÓN

Open Modular InterpreterEntender un programa.
Desde dentro.

OMI reúne un lenguaje de programación propio, un intérprete en C++ y una herramienta visual para seguir su ejecución. Nació para acercar la teoría de intérpretes y compiladores a algo que se puede escribir, ejecutar, observar y estudiar.

Prueba en el navegador · Memoria PDF: 13 MB · ZIP completo: 259 MB

OMI — Open Modular InterpreterUN LENGUAJE.
UNA VENTANA A SU INTERIOR.
Un primer programa en OMI
01 a = 4;
02 b = 5;
03 << a + b;
RESULTADO9

El resultado es el principio.
RunTree permite explorar cómo se obtiene.

Origen
Proyecto fin de carrera · UCA
Núcleo
C++ · Flex · Bison
Uso docente
Intérpretes y Compiladores
Memoria original
534 páginas

LA PREGUNTA QUE DIO FORMA AL PROYECTO

¿Qué sucede entre una instrucción y su resultado?

Un proyecto al que tenemos un cariño especial, por lo que permitió construir y por todo lo que exigió comprender.

Estudiar un lenguaje de programación implica trabajar con gramáticas, árboles, ámbitos y reglas semánticas. El reto aparece al relacionar esos conceptos con un programa que realmente se está ejecutando: dónde se guarda una variable, cómo se resuelve una expresión o qué ocurre cuando se llama a una función.

OMI nació para ayudar a recorrer ese camino. Fco. Javier Bohórquez Ogalla lo diseñó y desarrolló como proyecto fin de carrera de Ingeniería Técnica en Informática de Sistemas en la Universidad de Cádiz, bajo la tutoría de Iván Ruiz Rube. Su propósito era ofrecer un caso práctico amplio, documentado y abierto que pudiera consultarse y modificarse durante el aprendizaje.

El trabajo comenzó en 2014. La memoria conservada está fechada en enero de 2016. OMI llegó a utilizarse en las clases de Intérpretes y Compiladores y, después de 2016, continuó con uso interno en la universidad. Hoy lo recuperamos en dev2bit para que ese trabajo vuelva a estar al alcance de quien quiera explorarlo.

RUNTREE · VISUALIZACIÓN DE LA EJECUCIÓN

Ver las relaciones que el código deja entre líneas.

RunTree conecta el editor con el intérprete de OMI. A partir de los eventos que genera la ejecución, representa el árbol del programa, las tablas de símbolos y los cambios en los valores. Cada avance permite relacionar una instrucción con su efecto.

RunTree ejecutando a igual a 4 y b igual a 5: árbol de instrucciones, tablas de variables y resultado 9 en la consola
Captura real de la versión recuperada: las variables a y b, la suma y su resultado, observados desde el mismo entorno.
01

Escribir y enviar

El editor permite preparar el programa. La demo incluye un ejemplo sencillo para comenzar sin instalar nada.

02

Recorrer la ejecución

Los controles permiten avanzar paso a paso, por sentencia o de forma automática. El árbol muestra los nodos que intervienen.

03

Relacionar estado y resultado

Las tablas de variables, funciones y clases, las referencias y la consola ayudan a explicar lo que está ocurriendo.

DEL TEXTO A LA EJECUCIÓN

Una arquitectura construida para poder estudiarla.

La definición del lenguaje, el motor y la visualización forman parte de un mismo proyecto.

  1. 01 / ENTRADACódigo fuente

    Las instrucciones escritas en el lenguaje OMI.

  2. 02 / LÉXICOFlex

    Reconocimiento de los elementos del lenguaje.

  3. 03 / SINTAXISBison

    Aplicación de la gramática y construcción del árbol.

  4. 04 / SEMÁNTICANodos C++

    Ejecución, símbolos, referencias y valores.

  5. 05 / OBSERVACIÓNRunTree

    Representación de los eventos emitidos por el intérprete.

El motor produce información sobre su propio trabajo

La instrumentación del intérprete genera eventos JSON: ejecutar un nodo, acceder a una variable, cambiar una referencia o mostrar una salida. Esa información permite que la interfaz siga el proceso real.

La web convierte los eventos en una explicación visual

La arquitectura original combina JavaScript y HTML5 con una capa PHP que se comunica con el intérprete mediante sockets TCP. La recuperación pública conserva esta experiencia visual y añade aislamiento entre las sesiones de ejecución.

MÁS ALLÁ DEL VISUALIZADOR

Un lenguaje propio para explorar distintas formas de programar.

OMI se define como un lenguaje de alto nivel, de propósito general y tipado dinámico. Su diseño reúne programación imperativa, orientación a objetos y características funcionales. El código y la memoria permiten estudiar cómo se han planteado esas decisiones.

Qué se puede estudiar en el código y la documentación del proyecto
ÁreaConstrucciones del proyectoPregunta que ayuda a explorar
Datos y expresionesNúmeros, valores lógicos, cadenas, arrays y operadores.¿Cómo se representan y combinan los valores?
Control de flujoCondicionales, bucles y secuencias de instrucciones.¿Qué determina el siguiente paso de un programa?
FuncionesParámetros, ámbitos, recursividad, funciones anónimas y clausuras.¿Qué información necesita una llamada para ejecutarse?
ObjetosClases, constructores, herencia simple, miembros y métodos.¿Cómo se relacionan una clase, sus instancias y su estado?
Memoria y referenciasNodos, referencias, tablas de símbolos y conteo de referencias.¿Qué elementos siguen apuntando a un valor?
ExtensionesBiblioteca de desarrollo en C++ y carga de módulos dinámicos.¿Cómo ampliar un intérprete sin concentrarlo todo en su núcleo?

Modular también en su implementación

OMI incluye una biblioteca reutilizable y un mecanismo de carga de extensiones. El repositorio conserva los módulos gettext y MySQL, junto con su código y material de construcción. La recuperación actual ha permitido compilarlos y comprobar su carga.

Varios modos de acercarse al motor

El intérprete admite ejecución de programas, entrada estándar, una terminal interactiva y modo servidor. RunTree utiliza esa capacidad de comunicación para presentar el proceso en la web.

APRENDER TAMBIÉN CON LOS EJEMPLOS

Del primer cálculo a programas con estructura.

La colección original conserva ejercicios y aplicaciones escritos en OMI. Son material de estudio para pasar de las construcciones del lenguaje a problemas concretos.

EXPRESIONES Y DATOS

Calculadora y algoritmos

Ejemplos de calculadora, Fibonacci, árboles binarios y otros algoritmos permiten seguir operaciones y estructuras de datos en el código.

ABSTRACCIÓN

Un lenguaje para cuestionarios

El proyecto documenta un DSL interno para describir preguntas, respuestas y puntuaciones: una aplicación del lenguaje al dominio de los cuestionarios.

BÚSQUEDA Y DECISIONES

Tres en raya con minimax

La implementación original del juego incluye minimax escrito en OMI, como ejemplo de cómo expresar decisiones sobre un árbol de posibilidades.

Los ejemplos forman parte del archivo histórico. Su presencia no implica que todos estén validados en la versión recuperada; el ZIP incluye los resultados de las comprobaciones actuales.

UNIVERSIDAD DE CÁDIZ
OMI

Open Modular Interpreter


Memoria del proyecto
Ingeniería Técnica en Informática de Sistemas

DOCUMENTO ORIGINAL · ENERO DE 2016534 páginas

DOCUMENTAR TAMBIÉN ES CONSTRUIR

534 páginas para seguir las decisiones, no solo el resultado.

La memoria permite recorrer el proyecto desde su planteamiento hasta las pruebas y el manual de uso. Conserva requisitos, análisis, diseño, construcción, diagramas y conclusiones: el contexto necesario para entender por qué las piezas están organizadas de esa manera.

Es una parte esencial de OMI. Junto al código, deja un camino que otra persona puede seguir para estudiar la implementación y formular sus propias preguntas.

  • Motivación, planificación y requisitos.
  • Análisis, gramática y diseño de la arquitectura.
  • Construcción, pruebas e implantación.
  • Manual de usuario, conclusiones y trabajo futuro.
Leer la memoria en PDF

Documento original de 534 páginas. También puedes consultar la documentación navegable de OMI.

UNA HISTORIA QUE CONTINÚA DISPONIBLE

Del proyecto académico a una nueva puerta de entrada.

  1. 2014

    Comienza el desarrollo

    El resumen original sitúa el inicio del trabajo el 3 de noviembre de 2014.

  2. 2016

    Una memoria y un código compartidos

    La memoria está fechada el 31 de enero. El repositorio público conserva el trabajo de esta etapa.

  3. Después de 2016

    Continuidad en la universidad

    Tras su utilización en las clases de Intérpretes y Compiladores, OMI continuó con uso interno universitario.

  4. 2026

    Recuperar para volver a explorar

    Recompilamos el motor, adaptamos la web y publicamos una demo, la memoria y la descarga completa.

IDENTIDAD Y ALCANCE

Los hechos que definen OMI.

Nombre
OMI — Open Modular Interpreter.
Autor
Fco. Javier Bohórquez Ogalla, diseñador, desarrollador y promotor del proyecto.
Origen académico
Proyecto fin de carrera en la Universidad de Cádiz, con tutoría de Iván Ruiz Rube.
Finalidad
Apoyar el aprendizaje sobre lenguajes formales y sistemas intérpretes mediante implementación, documentación y visualización.
Componentes
Lenguaje, intérprete C++, biblioteca, extensiones, ejemplos, documentación y cliente web RunTree.
Uso docente
Utilizado en clases de Intérpretes y Compiladores; continuidad interna en la universidad después de 2016, según confirma su autor.

Un proyecto que puede consultarse y contrastarse

La memoria original, el repositorio público de OMI y la presentación histórica del proyecto documentan su propósito, autoría y alcance. La demo publicada permite observar su funcionamiento actual.

Su origen es personal y académico. La recuperación y publicación en dev2bit dan continuidad a ese trabajo y conservan sus créditos originales.

ABRIR, LEER, DESCARGAR

Tres formas de acercarte a OMI.

Puedes empezar por una prueba en el navegador, profundizar en la memoria o descargar el proyecto para estudiarlo y recompilarlo en tu equipo.

Qué incluye esta recuperación

El ZIP incorpora el código recuperado, la documentación fuente, los paquetes históricos, los binarios Linux x86_64, la memoria en PDF, las adaptaciones actuales y los archivos para reconstruir el entorno con Docker. Conserva los avisos de licencia y los resultados de verificación. Consultar las sumas SHA-256.

La demo ejecuta cada sesión en un entorno aislado durante un máximo de cinco minutos. Se han comprobado el intérprete y RunTree, aunque quedan incidencias en algunos ejemplos avanzados de objetos, excepciones y cadenas. Los informes incluidos describen esas limitaciones; las operaciones del módulo MySQL contra una base de datos no están validadas en esta recuperación.

LO QUE ESTE PROYECTO APORTA A NUESTRO TRABAJO

Construir la herramienta. Cuidar la forma de entenderla.

OMI reúne decisiones de lenguaje, estructuras de datos, comunicación entre sistemas e interfaz. Esa experiencia conecta con una forma de desarrollar: comprender el problema, diseñar sus piezas y hacer que la persona que las utiliza pueda orientarse.

CÓDIGO QUE SE PUEDE SEGUIR ESTUDIANDO

Compartir OMI también es parte del proyecto.

Conservamos su código y su memoria, y volvemos a poner su ejecución al alcance de quien tenga curiosidad por mirar dentro de un lenguaje. Si OMI te ayuda a entender una idea, experimentar o plantearte una nueva pregunta, su propósito sigue teniendo sentido.

© 2026 dev2bit