From a0fb419b1be8ed53f580c509b7a55cde8e06d4c9 Mon Sep 17 00:00:00 2001 From: mRnea Date: Thu, 18 Jul 2024 13:50:14 +0300 Subject: =?UTF-8?q?ba=C5=9Flang=C4=B1=C3=A7,=20push=20pop=20+=20-=20.=20vb?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.lisp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 main.lisp (limited to 'main.lisp') diff --git a/main.lisp b/main.lisp new file mode 100644 index 0000000..716c76b --- /dev/null +++ b/main.lisp @@ -0,0 +1,39 @@ +(in-package :cl-forth) + +(defun main () + (let ((args (rest sb-ext:*posix-argv*))) + (let ((flag (first args))) + (cond ((string= flag "-c") + ;; (iter (for (k v) in-hashtable *operations*) + ;; (for i from 0) + ;; (format t "~s: ~s~%" i k)) + ;; (let ((tokens (lex-file (second args)))) + ;; (format t "~s~%" tokens) + ;; (let ((program (prog-from-tokens tokens))) + ;; (format t "~s~%" program) + ;; (generate-program program :compile t))) + (compile-program (second args))) + ((string= flag "-i") + (format t "Interpret program WIP~%")) + (t (format t "~a is not a valid flag~%" flag)))))) + +;; (defun make-exe () +;; (sb-ext:save-lisp-and-die #P"cl-forth" +;; :toplevel #'main +;; :executable t)) + +(defparameter *example-path* "./test/prog.lorth") + +(defun example-lex () + (lex-file *example-path* t)) + +(defun example-prog () + (make-program *example-path*)) + +(defun example-compile () + (generate-program (make-program *example-path*) :path "test/output.asm" + :compile t)) + +(defun example-run () + (example-compile) + (run '("test/output"))) -- cgit v1.2.3