在早期版本的scala中,丢弃方法存在以丢弃解析器的结果:
lazy val throwThisAway: Parser[String] = (ows ~> discard(comma | EOF | EOL)) <~ ows
如何在当前版本的库中实现这一点,即只需执行
otherParser ~ throwThisAway ~ anotherParser ^^ { case a ~ b // only 2, not 3, parser results
答案 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 => ... }