Changeset 30403 for lang/scheme

Show
Ignore:
Timestamp:
02/21/09 10:45:15 (4 years ago)
Author:
mokehehe
Message:

Add command line option.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/scheme/3imp/3imp.scm

    r30301 r30403  
    22 
    33(use file.util) 
     4(use gauche.parseopt) 
    45(require "./4.7") 
    56 
     
    910       (file->sexp-list fn))) 
    1011 
    11 (define (run code) 
    12   (VM '() code 0 '() 0)) 
     12(define (run-code code) 
     13  (dolist (x code) 
     14    (run x))) 
     15 
     16(define (dofile srcfn) 
     17  (run-code (compile-file srcfn))) 
     18 
     19(define (write-compiled-code srcfn) 
     20  (let ((code (compile-file srcfn))) 
     21    (dolist (x code) 
     22      (write/ss x) 
     23      (newline)))) 
     24 
     25(define (run-file srcfn) 
     26  (run-code (file->sexp-list srcfn))) 
     27 
     28(define (usage) 
     29  (print "3imp scheme compiler.") 
     30  (print "usage: 3imp [options] srcfn ...") 
     31  (print "options:") 
     32  (print "  -h,--help     disp help") 
     33  (print "  -c,--compile  compile only") 
     34  (print "  -r,--run      run compiled code") 
     35  ) 
    1336 
    1437(define (main args) 
    15   (if (null? (cdr args)) 
    16       (repl) 
    17     (let ((srcfn (cadr args))) 
    18       (let ((code (compile-file srcfn))) 
    19         (dolist (x code) 
    20           (run x)))))) 
     38  (let-args (cdr args) 
     39            ((help?          "h|help") 
     40             (compile-only?  "c|compile") 
     41             (run?           "r|run") 
     42             . restargs) 
     43    (cond (help? (usage)) 
     44          ((null? restargs) (repl)) 
     45          (else 
     46           (dolist (srcfn restargs) 
     47             (cond (compile-only? (write-compiled-code srcfn)) 
     48                   (run? (run-file srcfn)) 
     49                   (else (dofile srcfn))))))))