From cf57d609d10fa2ea9f690bcca6896b5926340e12 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Tue, 8 Dec 2020 18:43:30 +0100 Subject: Initial commit --- temper.lisp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 temper.lisp (limited to 'temper.lisp') diff --git a/temper.lisp b/temper.lisp new file mode 100644 index 0000000..5ff5008 --- /dev/null +++ b/temper.lisp @@ -0,0 +1,30 @@ +(defun read-all () + (let ((line (read-line *standard-input* nil))) + (if line + (concatenate 'string line '(#\linefeed) (read-all)) + ""))) + + +(setq *temper-open* "{%") +(setq *temper-close* "%}") + +(defun parse (input) + (let ((pos (search *temper-open* input))) + (if (null pos) + (list "\"" input "\"") + (let* ((before (subseq input 0 pos)) + (input (subseq input pos)) + (end-pos (search *temper-close* input)) + (close-len (length *temper-close*)) + (code (subseq input close-len end-pos)) + (input (subseq input (+ end-pos close-len)))) + (append (list "\"" before "\"" code) (parse input)))))) + + + +(setq res (append '("(concatenate 'string ") (parse (read-all)) '(" ) ") )) +(setq str (format nil "~{~A~^ ~}" res)) +(princ str) +; (print (eval (read-from-string str))) + +; (read-from-string (parse (read-all))) -- cgit