我想使用 Scala Parser Combinators 为某些定义的语言实现解析器。但是,编译该语言的软件并没有实现该语言的所有功能,所以如果使用这些功能我会失败。我试图在下面伪造一个小例子:
object TestFail extends JavaTokenParsers {
def test: Parser[String] =
"hello" ~ "world" ^^ { case _ => ??? } |
"hello" ~ ident ^^ { case "hello" ~ id => s"hi, $id" }
}
即,解析器在“hello”+某个标识符上成功,但如果标识符是“world”则失败。我看到 Parsers 类中存在 fail() 和 err() 解析器,但我不知道如何使用它们,因为它们返回 Parser[Nothing] 而不是 String。文档似乎没有涵盖这个用例……</p>