Removed literals, Tweaked input syntax/tested

This commit is contained in:
William J. Bowman 2015-01-23 01:16:21 -05:00
parent 0a5568b78c
commit bd31f51f64

View File

@ -125,7 +125,6 @@
(define-syntax (define-language syn) (define-syntax (define-language syn)
(syntax-parse syn (syntax-parse syn
#:literals (var)
[(_ name:id (~do (lang-name #'name)) [(_ name:id (~do (lang-name #'name))
(~do (nts (hash-set (make-immutable-hash) 'var #'var))) (~do (nts (hash-set (make-immutable-hash) 'var #'var)))
(~optional (~seq #:vars (x*:id ...) (~optional (~seq #:vars (x*:id ...)
@ -137,23 +136,29 @@
(data var : Type (avar : (-> nat var))) (data var : Type (avar : (-> nat var)))
#| ;;Type this:
#;
(define-language stlc (define-language stlc
#:vars (x) #:vars (x)
(val (v) ::= true false) (val (v) ::= true false)
(type (A B) ::= bool (-> A B)) (type (A B) ::= bool (-> A B))
(term (e) ::= var v (e e) (lambda x A e))) (term (e) ::= var v (e e) (lambda (x : A) e)))
;;This gets generated:
#;
(begin (begin
(data stlc-val : Type (data stlc-val : Type
(stlc-true : stlc-val) (stlc-true : stlc-val)
(stlc-false : stlc-val)) (stlc-false : stlc-val))
(data stlc-type : Type (data stlc-type : Type
(stlc-bool : stlc-type) (stlc-bool : stlc-type)
(stlc--> : (->* stlc-type stlc-type stlc-type))) (stlc--> : (->* stlc-type stlc-type stlc-type)))
(data stlc-term : Type (data stlc-term : Type
(var-->-stlc-term : (-> var stlc-term)) (var-->-stlc-term : (-> var stlc-term))
(stlc-val-->-stlc-term : (-> stlc-val stlc-term)) (stlc-val-->-stlc-term : (-> stlc-val stlc-term))
(stlc-term2151 : (->* stlc-term stlc-term stlc-term)) (stlc-term2151 : (->* stlc-term stlc-term stlc-term))
(stlc-lambda : (->* var stlc-type stlc-term stlc-term)))) (stlc-lambda : (->* var stlc-type stlc-term stlc-term))))
|#