(else (syntax-error ,loc (format #f "bad ~A" ',sym) ,exp)))))))
`(list ,@(map make1 body)))
-(define *the-compile-toplevel-symbol* 'load-toplevel)
+(define *the-compile-toplevel-symbol* 'compile-toplevel)
(define primitive-syntax-table
(make-pmatch-transformers
(define (scheme) (lookup-language 'scheme))
(define (compile-file file . opts)
- (let ((comp (compiled-file-name file)))
+ (let ((comp (compiled-file-name file))
+ (scheme (scheme)))
(catch 'nothing-at-all
(lambda ()
(call-with-compile-error-catch
(lambda ()
(call-with-output-file comp
(lambda (port)
- (let* ((source (read-file-in file (scheme)))
+ (let* ((source (read-file-in file scheme))
(objcode (apply compile-in source (current-module)
- (scheme) opts)))
+ scheme opts)))
(if (memq :c opts)
(pprint-glil objcode port)
(uniform-vector-write (objcode->u8vector objcode) port)))))
(define-module (system base language)
:use-syntax (system base syntax)
- :export (define-language lookup-language
+ :export (define-language lookup-language make-language
language-name language-title language-version language-reader
language-printer language-read-file language-expander
language-translator language-evaluator language-environment))
))
(define-macro (define-language name . spec)
- `(define ,name (,make-language :name ',name ,@spec)))
+ `(define ,name (make-language :name ',name ,@spec)))
(define (lookup-language name)
(let ((m (resolve-module `(language ,name spec))))
-SOURCES = repl.scm common.scm command.scm describe.scm
+NOCOMP_SOURCES = describe.scm
+SOURCES = repl.scm common.scm command.scm
GOBJECTS = $(SOURCES:%.scm=%.go)
vmdir = $(guiledir)/system/repl
-vm_DATA = $(SOURCES) $(GOBJECTS)
+vm_DATA = $(SOURCES) $(NOCOMP_SOURCES) $(GOBJECTS)
CLEANFILES = $(GOBJECTS)
(else
(apply bad-throw args))))
+(eval-case
+ ((compile-toplevel)
+ (define-macro (start-stack tag expr)
+ expr)))
+
(define (start-repl lang)
(let ((repl (make-repl lang)))
(repl-welcome repl)
else
{
/* Other cases */
+ /* x is #f, and already popped off */
+ p->nargs = SCM_I_INUM (sp[-3]);
+ p->nrest = SCM_I_INUM (sp[-2]);
+ p->nlocs = SCM_I_INUM (sp[-1]);
+ p->nexts = SCM_I_INUM (sp[0]);
sp -= 4;
- p->nargs = SCM_I_INUM (sp[0]);
- p->nrest = SCM_I_INUM (sp[1]);
- p->nlocs = SCM_I_INUM (sp[2]);
- p->nexts = SCM_I_INUM (sp[3]);
}
PUSH (prog);