diff options
author | Eduardo Julian | 2014-12-01 01:05:17 -0400 |
---|---|---|
committer | Eduardo Julian | 2014-12-01 01:05:17 -0400 |
commit | ce096da3d8a6c28da0983a230e2e9d561618809e (patch) | |
tree | 8c8cb49ec045fb47f10658d031f62e16037bc5f7 /src/lang.clj | |
parent | 60cf264468d4833fd2cb8b103b0fc29a17d55eec (diff) |
Doing some basic compilation.
Diffstat (limited to 'src/lang.clj')
-rw-r--r-- | src/lang.clj | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/lang.clj b/src/lang.clj new file mode 100644 index 000000000..45c6013d4 --- /dev/null +++ b/src/lang.clj @@ -0,0 +1,26 @@ +(ns lang + (:require (lang [lexer :as &lexer] + [parser :as &parser] + [compiler :as &compiler]) + :reload)) + +(defn write-file [file data] + (with-open [stream (java.io.BufferedOutputStream. (java.io.FileOutputStream. file))] + (.write stream data))) + +(def ^:private +state+ + {:globals {} + :stack {} + :forms '()}) + +(comment + (let [source-code (slurp "test2.lang") + tokens (&lexer/lex source-code) + _ (prn 'tokens tokens) + syntax (&parser/parse tokens) + _ (prn 'syntax syntax) + class-data (&compiler/compile (update-in +state+ [:forms] concat syntax))] + (write-file "output.class" class-data)) + + + ) |