Parsers are composable, so as soon as you can build a parser reading one Mode.Value
, you may compose all such variants with |
:
object ModeParser extends JavaTokenParsers {
val mode: Parser[Mode.Value] = Mode.values.toList map{m =>
literal(m.toString) ^^^ m
} reduceLeft {_ | _}
}
You would use it like so:
scala> ModeParser.parseAll(ModeParser.mode, "Viewx")