Skip to content

Error recovery only works on "syntax" rules. #2158

@PieterOlivier

Description

@PieterOlivier

The current error recovery implementation can only recover rules at the
context-free (syntax) level. Lexical rules are never recovered.

So for instance given the following syntax:

syntax A = "a" B "a";
syntax B = "b" C "b";
syntax C = "c";

A string like "abXba" can be parsed using error recovery. But if we change the syntax to:

lexical A = "a" B "a";
lexical B = "b" C "b";
lexical C = "c";

Now the same string "abXba" will result in a parse error as error recovery will fail.

Suppose someone creates a grammar with only lexical rules (for instance to have complete control over which layout can occur where), error recovery will not work at all.

Solution
Error recovery should also be able to recover lexical rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions