Skip to content

DiegoLinares11/LISP-Project

Repository files navigation

JLisp

Una pequeña implementacion de Lisp en Java

Elaborado con Java 17 y Maven.

Código fuente: Aquí

Unit Test: Aquí

Indice

Guia de Uso

  1. Descargar el ejecutable JLisp.jar aquí.

  2. Ejecutar JLisp.jar con el siguiente comando.

    java -jar ./JLisp.jar

Opciones de comando

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>

Problemas en Windows

Si estas en Windows, asegurate de tener instalado y corriendo el java JDK o JSE (version >= 17).

¿Como funciona?

Todo esta explicado con detalle en la WIKI

Pero para empezar el interpreta se compone de 3 partes principales

  1. Lexer: Rompe una expresion dado en palabras significativas llamadas "tokens"

  2. 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).

  3. 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:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •