Open comintern opened 6 years ago
Thanks for actually opening an issue for this long known problem. The SLL parser really does not like the bang notation. (The LL parser seems to work just fine.)
Unfortunately, getting it to work in the SLL parser is rather complicated, in particular, since it is part of the left-recursion lExpression
rule.
I think what happens is that it tries to recursively parse the bang notation, which means that it has to parse the start as aother lExpression
. Unfortunately, the SLL parser is not context aware. So it matches the the start including the exclamation mark as an identifier, which leaves it no options one rule invocation up.
What concerns me here is why we get console output in the tests if the SLL parse fails.
Since the linked PR, this should only be an issue for bang notation on a foreign identifier.
I decided to track down some of the output spam from the parser:
It turns out to be this code in the
MemberNotOnInterface_DoesNotReturnResult_BangNotation
test:Parsing that code in the VBE with logging results in this: