Module

lexers.csharp_sm

Hand-written C# lexer using composable scanner mixins.

O(n) guaranteed, zero regex, thread-safe.

Language Support:

  • C# 12 syntax
  • Attributes (@Obsolete, [Attribute])
  • Verbatim identifiers (@class, @var)
  • Interpolated strings ($"..."), verbatim strings (@"...")
  • Raw string literals (triple-quoted) — C# 11
  • All numeric literal formats with_separators

Architecture:

Uses C-style mixins. C#-specific additions (from Java template):

  • @prefix: attribute → NAME_DECORATOR, verbatim identifier → NAME
  • $"..." and @"..."string prefixes
  • Triple-quote raw string literals

See Also:

  • rosettes.lexers.java_sm: Template for @ and raw string handling
  • rosettes.lexers._scanners: Shared mixin implementations

Classes

CSharpStateMachineLexer 1
C# lexer using composable mixins.

C# lexer using composable mixins.

Methods

tokenize 4 Iterator[Token]
def tokenize(self, code: str, config: LexerConfig | None = None, *, start: int = 0, end: int | None = None) -> Iterator[Token]
Parameters
Name Type Description
code
config Default:None
start Default:0
end Default:None
Returns
Iterator[Token]