You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 seems to succeed when "d" appears in the input and all other characters are from the list of words.
From my understanding this parser should succeed on "a", "b", "c" and "d". Am I missing something ?
The text was updated successfully, but these errors were encountered:
Amaumaury
changed the title
Unexpected parsing behavior in fastparse when composing parsers programmatically
Unexpected parsing behavior when composing parsers programmatically
Nov 26, 2023
Basically the call to P( f ) runs immediately, which is causing problems because .map and .reduce are eager. To defer evaluation, we need to wrap it in a () => and only call it when necessary
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:
The parser fails when input is "a", "b", or "c" and succeeds when given "d". Precisely, the parser seems to succeed when "d" appears in the input and all other characters are from the list of words.
From my understanding this parser should succeed on "a", "b", "c" and "d". Am I missing something ?
The text was updated successfully, but these errors were encountered: