Skip to content

Add a mechanism to report syntax errors without exceptions #246

Open
@Code-Grump

Description

@Code-Grump

🤔 What's the problem you're trying to solve?

In the Reqnroll project https://github.com/reqnroll, I am implementing a Roslyn-based source generator. As this runs as part of the IDE as the user is typing, it's important to keep performance in mind. As such, we'd like to avoid exception-throwing as a mechanism for reporting problems in user syntax, as these will occur frequently as the user authors their feature files.

✨ What's your proposed solution?

I would like a method added to Parser<T> which can return either a successful parse result or a failure.

A "try" method would be adequate:

public bool TryParse(ITokenScanner tokenScanner, out T result, out List<ParserException> errors)
{
    ...
}

Alternatively, some kind of "result" type could be used to represent success or failure.

⛏ Have you considered any alternatives or workarounds?

I could not see any other operations exposed by the parser that would support this exception-free model.

📚 Any additional context?

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions