tree-sitter-c-sharp
- Deal with differences between the parsing technologies
- Work around some bugs in that grammar
- Handle
#if
,#else
,#elif
,#endif
blocks
- Support syntax highlighting/parsing of fragments
- Simplify the output tree
Status
Comprehensive supports C# 1 through 10.0 with the following exceptions:C# 9.0 (complete)
- x Covariant returns
- x Extending partial methods
- x Extension GetEnumerator
- x Function pointers
- x Init properties
- x Lambda discard parameters
- x Local function attributes
- x Module initializers
- x Native integers
- x Patterns
- x Records
- x Skip Locals Init
- x Static anonymous functions
- x Target-typed conditional expression
- x Target-typed new
- x Top-level statements
C# 10.0
- x global using directives
- x File-scoped namespace declaration
- x Extended property patterns
- x Allow const interpolated strings
- x Record types can seal ToString()
- x Allow both assignment and declaration in the same deconstruction
- x Allow AsyncMethodBuilder attribute on methods
- x Record structs
C# 11.0 (under development)
- x Generic attributes
- x Static abstract members in interfaces
- x Newlines in string interpolations
- x List patterns
- x Slice pattern
- x Required members
References
- Official C# 6 Language Spec provides chapters that formally define the language grammar.
- SharpLab (web-based syntax tree playground based on Roslyn)