在parboiled2中报告解析器操作中错误的最佳方法是什么(我使用的是v2.1.4)?
例如,假设我想读取一个整数值并报告一个错误(如果它不在预期范围内)?我试着调用fail,但在解析器操作中这似乎并不有效。另外,我不知道如何将堆栈值提供给test规则。我只是抛出一个ParseError异常吗?
为了更具体一点,请考虑以下规则:
def Index = rule {
capture(oneOrMore(CharPredicate.Digit)) ~> {s => // s is a String
val i = s.toInt
if(i > SomeMaxIndexValue) ??? // What do I put here?
else i
}
}发布于 2017-04-20 18:19:12
为此您可以使用test。诀窍是操作也可以返回一个Rule。
def Index = rule {
capture(oneOrMore(CharPredicate.Digit)) ~> {s =>
val i = s.toInt
test(i <= SomeMaxIndexValue) ~ push(i)
}
}https://stackoverflow.com/questions/43525576
复制相似问题