A simple way to do this is using filter
.
val validToken: Parser[String] = paramNameCollection.filter(validWords)
If the filter predicate fails, the parser failure message will be generic, such as "Input doesn't match filter: ..."
The source of filter should contain some clues about how to customise this message.