diff --git a/src/ikarus.boot b/src/ikarus.boot index 1437270..75ba0b0 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.syntax.ss b/src/ikarus.syntax.ss index 4c7b5d5..4ec54b7 100644 --- a/src/ikarus.syntax.ss +++ b/src/ikarus.syntax.ss @@ -1063,6 +1063,8 @@ "~s is not a record of type ~s" x ',rtd))))) setters i*))))]))) + (define incorrect-usage-macro + (lambda (e) (stx-error e "incorrect usage of auxilary keyword"))) (define parameterize-transformer ;;; go away (lambda (e r mr) (syntax-match e () @@ -1553,18 +1555,20 @@ [(procedure? x) x] [(symbol? x) (case x - [(define-record) define-record-macro] - [(include) include-macro] - [(cond) cond-macro] - [(let) let-macro] - [(do) do-macro] - [(or) or-macro] - [(and) and-macro] - [(let*) let*-macro] - [(syntax-rules) syntax-rules-macro] - [(quasiquote) quasiquote-macro] - [(with-syntax) with-syntax-macro] - [(identifier-syntax) identifier-syntax-macro] + [(define-record) define-record-macro] + [(include) include-macro] + [(cond) cond-macro] + [(let) let-macro] + [(do) do-macro] + [(or) or-macro] + [(and) and-macro] + [(let*) let*-macro] + [(syntax-rules) syntax-rules-macro] + [(quasiquote) quasiquote-macro] + [(with-syntax) with-syntax-macro] + [(identifier-syntax) identifier-syntax-macro] + [(...) incorrect-usage-macro] + [(=>) incorrect-usage-macro] [else (error 'macro-transformer "invalid macro ~s" x)])] [else (error 'core-macro-transformer "invalid macro ~s" x)]))) (define (local-macro-transformer x) diff --git a/src/makefile.ss b/src/makefile.ss index b800197..eb64ee7 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -108,7 +108,9 @@ [cond (macro . cond)] [do (macro . do)] [and (macro . and)] - [or (macro . or)])) + [or (macro . or)] + [... (macro . ...)] + )) (define library-legend '([i (ikarus) #t] @@ -194,41 +196,43 @@ (define ikarus-macros-map - '([define i r] - [define-syntax i r] - [let-syntax i r] - [letrec-syntax i r] - [module i cm] - [begin i r] - [import i] - [set! i r] - [foreign-call i] - [quote i r] - [syntax-case i syncase] - [syntax i syncase] - [lambda i r] - [case-lambda i r] - [type-descriptor i ] - [letrec i r] - [letrec* i r] - [if i r] - [when i r] - [unless i r] - [parameterize i parameters] - [case i r] - [let-values i r] - [define-record i r] - [include i r] - [syntax-rules i r] - [quasiquote i r] - [with-syntax i syncase] - [let i r] + '([define i r] + [define-syntax i r] + [let-syntax i r] + [letrec-syntax i r] + [module i cm] + [begin i r] + [import i] + [set! i r] + [foreign-call i] + [quote i r] + [syntax-case i syncase] + [syntax i syncase] + [lambda i r] + [case-lambda i r] + [type-descriptor i ] + [letrec i r] + [letrec* i r] + [if i r] + [when i r] + [unless i r] + [parameterize i parameters] + [case i r] + [let-values i r] + [define-record i r] + [include i r] + [syntax-rules i r] + [quasiquote i r] + [with-syntax i syncase] + [let i r] [identifier-syntax i r] - [let* i r] - [cond i r] - [do i r] - [and i r] - [or i r])) + [let* i r] + [cond i r] + [do i r] + [and i r] + [or i r] + [... i r] + )) (define ikarus-procedures-map '([void i] diff --git a/src/todo-r6rs.ss b/src/todo-r6rs.ss index 37fc4a7..78e59c1 100755 --- a/src/todo-r6rs.ss +++ b/src/todo-r6rs.ss @@ -230,7 +230,7 @@ [vector-set! C ba] [vector? C ba] [zero? C ba] - [... S ba sc] + [... C ba sc] [=> S ba ex] [_ S ba sc] [else S ba ex]