C# grammar for tree-sitter based upon the Roslyn grammar with changes in order to:
- 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
Comprehensive supports C# 1 through 11.0 with the following exceptions:
-
async
,var
andawait
cannot be used as identifiers everywhere they are valid - Raw string literals (C# 11)
- Alias any type
- Collection expressions
- Default lambda parameters
- Experimental attribute
- Inline arrays
- Interceptors
- Primary constructors
- Ref readonly parameters
- Official C# 6 Language Spec provides chapters that formally define the language grammar.
- Roslyn C# language grammar export
- SharpLab (web-based syntax tree playground based on Roslyn)