1

假设我在 StandardTokenParser 中有一个片段:

lazy val validWords = Set("param value","param2 value2")

lazy val paramNameCollectionToken = paramNameToken ~ rep(paramNameToken) ^^ {
     case head ~ rest => (head :: rest).mkString(" ")
}

仅当 head::rest 的结果包含在 validWords 集中时,如何生成列表?

4

1 回答 1

1

一个简单的方法是使用filter.

val validToken: Parser[String] = paramNameCollection.filter(validWords)

如果过滤谓词失败,解析器失败消息将是通用的,例如“输入与过滤器不匹配:...”

过滤器的来源应该包含一些关于如何自定义此消息的线索。

于 2013-07-04T13:23:58.300 回答