我有一个 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?
or structure_def*
,其中?
and *
跟随令牌,我添加了这一行,因为SIP:语言模块化特性 http://docs.scala-lang.org/sips/completed/modularizing-language-features.html:
import scala.language.postfixOps
确实没有什么效果,问题还是一样。
我该如何解决发生的问题?我不知道从哪里开始理解为什么相位打字机无限期地挂起。
看起来解决方法是添加显式类型:
def da_gd : Parser[Expression with TimedCondition] =
pref_timed_gd | da_gd_conjunction |
(empty_temporal: Parser[Expression with TimedCondition])
堆栈转储显示它正在计算 expr 的类型,并且-Ytyper-debug
显示附近。
既然午夜之后没有什么好事发生,我就到此为止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)