假设我在StandardTokenParser中有一个片段:
lazy val validWords = Set("param value","param2 value2")
lazy val paramNameCollectionToken = paramNameToken ~ rep(paramNameToken) ^^ {
case head ~ rest => (head :: rest).mkString(" ")
}
如果head :: rest的结果包含在validWords Set中,我怎样才能生成列表?
答案 0 :(得分:1)
执行此操作的一种简单方法是使用filter
。
val validToken: Parser[String] = paramNameCollection.filter(validWords)
如果过滤谓词失败,则解析器失败消息将是通用的,例如“输入与过滤器匹配:...”
source of filter应该包含一些有关如何自定义此消息的线索。