ฉันกำลังพยายามคอมไพล์ String
ที่มีโค้ด Clojure Script ใน Java/Groovy ฉันไม่พอใจกับการใช้ "java -jar ...".execute()
เลย
มีวิธีใดในการเรียกใช้ไลบรารี clojurescript (เวอร์ชัน 1.8.51) เพื่อคอมไพล์โค้ดหรือไม่
แก้ไข: รวมลิงก์ทั้งสองนี้เข้าด้วยกันฉันจึงได้รับรหัสนี้ (Groovy):
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("cljs.analyzer.api"))
require.invoke(Clojure.read("cljs.compiler.api"))
IFn emptyEnv = Clojure.var("cljs.analyzer.api", "empty-env")
IFn analyze = Clojure.var("cljs.analyzer.api", "analyze")
IFn emit = Clojure.var("cljs.compiler", "emit-str")
final inputText = "(defn plus [a b] (+ a b))"
emit.invoke(
analyze.invoke(emptyEnv.invoke(), "'$inputText"
)
)
ปัญหาของฉันคือฟังก์ชัน emit ส่งกลับสตริงว่าง :/ มีอะไรที่ฉันทำผิดหรือเปล่า?
แก้ไข 2: วิธีการวิเคราะห์ส่งคืนสิ่งนี้:
{
:op :constant,
:env {:ns {:name cljs.user},
:context :statement,
:locals {},
:fn-scope [],
:js-globals ...removed...,
:form #object[org.codehaus.groovy.runtime.GStringImpl 0x37816ea6 "'(defn plus [a b] (+ a b))"],
:tag any
}