@eniko@thephd We’ve recently been rewriting the Swift parser, and have some opinions on how to do this well: good parser primitives (“expect this”, “match this”, “don’t go beyond that”, etc.), no diagnostics from parsing itself (represent all issues as missing/unexpected nodes in the tree), and handle diagnostics in a post-pass. The result is really nice and is easy to extend to@new grammar terms. See https://github.com/apple/swift-syntax/blob/main/Sources/SwiftParser/SwiftParser.docc/ParserRecovery.md
swift-syntax/ParserRecovery.md at main · apple/swift-syntax
A set of Swift libraries for parsing, inspecting, generating, and transforming Swift source code. - swift-syntax/ParserRecovery.md at main · apple/swift-syntax
@mirabilos@eniko@thephd C is tricky because it’s ambiguous without doing name lookup, but beyond that—I think this works as long as you have a grammar to work with. Swift needs a bit of look ahead to resolve ambiguities, and that works fine