Unexpected parsing behavior in fastparse when composing parsers programmatically

59 views Asked by At

I'm trying to build a simple parser using fastparse which succeeds when the given input is one of the words defined in a given list. Concretely this is what my code looks like:

val words = List("a", "b", "c", "d")

def reader[$: P] = words.map(f => P( f )).reduce((l, r) => l | r )

fastparse.parse(input, reader(_))

The parser fails when input is "a", "b", or "c" and succeeds when given "d". Precisely, the parser succeeds when "d" appears in the input and all other characters are from the list of words.

From my understanding this reader should succeed on "a", "b", "c" and "d". Am I missing something ?

0

There are 0 answers