首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时将Scala3代码从字符串解析为Scala3AST

在运行时将Scala3代码从字符串解析为Scala3AST
EN

Stack Overflow用户
提问于 2021-06-30 20:06:32
回答 1查看 211关注 0票数 7

我的目标是将Scala3代码作为字符串,并在运行时将其解析为Scala3的抽象语法树。在这个过程中,如果代码有编译错误,我应该将其作为某些异常的一部分。更大的目标是在scala代码有效的情况下以ExprT结束,并通过拼接正确的位来执行它(我已经介绍了这一部分)。

这在Scala2中是可行的。*使用scala-reflect here

代码语言:javascript
复制
val source =
  """
    |object HelloWorld {
    |  def main(args: Array[String]): Unit = {
    |    println("Hello, world!")
    |  }
    |}
    |
    |HelloWorld.main(Array())
    |""".stripMargin
val tree = toolbox.parse(source)
val binary = toolbox.compile(tree)
binary()

但据我猜测,在Scala3中,scala-reflect将不会被移植。我如何在Scala3中实现同样的目标?

一些相关链接herehere

EN

回答 1

Stack Overflow用户

发布于 2021-07-01 02:21:04

哦,你可以看看ammonite: parser:https://github.com/com-lihaoyi/Ammonite/blob/master/amm/compiler/src/main/scala-3/ammonite/compiler/Parsers.scala (他们创建一个虚拟文件并在上面运行编译器)。

如果你不需要评估而只需要AST,那么也许scalameta https://scalameta.org/就足够了。据我所知,最新版本支持scala3语法,但scalameta本身(即解析树的处理)在scala2上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68194436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档