Elaborado con Java 17 y Maven.
Código fuente: Aquí
Unit Test: Aquí
-
Descargar el ejecutable
JLisp.jar
aquí. -
Ejecutar
JLisp.jar
con el siguiente comando.java -jar ./JLisp.jar
Al ejectuarse como un comando en terminal, JLisp tambien puede recibir argumentos opcionales.
AYUDAAAA! 😩
Si no sabes como se ejecuta JLisp, recuerda que siempre puedes pedir ayuda asi:
java -jar ./JLisp.jar --help
Leer de un archivo
Jlisp tambien puede leer codigo guardado en un archivo, lo puedes especificar con la opcion --input
seguido de la ruta al archivo.
java -jar ./JLisp.jar --input <rutaArchivo>
Ejemplo:
java -jar ./JLisp.jar --input ./Fibonacci.lisp
Este podría ser un codigo de prueba:
;./Fibonacci.lisp.
(defun fibonacci (n)
(cond
((< n 2) n)
(T ( + (fibonacci (- n 1)) (fibonacci (- n 2))))
)
)
(print (fibonacci 5))
; Prints 5
Guardar resultados
Por ultimo, tambien puedes guardar los resultados de tus operaciones en un archivo con la opcion --output
.
java -jar ./JLisp.jar --output <rutaArchivo>
Ejemplo:
java -jar ./JLisp.jar --output ./resultados.txt
Combinar varias opciones
Recuerda que puedes combinar varias opciones a la vez al ejecutar JLisp
java -jar ./JLisp.jar --output <rutaArchivo> --input <rutaArchivo>
Si estas en Windows, asegurate de tener instalado y corriendo el java JDK o JSE (version >= 17).
Todo esta explicado con detalle en la WIKI ❓
Pero para empezar el interpreta se compone de 3 partes principales
-
Lexer: Rompe una expresion dado en palabras significativas llamadas "tokens"
-
Parser: Recibe una lista de tokens y los analiza segun unas reglas gramáticas, para luego construir "árboles de nodos" que representan instrucciones que si pueden ser ejecutadas por java ( o el lenguaje que se desee).
-
Interpreter: Recibe arboles de instrucciones y los ejecuta.
A continuacion puedes ver un Diagrama UML de todas las clases y como se relacionan entre ellas: