lang/lang.ss
#lang scheme/base
(require (for-syntax scheme/base
                     "../private/compiler.ss")
         "../pretty.ss"
         (only-in (planet dherman/pprint:4)
                  pretty-print))

(define (print-result value)
  (if (void? value)
      (void)
      (pretty-print (format-literals value))))

(define-syntax (module-begin stx)
  (syntax-case stx ()
    [(module-begin)
     #'(#%module-begin)]
    [(module-begin ast ...)
     (with-syntax ([(begin rs ...) (compile-module (syntax->datum #'(ast ...)))])
       #'(#%module-begin
          (begin (print-result rs) ...)))]))

(define-syntax (script-begin stx)
  (syntax-case stx ()
    [(script-begin ast ...)
     (compile-module (syntax->datum #'(ast ...)))]))

(define-syntax (interaction-begin stx)
  (syntax-case stx ()
    [(interaction-begin ast)
     (compile-stmt (syntax->datum #'ast))]))

(provide module-begin
         script-begin
         interaction-begin)