始终丢弃解析器组合器的结果

时间:2015-11-15 21:13:11

标签: scala parser-combinators

在早期版本的scala中,丢弃方法存在以丢弃解析器的结果:

lazy val throwThisAway: Parser[String] = (ows ~> discard(comma | EOF | EOL)) <~ ows

如何在当前版本的库中实现这一点,即只需执行

otherParser ~ throwThisAway ~ anotherParser ^^ { case a ~ b // only 2, not 3, parser results

2 个答案:

答案 0 :(得分:0)

您可以简单地引用额外的解析器结果,但不能使用它:

otherParser ~ throwThisAway ~ anotherParser ^^ { case a ~ x ~ b => // eg.: SomeCaseClass(a,b)

甚至:

otherParser ~ throwThisAway ~ anotherParser ^^ { case a ~ _ ~ b => ...

答案 1 :(得分:0)

您可以使用<~(仅保留左侧的顺序组合)或~>(仅保留右侧的连续组合)。例如:

(otherParser <~ throwThisAway) ~ anotherParser ^^ { case a ~ b => ... }

otherParser ~ (throwThisAway ~> anotherParser) ^^ { case a ~ b => ... }