25 lines
661 B
Racket
25 lines
661 B
Racket
#lang racket/base
|
|
|
|
(provide (all-defined-out))
|
|
|
|
(require "literals.rkt"
|
|
(for-template "honu-typed-scheme.rkt")
|
|
syntax/parse)
|
|
|
|
;; syntax -> string
|
|
(define (to-honu-string stx)
|
|
(syntax-parse stx
|
|
#:literal-sets ([cruft #:at stx])
|
|
#:literals (honu-unparsed-begin)
|
|
[(f (#%parens x ...) rest ...)
|
|
(format "~a(~a)~a"
|
|
(to-honu-string #'f)
|
|
(to-honu-string #'(x ...))
|
|
(to-honu-string #'(rest ...)))]
|
|
[(x1) (to-honu-string #'x1)]
|
|
[(x1 x2 ...)
|
|
(format "~a ~a" (to-honu-string #'x1)
|
|
(to-honu-string #'(x2 ...)))]
|
|
[() ""]
|
|
[else (format "~a" (syntax->datum stx))]))
|