Scala解析器削减最后一个括号
发布时间:2020-12-16 18:28:26 所属栏目:安全 来源:网络整理
导读:Welcome to Scala 2.12.1 (Java HotSpot(TM) 64-Bit Server VM,Java 1.8.0_121).Type in expressions for evaluation. Or try :help.scala :paste// Entering paste mode (ctrl-D to finish)import scala.reflect.runtime._import scala.reflect.runtime.uni
Welcome to Scala 2.12.1 (Java HotSpot(TM) 64-Bit Server VM,Java 1.8.0_121). Type in expressions for evaluation. Or try :help. scala> :paste // Entering paste mode (ctrl-D to finish) import scala.reflect.runtime._ import scala.reflect.runtime.universe._ import scala.tools.reflect.ToolBox val mirror = universe.runtimeMirror(universe.getClass.getClassLoader) val toolbox = mirror.mkToolBox(options = "-Yrangepos") val text = """ |libraryDependencies ++= Seq("org.scala-lang" % "scala-compiler" % "2.10.4") map { | (dependency) =>{ | dependency | } |} """.stripMargin val parsed = toolbox.parse(text) val parsedTrees = parsed match { case Block(stmt,expr) => stmt :+ expr case t: Tree => Seq(t) } val statements = parsedTrees.map { (t: Tree) => text.substring(t.pos.start,t.pos.end) } // Exiting paste mode,now interpreting. import scala.reflect.runtime._ import scala.reflect.runtime.universe._ import scala.tools.reflect.ToolBox mirror: reflect.runtime.universe.Mirror = JavaMirror with primordial classloader with boot classpath... scala> statements.head res0: String = libraryDependencies ++= Seq("org.scala-lang" % "scala-compiler" % "2.10.4") map { (dependency) =>{ dependency } 结果是: scala> statements.head res1: String = libraryDependencies ++= Seq("org.scala-lang" % "scala-compiler" % "2.10.4") map { (dependency) =>{ dependency } 我期望: libraryDependencies ++= Seq("org.scala-lang" % "scala-compiler" % "2.10.4") map { (dependency) =>{ dependency } } 如果我使用Tree对象中的位置,则会丢失最后一个括号}(和行尾):text.substring(t.pos.start,t.pos.end) 任何提议如何从scala.reflect.api.Trees#Tree对象中提取所有文本? 更新 受影响的scala版本: > 2.10.6 – sbt 0.13.x需要 对于scala 2.10.6 / 2.12.7,结果与上面的输出相同. 将项目添加到github Example project for searching the solution 解决方法
只是将问题移出未答复的列表,可以参考为其预订的问题:
https://issues.scala-lang.org/browse/SI-8859 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 可以.$inject用于AngularJS中的服务,还是只需要控制器?
- Linux 中unzip解压时中文乱码的解决办法
- bash – 如何在状态栏中显示tmux环境变量(作为窗口格式)
- 基于BootStrap的分页代码实现
- angularjs – 使用ng-Style更改背景颜色
- (Scala)IntelliJ IDEA中的隐式参数菜单项.如何使用它 ?到底
- Scala – 没有TypeTag可用异常当使用case类尝试获取TypeTag
- twitter-bootstrap – Bootstrap Carousel Multi Items一次
- Angular 5.0 学习6:路由概念篇
- 拆分设置为多个集Scala