Add driver
This commit is contained in:
37
scmvm.scm
Executable file
37
scmvm.scm
Executable file
@@ -0,0 +1,37 @@
|
||||
#! /bin/sh
|
||||
exec guile -L . -e main -s "$0" "$@"
|
||||
!#
|
||||
(use-modules (ice-9 getopt-long)
|
||||
(scmvm vm))
|
||||
|
||||
(define *options-spec*
|
||||
'((output (single-char #\o)
|
||||
(value #t))
|
||||
(help (single-char #\h)
|
||||
(value #f))
|
||||
(stack-size (value #t))
|
||||
(memory-size (value #t))))
|
||||
|
||||
(define parse-options
|
||||
(lambda (options)
|
||||
(getopt-long options *options-spec*)))
|
||||
|
||||
(define (usage)
|
||||
(format #t "Usage: scmvm.scm [-o outfile] mode infile
|
||||
Compile or run Scheme programs
|
||||
|
||||
Commands:
|
||||
\tcompile\t Compile the source into an object file
|
||||
\trun\t Run the object file
|
||||
|
||||
Yes the VM runs on Scheme, no that doesn't make any sense\n")
|
||||
(exit))
|
||||
|
||||
(define* (main #:optional args)
|
||||
(define options (parse-options args))
|
||||
(when (option-ref options 'help #f)
|
||||
(usage)))
|
||||
|
||||
;; Local Variables:
|
||||
;; mode: scheme
|
||||
;; End:
|
||||
Reference in New Issue
Block a user