projects
/
jscl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7200b4f
)
lambda (sort of)
author
Raimon Grau
<raimonster@gmail.com>
Tue, 11 Dec 2012 23:44:40 +0000
(
00:44
+0100)
committer
Raimon Grau
<raimonster@gmail.com>
Wed, 12 Dec 2012 00:03:21 +0000
(
01:03
+0100)
lispstrack.lisp
patch
|
blob
|
history
diff --git
a/lispstrack.lisp
b/lispstrack.lisp
index
aba12cb
..
a0fb23b
100644
(file)
--- a/
lispstrack.lisp
+++ b/
lispstrack.lisp
@@
-1,6
+1,6
@@
-(defun ls-compile (sexp)
+(defun ls-compile (sexp &optional env)
(cond
(cond
- ((symbolp sexp) nil)
+ ((symbolp sexp) (format nil "V_~a" sexp))
((integerp sexp) (format nil " ~a " sexp))
((stringp sexp) (format nil " \"~a\" " sexp))
; list
((integerp sexp) (format nil " ~a " sexp))
((stringp sexp) (format nil " \"~a\" " sexp))
; list
@@
-9,8
+9,28
@@
(ls-compile (second sexp))
(ls-compile (third sexp))
(ls-compile (fourth sexp))))
(ls-compile (second sexp))
(ls-compile (third sexp))
(ls-compile (fourth sexp))))
- (lambda nil)
+ (lambda (concat "(function ("
+ (format nil "~{V_~a~^, ~}" (second sexp))
+ "){ "
+ (ls-compile-block (cddr sexp) env)
+ "})
+")) ; (function (params) { body })
(t nil)))))
(t nil)))))
-(defparameter *env-var* '())
+;;; simplify me, please
+(defun concat (&rest strs)
+ (reduce (lambda (s1 s2) (concatenate 'string s1 s2))
+ strs
+ :initial-value ""))
+
+(defun ls-compile-block (sexps env)
+ (format nil
+ "~{~#[~; return ~a;~:;~a;~%~]~}"
+ (mapcar #'(lambda (x)
+ (ls-compile x env))
+ sexps)))
+
+(defparameter *env* '())
+
+
(defparameter *env-fun* '())
(defparameter *env-fun* '())