hara.lang.script-macro

+form-allow+

body-arglists

added in 4.0

(body-arglists body)

makes arglists from body

call-thunk

added in 4.0

(call-thunk {:keys [input raw debug clip], :as meta} thunk)

calls the thunk given meta to control pointer output

(macro/call-thunk {:debug true} (fn [] ptr/print)) => #{:input}

defmacro.!

macro

added in 4.0

(defmacro.! sym args & body)

macro for runtime lang macros

hydrate-top-level-entry

(hydrate-top-level-entry entry lang reserved lib module)

intern-!

added in 4.0

(intern-! lang tag)

interns a macro for free evalutation

intern-!-fn

added in 4.0

(intern-!-fn lang args {:keys [input raw debug clip], :as meta})

interns a free pointer macro

intern-def$

added in 4.0

(intern-def$ lang tag)

intern a def fragment macro

intern-def$-fn

added in 4.0

(intern-def$-fn lang [op sym body :as form] smeta)

interns a fragment macro

intern-defmacro

added in 4.0

(intern-defmacro lang tag)

the intern macro function

intern-defmacro-fn

added in 4.0

(intern-defmacro-fn lang [op sym & body :as form] smeta)

function to intern a macro

intern-defmacro-rt-fn

added in 4.0

(intern-defmacro-rt-fn lang form smeta)

defines both a library entry as well as a runtime macro

intern-free

added in 4.0

(intern-free lang tag)

creates a defptr macro

(macro/intern-free :lua “hello”) => #’hara.lang.script-macro-test/defptr.hello

intern-free-fn

added in 4.0

(intern-free-fn lang [_ sym body] smeta)

interns a free pointer in the namespace

(macro/intern-free-fn :lua ’(defptr.lua hello 1) {}) => #’hara.lang.script-macro-test/hello

intern-grammar

added in 4.0

(intern-grammar lang grammar)

interns a bunch of macros in the namespace

(:macros (:grammar (lib/get-book +library+ :lua))) => ’#{defrun defn defglobal defgen defn- deftemp defclass defabstract def}

(impl/with:library +library+ (macro/intern-grammar :lua (:grammar (lib/get-book +library+ :lua)))) => map?

intern-highlights

added in 4.0

(intern-highlights lang grammar)

interns the highlight macros in the grammar

intern-in

added in 4.0

(intern-in prefix tag val & [namespace])

interns a macro

intern-macros

added in 4.0

(intern-macros lang grammar)

interns the top-level macros in the grammar

intern-prep

added in 4.0

(intern-prep lang form)

outputs the module and form meta

intern-top-level

added in 4.0

(intern-top-level lang tag op)(intern-top-level lang tag op grammar)

interns a top level macro

(impl/with:library +library+ (macro/intern-top-level :lua “hello” ’def)) => #’hara.lang.script-macro-test/def.hello

(impl/with:library +library+ ^{:module L.core} (def.hello abc 1)) => #’hara.lang.script-macro-test/abc

(impl/with:library +library+ (ptr/ptr-deref abc))

(impl/with:library +library+ (ptr/ptr-display abc {})) => “def abc = 1;”

intern-top-level-fn

added in 4.0

(intern-top-level-fn lang [op reserved] [_ sym & body :as form-raw] smeta)

interns a top level function