Scalac挂在RegexParser的相位typer上

时间:2014-12-20 20:05:39

标签: scala parser-combinators scala-2.11 scalac scala-compiler

我有一个scala程序,其中包括一个解析器组合器。这是通过扩展scala.util.parsing.combinator.RegexParsers来完成的。我使用Scala 2.10开发它并且一切正常。

昨天我将系统升级到Scala 2.11.4,以及IntelliJ 14.02(不重要)。

但是,每当我尝试编译此程序时,scalac会在此阶段挂起:

scalac: phase typer on MyParser.scala

我对这段代码完全没有改变,我无法理解为什么它会挂起或者我应该从哪里开始。 IntelliJ对解析器表达式(如constants_def?structure_def*)的后缀运算符发出警告,其中?*跟随令牌,我添加了这一行,因为{ {3}}:

import scala.language.postfixOps

它没有任何效果,问题仍然是一样的。

如何解决正在发生的事情?我无法弄清楚从何处开始理解为什么阶段性问题无限期地悬挂。

1 个答案:

答案 0 :(得分:1)

看起来解决方法是添加显式类型:

def da_gd : Parser[Expression with TimedCondition] =
  pref_timed_gd | da_gd_conjunction |
  (empty_temporal: Parser[Expression with TimedCondition])

堆栈转储显示它正在计算expr的类型,-Ytyper-debug显示附近。

因为在午夜之后没有任何好事发生,我会停在那里。