ExtendedSharp.Sdk
0.1.2
dotnet add package ExtendedSharp.Sdk --version 0.1.2
NuGet\Install-Package ExtendedSharp.Sdk -Version 0.1.2
<PackageReference Include="ExtendedSharp.Sdk" Version="0.1.2" />
<PackageVersion Include="ExtendedSharp.Sdk" Version="0.1.2" />
<PackageReference Include="ExtendedSharp.Sdk" />
paket add ExtendedSharp.Sdk --version 0.1.2
#r "nuget: ExtendedSharp.Sdk, 0.1.2"
#:package ExtendedSharp.Sdk@0.1.2
#addin nuget:?package=ExtendedSharp.Sdk&version=0.1.2
#tool nuget:?package=ExtendedSharp.Sdk&version=0.1.2
ExtendedSharp (E#)
ExtendedSharp is a high-performance, token-based C# code parsing and transformation framework. It allows precise tokenization, formatting, and transformation of C# (and custom syntax) with minimal overhead. Designed for building linters, transpilers, code generators, and other developer tooling.
Performance
| Operation | Time (ms) |
|---|---|
| Parsing (large file) | 5.735 |
| Transforming (large file) | 0.413 |
Features
Fast Parsing & Transforming
Optimized for performance: parsing takes milliseconds even for large files.Token-Based Architecture
Each piece of code is tokenized into objects with metadata (line, column, type) for accurate transformation.Custom Token & Character Handlers
Extend E# with your own token types or character handlers without modifying core logic.Flexible Code Transformation
UseITokenTransformerimplementations to format, rewrite, or transform code efficiently.Indentation & Whitespace Management
Handles indentation, spacing, and newlines automatically with support for block-level constructs ({}, etc.).Modular Design
JSX or other syntax extensions can be added via separate libraries without bloating the core.
Usage
Tokenizing Code
using ExtendedSharp.Sdk;
var code = @"
public class Example {
public void SayHello() {
Console.WriteLine(""Hello, World!"");
}
}";
var tokens = await CodeReader.ReadString(code);
Transforming Code
using ExtendedSharp.Sdk.CodeTransformer;
var formattedCode = Transformer.Transform(tokens);
Console.WriteLine(formattedCode);
Registering a Custom Transformer
Transformer.RegisterCustomTransformer(new MyCustomTransformer());
public class MyCustomTransformer : ITokenTransformer
{
public bool CanTransform(Token<object> token) => token.TextualValue == "Console";
public void Transform(Token<object> token, StringBuilder builder)
{
builder.Append("System.Console");
}
}
Extending with Custom Syntax
CodeReader.RegisterCustomCharacterHandler('@', new MyAtSymbolHandler());
public class MyAtSymbolHandler : ICustomTokenCharacterHandler
{
public bool CanHandle(ref TokenHandlerContext context)
{
return context.Source[context.Pointer] == '@';
}
public Token<object>? Handle(ref TokenHandlerContext context)
{
var token = new Token<object>
{
TextualValue = "@custom",
Type = TokenType.Identifier,
LineNumber = 0,
ColumnNumber = 0,
Index = context.PreviousTokens.Length
};
context.Advance(7); // advance pointer past token
return token;
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.