2

私は、とりわけパーサーコンビネーターを備えたscalaプログラムを持っています。これは、 を拡張することによって行われscala.util.parsing.combinator.RegexParsersます。Scala 2.10 を使用して開発しましたが、すべて正常に動作していました。

昨日、システムを IntelliJ 14.02 とともに Scala 2.11.4 にアップグレードしました (それは問題ではありません)。

ただし、このプログラムを今コンパイルしようとすると、scalacこの段階でハングします。

scalac: phase typer on MyParser.scala

このコードには何も変更を加えていません。なぜハングしているのか、どこから始めればよいのかわかりません。IntelliJでは、トークンの後にandが続くconstants_def?or などのパーサー式の後置演算子について警告がありました。 SIP : Language Modularization Featuresのために、次の行を追加しました。structure_def*?*

import scala.language.postfixOps

実際には何の効果もありませんでしたし、問題はまだ同じです。

何が起こっているのかをトラブルシューティングするにはどうすればよいですか? フェーズタイパーが無期限にぶら下がっている理由を理解し始める場所がわかりません。

4

1 に答える 1

1

回避策は、明示的な型を追加することです。

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

スタック ダンプは、expr の型を把握していることを-Ytyper-debug示し、その付近を示します。

真夜中過ぎたらいいことないから、ここでやめよう。

于 2014-12-21T08:10:25.247 に答える