If we ever push an empty continuation to the stack then we will get into an infinite loop.
That can happen in cases like this:
emptyk :: Parser ()
emptyk = 'emptyk
::= emptyk <|> pure ()
It is easy to check whether a parser parses the empty string, but it is a bit of an open question how we can use that information to fix this bug.
If we ever push an empty continuation to the stack then we will get into an infinite loop.
That can happen in cases like this:
It is easy to check whether a parser parses the empty string, but it is a bit of an open question how we can use that information to fix this bug.