aboutsummaryrefslogtreecommitdiff
path: root/src/lang.clj
diff options
context:
space:
mode:
authorEduardo Julian2014-12-14 23:20:24 -0400
committerEduardo Julian2014-12-14 23:20:24 -0400
commit604e1d0c108f6153b599684b4b7828eae709118a (patch)
tree42d1c0c9b5543e8f692f680969bc599c3e61b0bc /src/lang.clj
parent8e00142b18d06dfb93f3ee34aa7d28b7618b5393 (diff)
Now defining functions as classes inheriting Function.
Diffstat (limited to '')
-rw-r--r--src/lang.clj20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/lang.clj b/src/lang.clj
index 7e71a1a62..f68d6eeb3 100644
--- a/src/lang.clj
+++ b/src/lang.clj
@@ -96,7 +96,6 @@
(STATIC-METHOD w x y z)))))))))
- ;; TODO: Define functions as classes inheriting Function.
;; TODO: Add tuples.
;; TODO: Add pattern-matching.
;; TODO: Add thunks.
@@ -109,10 +108,29 @@
;; TODO: Re-implement compiler in language.
;; TODO: Add all the missing literal types.
;; TODO: Allow strings to have escape characters.
+ ;; TODO: Add lambdas.
+ ;; TODO: Add "do" expressions.
+ ;; TODO: Fold all closure classes into one.
+ ;; TODO: When doing partial application, skip "apply" and just call constructor appropiatedly.
+ ;; TODO: Add extra arities (apply2, apply3, ..., apply16)
;; TODO:
+ ;; TODO:
+
+ (let [source-code (slurp "test2.lang")
+ tokens (&lexer/lex source-code)
+ ;; _ (prn 'tokens tokens)
+ syntax (&parser/parse tokens)
+ ;; _ (prn 'syntax syntax)
+ ann-syntax (&analyser/analyse "test2" syntax)
+ ;; _ (prn 'ann-syntax ann-syntax)
+ class-data (&compiler/compile "test2" ann-syntax)]
+ (write-file "test2.class" class-data))
;; jar cvf test2.jar test2 test2.class
;; java -cp "test2.jar" test2
;; jar cvf test2.jar test2 test2.class && java -cp "test2.jar" test2
;; jar cvf test2.jar test2 test2.class another.class && java -cp "test2.jar" test2
+
+ ;; jar cvf test2.jar *.class test2 && java -cp "test2.jar" test2
+
)