C# grammar for tree-sitter

Downloads in past


125180.20.09 months ago6 years agoMinified + gzip package size for tree-sitter-c-sharp in KB


Build Status 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 10.0 with the following exceptions:
  • async, var and await cannot be used as identifiers everywhere they are valid

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 Simple type patterns - x Relational patterns - x Logical 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
  • Lambda improvements

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
  • Raw string literals


  • SharpLab (web-based syntax tree playground based on Roslyn)