(import "stdlib.phi" (slice contains indent)) (import "compiler/parse.phi" (Parser tokenize)) (import "compiler/emit_js.phi" (Emitter)) (fn print_expr (expr depth) (do (let (ty line value) expr) (if (== ty "list") (do (println "%(% %" (indent depth) ty line) (for e value (do (print_expr e (+ depth 1)) )) (println "%)" (indent depth)) ) (do (println "%%" (indent depth) expr) )) )) (let (input_filename output_filename) (get_args)) (println "compiling '%'..." input_filename) (let text (read_text_file input_filename)) (let tokens (tokenize text)) (let parser (Parser tokens)) (let (parse) parser) (let ast (parse)) (let emitter (Emitter ast input_filename)) (let (emit) emitter) (let js_code (emit)) // (println "=== js ===") // (println js_code) (write_text_file output_filename js_code) (println "written '%'!" output_filename)