我想使用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