有人可以提供使用当前scala表示编译器(即)的最小示例scala.tools.nsc.interactive.Global,它可以完成以下任务吗?
String)似乎有很多波动nsc,我找不到最新的小例子.所以我非常感谢你的帮助.
在scala宏上执行测试的建议方法是什么?
我意识到由于需要单独编译,需要两个项目.如有必要,此步骤可以接受并且大部分都是清楚的.
但是,如何断言宏扩展失败呢?如果没有一些特殊功能,测试用例将无法编译,因此整个测试项目将无法编译.
我认为这个断言需要另一个形式的宏
errors(code: => _): List[CompileError]
Run Code Online (Sandbox Code Playgroud)
它返回内部宏的编译错误.如果他们应该发出警告,那么测试警告也是必需的......等等......
Scala宏是否有一些现有的测试工具?
我google了很多,现在完全陷入困境.我知道,有类似的问题,但请读到最后.我已经尝试了所有提出的解决方
我试图在Play 2.1项目中使用IMain该类scala.tools.nsc(使用Scala 2.10.0).
控制器代码
这是代码,我尝试IMain在Websocket中使用它.这仅用于测试.
object Scala extends Controller {
def session = WebSocket.using[String] { request =>
val interpreter = new IMain()
val (out,channel) = Concurrent.broadcast[String]
val in = Iteratee.foreach[String]{ code =>
interpreter.interpret(code) match {
case Results.Error => channel.push("error")
case Results.Incomplete => channel.push("incomplete")
case Results.Success => channel.push("success")
}
}
(in,out)
}
}
Run Code Online (Sandbox Code Playgroud)
只要通过Websocket发送了一些内容,就会发现以下错误:
Failed to initialize compiler: object scala.runtime in compiler mirror not found.
** Note that as of 2.8 scala does not …Run Code Online (Sandbox Code Playgroud) 我想用宏转换Scala XML文字.(不是带XML的字符串文字,而是实际的XML文字).据我所知,XML文字实际上并没有构建在AST级别的语言中,而是在解析器中被贬低.有趣的是,这确实有效:
case q"<specificTag></specificTag>" => ... // succeeds for specificTag with no
// attributes and children
Run Code Online (Sandbox Code Playgroud)
但显然,这完全没用,因为不可能以任意方式匹配任意xml.就像是
case q"<$prefix:$label ..$attrs>$children</$prefix:$label>" => ...
Run Code Online (Sandbox Code Playgroud)
无法工作,因为我们必须在模式中绑定相同的变量两次.
打印出这样的xml文字表达式的树实际上给出了desugared版本.例如.
new _root_.scala.xml.Elem(null,"specificTag",_root_.scala.xml.Null,$scope,false)
Run Code Online (Sandbox Code Playgroud)
但尝试匹配此失败:
case q"new _root_.scala.xml.Elem(..$params)" => ... // never succeeds
Run Code Online (Sandbox Code Playgroud)
我很迷惑!我的问题是:有没有办法可靠地匹配scala宏中的任意xml litarals?另外:为什么它们在quasiquotes中支持常量xml而不是desugared值呢?
我sourceGenerators in Compile用来生成一些Scala源文件来定位\ scala-2.10\src_managed.当我运行时sbt compile,源代码与src\main\scala下的常规代码一起生成和编译.
但是,如果我想在不编译的情况下单独生成源代码呢?我正在寻找的是这个流程:
如何实现这一目标?
我目前正在Scala中实现一个小编译器,当我在进行上下文分析的组件时,我发现了Binders包中的特征scala.util.parsing.ast(我正在使用Scala 2.9 RC),它是Documented以在解析时启用名称绑定.这听起来很有趣,我一直在谷歌搜索,但我仍然不知道如何使用它.虽然我当然能够让我的抽象语法脱离,但Binders我不知道如何从那里开始.网上有什么用法的例子吗?
compiler-construction binding functional-programming scala parser-combinators
因为MySQL数据库不支持Arrays,我想将字符串列表映射为类似List("facebook","linkedin","local")字符串"facebook, linkedin, local".
我想用slick 2.0进行双向映射,但我不知道如何编写实例TypeMapper.
谁能为我提供一个例子?