2
は、私はPackratパーサを持つ文字列ABCを解析しようとしますPackratパーサの競合
ここlazy val abc: PackratParser[AnyRef] = ab ~ "c"
lazy val ab: PackratParser[AnyRef] = (ab | abc) ~ "b" | "a"
def parse(in: String) = parseAll(abc, in)
私はPackratパーサでサポートされている左再帰を使用しますが、それが失敗した理由を私は理解していません。 Parser documentation P |によれば、
lazy val ab: PackratParser[AnyRef] = ab ~ "b" | "a"