1 2 3 4 | > cd path/to/source > mkdir dsl > cd dsl > raco pkg install |
1 2 3 4 | > cd path/to/source > raco pkg new dsl > cd dsl > raco pkg install |
1 2 3 4 | #lang br (module reader br (provide read-syntax) ···) |
1 2 3 4 5 | #lang br (module reader br (provide read-syntax) (define (read-syntax name port) ···)) |
1 2 3 4 | #lang br (module reader br (provide read-syntax) (require module/that/exports/read-syntax)) |
1 2 3 4 5 6 | #lang br (module reader br (provide read-syntax) (define (read-syntax name port) (define s-exprs (read-code-from port)) ···)) |
1 2 3 4 5 6 7 8 | #lang br (module reader br (provide read-syntax) (define (read-syntax name port) (define s-exprs (read-code-from port)) (strip-bindings #`(module dsl-mod-name dsl/expander #,@s-exprs)))) |
1 2 3 | #lang dsl dsl source code; ··· |
1 2 | (module dsl-mod-name dsl/expander dsl-sexprs ···) |
1 2 3 4 5 6 7 8 9 10 | #lang br (module reader br (require module/that/provides/parse module/that/provides/tokenize) (provide read-syntax) (define (read-syntax name port) (define the-parse-tree (parse (tokenize port))) (strip-bindings #`(module dsl-mod-name dsl/expander #,the-parse-tree)))) |
1 2 | (module dsl-mod-name dsl/expander dsl-sexprs ···) |
1 2 | (module dsl-mod-name dsl/expander dsl-sexprs ···) |
1 2 | (module dsl-mod-name dsl/expander dsl-sexprs ···) |
1 2 3 | (module dsl-mod-name dsl/expander (#%module-begin ;; imported from `dsl/expander` dsl-sexprs ···)) |
1 2 3 4 5 | #lang br (define-macro (dsl-module-begin PARSED-EXPR ...) #'(#%module-begin ;; from `br` PARSED-EXPR ...)) (provide (rename-out [dsl-module-begin #%module-begin])) |