208 lines
6.8 KiB
Racket
208 lines
6.8 KiB
Racket
#lang racket/base
|
|
|
|
(require "private/honu-typed-scheme.rkt"
|
|
"private/honu2.rkt"
|
|
"private/macro2.rkt"
|
|
(for-syntax (only-in "private/parse2.rkt" honu-expression))
|
|
(prefix-in literal: "private/literals.rkt"))
|
|
|
|
(provide #%top
|
|
#%datum
|
|
print printf true false
|
|
(for-syntax (rename-out [honu-expression expression]))
|
|
(rename-out [#%dynamic-honu-module-begin #%module-begin]
|
|
[honu-function function]
|
|
[honu-macro macro]
|
|
[honu-syntax syntax]
|
|
[honu-var var]
|
|
[honu-val val]
|
|
[honu-for for]
|
|
[honu-if if]
|
|
[honu-quote quote]
|
|
[honu-quasiquote quasiquote]
|
|
[honu-+ +] [honu-- -]
|
|
[honu-* *] [honu-/ /]
|
|
[honu-^ ^]
|
|
[honu-> >] [honu-< <]
|
|
[honu->= >=] [honu-<= <=]
|
|
[honu-= =]
|
|
[honu-assignment :=]
|
|
[literal:honu-<- <-]
|
|
[honu-map map]
|
|
[honu-flow \|]
|
|
[honu-dot |.|]
|
|
[honu-cons ::]
|
|
[honu-and and] [honu-and &&]
|
|
[honu-or or] [honu-or \|\|]
|
|
[honu-not not] [honu-not !]
|
|
[honu-structure structure]
|
|
[honu-structure struct]
|
|
[literal:honu-then then]
|
|
[literal:colon :]
|
|
[literal:semicolon |;|]
|
|
[literal:honu-comma |,|]
|
|
[literal:#%brackets #%brackets]
|
|
[literal:#%braces #%braces]
|
|
[literal:#%parens #%parens])
|
|
)
|
|
|
|
#|
|
|
(require (for-syntax racket/base))
|
|
(require (for-meta 2 racket/base))
|
|
(require racket/class)
|
|
|
|
(require "private/honu-typed-scheme.rkt"
|
|
"private/parse.rkt"
|
|
(for-syntax "private/literals.rkt")
|
|
(for-syntax "private/honu-typed-scheme.rkt")
|
|
(for-syntax "private/parse.rkt")
|
|
(for-syntax "private/canonical.rkt")
|
|
syntax/parse
|
|
(for-syntax syntax/parse)
|
|
"private/literals.rkt"
|
|
"private/syntax.rkt"
|
|
"private/more.rkt"
|
|
(for-template racket/base)
|
|
(for-template "private/literals.rkt")
|
|
#;
|
|
(for-syntax "private/more.rkt")
|
|
#;
|
|
(for-syntax "private/syntax.rkt")
|
|
(prefix-in macro: "private/macro2.rkt")
|
|
#;
|
|
(for-syntax "private/macro.rkt")
|
|
"private/macro.ss")
|
|
|
|
(define-for-syntax (syntax-to-string stx)
|
|
(format "original '~a' - ~a" (syntax->datum stx) (to-honu-string stx)))
|
|
|
|
(define-syntax (honu-struct stx)
|
|
(syntax-parse stx
|
|
[(_ name (my-field ...))
|
|
(with-syntax ([new-name (gensym (syntax->datum #'name))])
|
|
#'(begin
|
|
(define new-name
|
|
(class object%
|
|
(init-field my-field ...)
|
|
(super-new)))
|
|
(define name (lambda args (apply make-object new-name args)))))]))
|
|
|
|
(provide (rename-out (#%dynamic-honu-module-begin #%module-begin)
|
|
(semicolon \;
|
|
)
|
|
(honu-+ +)
|
|
(honu-* *)
|
|
(+ scheme:+)
|
|
(honu-/ /)
|
|
(honu-- -)
|
|
(honu-< <)
|
|
(honu-> >)
|
|
(honu->= >=)
|
|
(honu-<= <=)
|
|
(honu-== ==)
|
|
(honu-= =)
|
|
(honu-literal literals)
|
|
(honu-!= !=)
|
|
(honu-? ?)
|
|
(honu-: :)
|
|
(honu-and and)
|
|
(honu-comma |,|)
|
|
(honu-. |.|)
|
|
[honu-var var]
|
|
(expression-comma expression_comma)
|
|
)
|
|
|
|
(for-syntax (rename-out [syntax-to-string syntax_to_string]))
|
|
|
|
#%top
|
|
|
|
#%datum
|
|
(for-template #%datum)
|
|
datum->syntax
|
|
#%top-interaction
|
|
(for-syntax #%datum
|
|
display
|
|
with-syntax
|
|
quote
|
|
#%app
|
|
#%parens #%brackets #%braces
|
|
...
|
|
map
|
|
syntax->list
|
|
expression
|
|
statement
|
|
(rename-out (semicolon \;
|
|
)
|
|
(ellipses-comma ec)
|
|
(ellipses-repeat repeat)
|
|
(honu-identifier identifier)
|
|
(expression-comma expression_comma)
|
|
#;
|
|
(honu-macro macro)
|
|
(parse-an-expr parse)
|
|
(... scheme:...)
|
|
(honu-body:class body)
|
|
#;
|
|
(honu-syntax syntax)
|
|
#;
|
|
(honu-expression-syntax expressionSyntax)
|
|
#;
|
|
(honu-+ +)
|
|
#;
|
|
(honu-scheme scheme2)
|
|
#;
|
|
(scheme-syntax scheme:syntax)
|
|
#;
|
|
(scheme-syntax schemeSyntax)
|
|
))
|
|
#%braces #%parens #%brackets
|
|
sqrt
|
|
true
|
|
false
|
|
display
|
|
display2
|
|
newline
|
|
with-syntax
|
|
honu-unparsed-begin
|
|
(for-template with-syntax)
|
|
;; stuff i done want
|
|
define
|
|
let
|
|
;; end stuff
|
|
else
|
|
lambda
|
|
#%app
|
|
(for-template #%app)
|
|
quote
|
|
...
|
|
expression
|
|
str
|
|
in-range
|
|
honu-struct
|
|
macro:macro
|
|
(rename-out
|
|
(struct scheme-struct)
|
|
(syntax real-syntax)
|
|
(for scheme-for)
|
|
(honu-if if)
|
|
(honu-provide provide)
|
|
(honu-macro-item macroItem)
|
|
#;
|
|
(honu-macro macro)
|
|
#;
|
|
(honu-infix-macro infixMacro)
|
|
(honu-identifier identifier)
|
|
(honu-identifier identifier123)
|
|
(honu-require require)
|
|
(honu-for-syntax forSyntax)
|
|
(honu-for-template forTemplate)
|
|
#;
|
|
(honu-syntax syntax)
|
|
#;
|
|
(honu-pattern pattern)
|
|
(honu-keywords keywords)
|
|
#;
|
|
(scheme-syntax scheme:syntax)
|
|
))
|
|
|#
|