-(declare (unit buf)
- (uses library))
-
-(require-extension vector-lib)
+(declare (unit buf) (uses library))
(define-record buf
src ldfn pos marks data)
(list? (buf-marks obj))
(vector? (buf-data obj))))
+(define (vector-append v1 v2 . vN)
+ (define new-vec (list->vector (append (vector->list v1) (vector->list v2))))
+ (if (null? vN) new-vec (vector-append new-vec (car vN) (cdr vN))))
+
(define (buf-marked? b)
(> (length (buf-marks b)) 0))
-(declare (uses lexer parser scheme))
-
-; Require the String library extension
-(require-extension srfi-13)
+(declare (uses lexer parser scheme srfi-13))
(define (get-output-file-name ifname)
(string-append (substring ifname 0 (string-index-right ifname #\.)) ".scm"))
(define (parse-file fname)
(scheme-program (dlang/program (dlang/lexer (open-input-file fname)))))
-(define (interpret-file fname)
+(define (dlang-compile-file fname)
+ (define ofname (get-output-file-name fname))
+ (define program (parse-file fname))
+ (with-output-to-file ofname
+ (lambda () (map print program)))
+ (system (string-append "csc " ofname))
+ (delete-file ofname))
+
+(define (dlang-interpret-file fname)
(define ofname (get-output-file-name fname))
(define program (parse-file fname))
(with-output-to-file ofname
; If we have a file, then parse it
(if (= 1 (length (command-line-arguments)))
- (interpret-file (car (command-line-arguments)))
+ (dlang-compile-file (car (command-line-arguments)))
(print "No input file provided."))