Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-syntax flower-barcket/list
- ;; (: list -> parsed-list)
- (lambda (x)
- (syntax-case x (|{|)
- [(_ ())
- (syntax ())]
- [(_ ((a ...) . rest))
- (syntax ((flower-barcket/list (a ...)) . (flower-barcket/list rest)))]
- [(_ (|{| . rest))
- (syntax-case (flower-barcket/read (syntax rest)) ()
- [(dl . rl)
- (syntax ((list . dl) . (flower-barcket/list rl)))])]
- [(_ (e . rest))
- (syntax (e . (flower-barcket/list rest)))])))
- (define-syntax flower-barcket/read
- ;; (: list -> (readed-list . not-parsed-rest-list))
- (lambda (x)
- (syntax-case x (|{| |}|)
- [(_ ()) (error "flower-barcket/read")]
- [(_ (|}| . rest))
- (syntax (() . rest))]
- [(_ (|{| . rest))
- (syntax-case (flower-barcket/read (syntax rest)) ()
- [(dl . rl)
- (syntax-case (flower-barcket/read (syntax rl)) ()
- [(dl1 . rl1)
- (syntax (((list . dl) . dl1) . rl1))])])]
- [(_ ((a ...) . rest))
- (syntax-case (flower-barcket/read (syntax rest)) ()
- [(dl . rl)
- (syntax-case (flower-barcket/list (syntax (a ...))) ()
- [l
- (syntax ((l . dl) . rl))])])]
- [(_ (e . rest))
- (syntax-case (flower-barcket/read (syntax rest)) ()
- [(dl . rl)
- (syntax ((e . dl) . rl))])])))
- (define-macro (syntax/flower-barcket/list e)
- (flower-barcket/list e))
- ;; (syntax/flower-barcket/list
- ;; '({a {a b c} b {a b c} c}))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement