我想使用Scala解析器组合器来实现一些定义语言的解析器。但是,编译该语言的软件并未实现所有语言的功能,所以如果使用这些功能,我想失败。我试图建立下面一个小例子:Scala解析器组合器中的错误和失败
object TestFail extends JavaTokenParsers {
def test: Parser[String] =
"hello" ~ "world" ^^ { case _ => ??? } |
"hello" ~ ident ^^ { case "hello" ~ id => s"hi, $id" }
}
即解析器的“你好” +一些识别成功,但失败如果标识符为“世界”。我发现Parsers类中存在fail()和err()解析器,但我无法弄清楚如何使用它们,因为它们返回Parser [Nothing]而不是String。这个文档似乎没有涵盖这个用例...
这正是我一直在寻找。是否>>,〜>(和<〜)操作符记录在某处(Scaladoc之外,这对我来说不够详细)? – scand1sk
@ scand1sk:参见['Parsers#Parser'](http://www.scala-lang.org/api/current/index.html#scala.util.parsing.combinator.Parsers$Parser)类来获取文档。 – senia
我猜''你好“〜”世界“>>'是拼写错误,应该有''hello'〜>'world >> >>'使用'$ x'。 – senia