#lang br (require (for-syntax br/syntax sugar/debug) br/syntax) (begin-for-syntax (define-scope blue) (define-scope yellow) (define-scope red) (define-scope green (blue yellow)) (define-scope purple (blue red))) (define #'(define-blue _id _val) (with-blue-binding-form ([x '_id]) #'(define x _val))) #;(define-blue x (+ 42 42)) (define #'(def-x) (with-blue-binding-form ([x 'x]) #'(define x (+ 42 42)))) (define #'(def-x-2) (with-yellow-binding-form ([x 'x]) #'(define x (+ 42)))) (define #'(print-x) (with-yellow-syntax ([x 'x]) #'(println (+ x x)))) (define #'(print-x-2) (with-purple-syntax ([x 'x]) #'(println (+ x x x)))) (scopes (syntax-find (expand-once #'(def-x)) 'x)) (def-x) (def-x-2) (scopes (syntax-find (expand-once #'(print-x)) 'x)) (print-x) (scopes (syntax-find (expand-once #'(print-x-2)) 'x)) (print-x-2) #;(let-syntax ([x (λ(stx) (syntax-case stx () [_ #'42]))]) (* x 4))