gpt4 book ai didi

scala - 在 parboiled2 中,我应该如何报告解析器操作中的错误?

转载 作者:行者123 更新时间:2023-12-01 12:21:51 24 4
gpt4 key购买 nike

在 parboiled2(我使用的是 v 2.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
}
}

最佳答案

您可以为此使用test。诀窍在于操作也可以返回一个 Rule

def Index = rule {
capture(oneOrMore(CharPredicate.Digit)) ~> {s =>
val i = s.toInt
test(i <= SomeMaxIndexValue) ~ push(i)
}
}

关于scala - 在 parboiled2 中,我应该如何报告解析器操作中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com