From 3c69abeedd825ed1880a53bf08857d6ac98f58aa Mon Sep 17 00:00:00 2001 From: "Mike D. Lowis" Date: Mon, 23 Jul 2012 15:35:10 -0400 Subject: [PATCH] Main now parses the input file given, writes the scheme to a file, and subsequently loads it into the run time for execution --- source/main.scm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/source/main.scm b/source/main.scm index 99bd281..799d697 100644 --- a/source/main.scm +++ b/source/main.scm @@ -1,12 +1,24 @@ (declare (uses lexer parser scheme)) +; Require the String library extension +(require-extension srfi-13) + +(define (get-output-file-name ifname) + (string-append (substring ifname 0 (string-index-right ifname #\.)) ".scm")) + (define (parse-file fname) - (define result (dlang/program (dlang/lexer (open-input-file fname)))) - (set! result (scheme-program result)) - result) + (scheme-program (dlang/program (dlang/lexer (open-input-file fname))))) + +(define (interpret-file fname) + (define ofname (get-output-file-name fname)) + (define program (parse-file fname)) + (with-output-to-file ofname + (lambda () (map print program))) + (load ofname)) ; If we have a file, then parse it (if (= 1 (length (command-line-arguments))) - (map print (parse-file (car (command-line-arguments)))) + (interpret-file (car (command-line-arguments))) + ;(map print (parse-file (car (command-line-arguments)))) (print "No input file provided.")) -- 2.52.0