afnanenayet / tree-sitter-c-sharp

C# Grammar for tree-sitter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tree-sitter-c-sharp

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

Status

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)

  • Covariant returns
  • Extending partial methods
  • Extension GetEnumerator
  • Function pointers
  • Init properties
  • Lambda discard parameters
  • Local function attributes
  • Module initializers
  • Native integers
  • Patterns
    • Simple type patterns
    • Relational patterns
    • Logical patterns
  • Records
  • Skip Locals Init
  • Static anonymous functions
  • Target-typed conditional expression
  • Target-typed new
  • Top-level statements

C# 10.0 (complete?)

  • global using directives
  • File-scoped namespace declaration
  • Extended property patterns
  • Allow const interpolated strings
  • Record types can seal ToString()
  • Allow both assignment and declaration in the same deconstruction
  • Allow AsyncMethodBuilder attribute on methods
  • Record structs

References

About

C# Grammar for tree-sitter

License:MIT License


Languages

Language:JavaScript 86.3%Language:Scheme 8.8%Language:Shell 2.2%Language:C++ 1.6%Language:Python 0.6%Language:C# 0.4%