From ce096da3d8a6c28da0983a230e2e9d561618809e Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 1 Dec 2014 01:05:17 -0400 Subject: Doing some basic compilation. --- src/lang.clj | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/lang.clj (limited to 'src/lang.clj') 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)) + + + ) -- cgit v1.2.3