2013-10-12 34 views
4

scala.tools.nsc API已從2.10完全更改爲2.11。例如,沒有Interpreter了。有沒有Scala 2.11的nsc編譯器API的概述?

我想在Scala中構建一個類似於http://codingbat.com的站點,所以我需要能夠編譯和運行我的程序運行時由用戶提供的代碼。

有誰知道解釋如何在任何地方使用新的API? (我沒有任何運氣用谷歌搜索我認爲合理的搜索條件。)如果不是,知道關於新API的一些人可以提供一個小的工作示例,讓您編譯代碼,然後檢索運行結果?

UPDATE 2.11.0-M5似乎違反了腳本引擎支持,但我回到了2.11.0-M4,我可以使用ScriptEngineManager來獲得解釋器。奇怪的是,這種類型是scala.tools.nsc.interpreter.IMain。該包和類沒有出現在2.11.0-M4 Scaladocs中,所以我想知道他們是否已經從其他地方的編譯器工件中移出來了,或者如果在Scaladoc生產中只有一個疏忽,他們仍然應該在那裏。

+0

對Scala的外殼腳本怎麼看運行。 – pedrofurla

回答

3

Scala 2.11.0-M4現在擁有JSR 223腳本支持,我認爲它可以取代您正在尋找的一些功能。見docs.scala-lang.org/scala/2.11

特徵是Scala 2.11.0-M5打破,但顯然fixed in 2.11.0-M6和2.11.0-M4

Welcome to Scala version 2.11.0-M4 (OpenJDK Server VM, Java 1.7.0_25). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> import javax.script.ScriptEngineManager 
import javax.script.ScriptEngineManager 

scala> val e = new ScriptEngineManager().getEngineByName("scala") 
e: javax.script.ScriptEngine = [email protected] 

ScriptEngine Javadocjavax.script package summary

+0

我可能仍然需要編譯的東西,特別是如果我要對他們運行一堆測試,但M5似乎已經破壞了腳本引擎支持: 歡迎來到Scala版本2.11.0-M5(Java HotSpot( TM)64位服務器VM,Java 1.7.0_40)。 輸入表達式來評估它們。 類型:help獲取更多信息。 階>進口javax.script.ScriptEngineManager 進口javax.script.ScriptEngineManager 階> VAL E =新ScriptEngineManager()getEngineByName所( 「階」) E:javax.script.ScriptEngine中=空 – TOB

+0

呀。看起來他們把nsc.interpreter軟件包打入了自己的子項目repl。但我無法弄清楚它包含了什麼。文檔不在編譯器或庫文檔中,似乎也沒有單獨的repl工件。 – TOB

+0

將我的意見納入我的回答中... –