The code is parsed as boolean_condition::corrupted, bool(false), e instead of boolean_condition::corrupted, identifier(falsee).
Identifiers can not be searched before keywords, because otherwise no keyword would ever match (any keyword satisfies identifier grammar). Since keywords are searched before identifiers, if first characters much a keyword it is treated as a keyword, leaving some garbage for further processing (here: e) which causes very unclear syntax errors. Looks like some look-ahead needs to be performed to ensure there are no unconsumed letters left.
Example code:
The code is parsed as
boolean_condition::corrupted, bool(false), e
instead ofboolean_condition::corrupted, identifier(falsee)
.Identifiers can not be searched before keywords, because otherwise no keyword would ever match (any keyword satisfies identifier grammar). Since keywords are searched before identifiers, if first characters much a keyword it is treated as a keyword, leaving some garbage for further processing (here:
e
) which causes very unclear syntax errors. Looks like some look-ahead needs to be performed to ensure there are no unconsumed letters left.