Skip to content

tree-sitter/tree-sitter-c-sharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tree-sitter-c-sharp

Build Status

C# grammar for tree-sitter

Status

Based on an export of the Roslyn grammar export with various 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

Detailed status

Comprehensive support for C# exists with the following exceptions:

C# 7.0

  • Tuples
  • Discards
  • Basic pattern matching
  • Recursive pattern matching
  • Ref locals and return
  • Local function statements
  • Expression bodied constructors
  • Expression bodied destructors/finalizers
  • Throw expressions
  • Binary and _ literal support

C# 7.1

  • async main method
  • Default literals (as default_expression)
  • Inferred tuple element names
  • Generic type pattern matching

C# 7.2

  • in parameter modifiers
  • ref readonly method returns
  • readonly struct
  • ref struct
  • Non-trailing named arguments
  • _ leading binary and hex literals
  • private protected modifier
  • Conditional ref expressions

C# 7.3

  • stackalloc array initializers
  • unmanaged generic type parameter constraint
  • Attributes attached to auto property backing fields
  • out support for parameters on initializers, constructors etc.

C# 8.0

  • readonly members
  • Default interface methods
  • switch expressions
  • switch property patterns
  • switch tuple patterns
  • static local functions
  • nullable reference types
  • null-forgiving operator

References