From 1732b9a1a137d8a7e6476e8cdfa254c01638bce3 Mon Sep 17 00:00:00 2001 From: mRnea Date: Tue, 23 Jul 2024 16:15:31 +0300 Subject: added repl --- main.lisp | 13 +++++++++++-- util.lisp | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/main.lisp b/main.lisp index 716c76b..578fa01 100644 --- a/main.lisp +++ b/main.lisp @@ -14,7 +14,7 @@ ;; (generate-program program :compile t))) (compile-program (second args))) ((string= flag "-i") - (format t "Interpret program WIP~%")) + (interpret-program (make-program (second args)))) (t (format t "~a is not a valid flag~%" flag)))))) ;; (defun make-exe () @@ -22,7 +22,7 @@ ;; :toplevel #'main ;; :executable t)) -(defparameter *example-path* "./test/prog.lorth") +(defparameter *example-path* (from-root "test/prog.lorth")) (defun example-lex () (lex-file *example-path* t)) @@ -34,6 +34,15 @@ (generate-program (make-program *example-path*) :path "test/output.asm" :compile t)) +(defun example-interpret () + (interpret-program (make-program *example-path*))) + (defun example-run () (example-compile) (run '("test/output"))) + +(defun start-forth-repl () + (iter (for line = (progn (format t "~&> ") (read-line))) + (when (string= line "bye") + (finish)) + (interpret-program (parse-tokens (lex-line line 0))))) diff --git a/util.lisp b/util.lisp index 1ff6f9d..b97b0fa 100644 --- a/util.lisp +++ b/util.lisp @@ -24,6 +24,9 @@ (format t "~{~a~^ ~}~%" args) (uiop:run-program args :output *standard-output*)) +(defun from-root (path) + (merge-pathnames path (asdf:system-source-directory :cl-forth))) + ;; ,(file-namestring ;; (make-pathname :name (pathname-name path) ;; :type "o")) -- cgit v1.2.3