diff options
author | mRnea <[email protected]> | 2024-07-23 16:15:31 +0300 |
---|---|---|
committer | mRnea <[email protected]> | 2024-07-23 16:15:31 +0300 |
commit | 1732b9a1a137d8a7e6476e8cdfa254c01638bce3 (patch) | |
tree | 9b929ede4e356a1060f0c1cc1b154dbac73487d6 | |
parent | 4979a97e022d222f45209e09a8c7197820870097 (diff) |
added repl
-rw-r--r-- | main.lisp | 13 | ||||
-rw-r--r-- | util.lisp | 3 |
2 files changed, 14 insertions, 2 deletions
@@ -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))))) @@ -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")) |