在阅读了https://github.com/sirthias/parboiled2上的文档后,我发现我可以使用以下规则从堆栈中弹出一些东西:
type PopRule[-L <: HList] = Rule[L, HNil]
但是当 L 不是字符串时,我找不到此类规则的工作示例。
例如,假设我有以下规则:
case class A()
case class B()
def foo = rule { push(A) }
def pop_rule:PopRule[A, HNil] = rule { pop(A)}
为了证明这一点,有一个 parboiled2 规则的一般定义:
class Rule[-I <: HList, +O <: HList]
它代表一个规则,从堆栈中弹出 I 中的值并将 O 中的值放入堆栈。
到目前为止,我想不出以下规则类型的示例实现:
def rule_of_interest:Rule[A, B] = rule { pops(A) ~> push(B)}