【问题标题】:Is there an overview of the nsc compiler API for Scala 2.11?是否有 Scala 2.11 的 nsc 编译器 API 的概述?
【发布时间】:2013-10-12 03:02:01
【问题描述】:

scala.tools.nsc API 已从 2.10 完全更改为 2.11。例如,不再有Interpreter

我正在尝试在 Scala 中构建类似于 http://codingbat.com 的站点,因此我需要能够在我的程序运行时编译和运行用户提供的代码。

有谁知道解释如何在任何地方使用新 API 的内容? (我没有运气用谷歌搜索我认为合理的搜索词。)如果没有,了解新 API 的人能否提供一个小的工作示例,让您编译代码然后检索运行结果?

更新 2.11.0-M5 似乎破坏了对脚本引擎的支持,但我回到 2.11.0-M4 并且能够使用 ScriptEngineManager 来获得解释器。奇怪的是,类型是scala.tools.nsc.interpreter.IMain。该包和类没有出现在 2.11.0-M4 Scaladocs 中,所以我想知道它们是否已经从其他地方的编译器工件中移出,或者是否只是 Scaladoc 生产中的疏忽,它们应该仍然存在.

【问题讨论】:

  • 看看 scala shell 脚本是如何运行的。

标签: scala compiler-construction scala-2.11


【解决方案1】:

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 = scala.tools.nsc.interpreter.IMain@1741b6d

查看ScriptEngine Javadocjavax.script package summary

【讨论】:

  • 我可能还需要编译一些东西,特别是如果我要对它们运行一堆测试,但 M5 似乎已经破坏了对脚本引擎的支持:欢迎使用 Scala 版本 2.11.0- M5(Java HotSpot(TM) 64 位服务器虚拟机,Java 1.7.0_40)。键入表达式以对其进行评估。键入 :help 以获取更多信息。 scala> import javax.script.ScriptEngineManager import javax.script.ScriptEngineManager scala> val e = new ScriptEngineManager().getEngineByName("scala") e: javax.script.ScriptEngine = null
  • 是的。看起来他们将 nsc.interpreter 包分解为自己的名为 repl 的子项目。但我无法弄清楚它包含什么。这些文档不在编译器或库文档中,而且似乎没有单独的 repl 工件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2023-03-03
  • 2011-04-19
相关资源
最近更新 更多