aboutsummaryrefslogtreecommitdiff
path: root/src/lang.clj
diff options
context:
space:
mode:
authorEduardo Julian2014-12-11 01:24:39 -0400
committerEduardo Julian2014-12-11 01:24:39 -0400
commit9e2f13474246faebc0ab3126208b99acd715ec3c (patch)
treee0552c37b1165aa3f881ea12aa7aa2f4c9465dbf /src/lang.clj
parent58bfb46ba16fc1db07e501be6fcc0c940ec7a350 (diff)
+ Added an analysis phase.
+ Added a type-system.
Diffstat (limited to '')
-rw-r--r--src/lang.clj31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/lang.clj b/src/lang.clj
index eb26b9cc8..1ca16a3d9 100644
--- a/src/lang.clj
+++ b/src/lang.clj
@@ -1,6 +1,8 @@
(ns lang
(:require (lang [lexer :as &lexer]
[parser :as &parser]
+ [type :as &type]
+ [analyser :as &analyser]
[compiler :as &compiler])
:reload))
@@ -23,6 +25,31 @@
(&compiler/compile "test2")
(write-file "test2.class"))
+ (->> (slurp "test2.lang")
+ &lexer/lex
+ &parser/parse
+ (&analyser/analyse "test2"))
+
+ (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" syntax)]
+ (write-file "test2.class" class-data))
+
+ (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))
+
;; TODO: Define functions as classes inheriting Function.
;; TODO: Add tuples.
;; TODO: Add let.
@@ -33,9 +60,11 @@
;; TODO: Add interpreter.
;; TODO: Add Java-interop.
;; TODO: Add signatures & structures.
- ;; TODO: Add type-system.
;; TODO: Allow importing Java classes.
;; TODO: Allow using other modules.
+ ;; TODO: Add thunks.
+ ;; TODO:
+ ;; TODO:
;; TODO:
;; TODO: