#lang scheme/base ;; The default organization method for all target code in Brood is ;; using PLT Scheme modules: each file has an associated language ;; (bring your own lexer and parser). This is implemented using the ;; PLT #lang directive. ;; However, for interactive use, a namespace and a REPL are necessary. ;; Namespaces are implemented using PLT Scheme namespace objects. The ;; REPL is implemented as a macro, because the forth parser expands to ;; toplevel forms. (require "forth-begin.ss" (for-syntax "../tools.ss" "../forth/lexer.ss" scheme/base)) (provide forth-compile forth-load/compile) ;; string -> code (define-syntax (forth-compile stx) (syntax-case stx () ((_ str) #`(forth-begin #,@(string->forth-syntax #'str))))) ;; path -> code (define-syntax (forth-load/compile stx) (syntax-case stx () ((_ path) #`(forth-begin #,(datum->syntax #'path 'load) path))))