diff options
| -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")) | 
