PasteRack.org
Paste # 16943
2017-12-29 09:24:57

Fork as a new paste.

Paste viewed 130 times.


Embed:

a DSL of my own

#lang br/quicklang
(module+ reader
  (provide read-syntax))

(define (read-syntax name port)
  (define datums
    (for/list ([a-line (in-lines port)])
      (format-datum '(translate ~a) a-line)))
   #`(module tcp-script-module tcp/main
       #,@datums))

(define-macro (my-module-begin STUFF ...)
  #'(#%module-begin
     STUFF ...))
(provide (rename-out [my-module-begin #%module-begin]))

(define-macro-cases translate
  [(translate) #'(void)]
  [(translate connect HOST PORT) #'(prelude/connect-to HOST PORT)]
  [(translate text STUFF ...) #''(send-line STUFF ...)]
  [(translate read-until-eof) #''(loop read until eof)]
  [(translate exit) #''(exit)])
(provide translate)

(define-macro (prelude/connect-to HOST PORT)
  #'(begin
      (require racket/tcp)
      (require racket/port)
      (define-values (input-port output-port)
        (tcp-connect HOST PORT))))

=>

standard-module-name-resolver: collection not found
  for module path: (submod br/quicklang reader)
  collection: "br"
  in collection directories:
   /home/pasterack/.racket/6.8/collects
   /home/pasterack/racket68/collects
   ... [161 additional linked and package directories]
  context...:
   show-collection-err
   standard-module-name-resolver
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:112:0: get-tokens
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:56:0: typeset-code15
   /home/pasterack/pasterack/tmp/16943/16943code.scrbl: [running body]
   loop
   ...cket/cmdline.rkt:179:51
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/run.rkt: [running body]