在阅读https://github.com/sirthias/parboiled2上的文档后,我发现我可以使用规则从堆栈中弹出一些内容:
type PopRule[-L <: HList] = Rule[L, HNil]
但是当L不是String时,我找不到这种规则的实例。
例如,supose我有以下规则:
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)}