SQL tokenizer, recursive-descent parser, and AST for the CSharpDB embedded database.
$ dotnet add package CSharpDB.SqlSQL tokenizer, recursive-descent parser, and abstract syntax tree (AST) for the CSharpDB embedded database engine.
CSharpDB.Sql provides a complete SQL front-end: a single-pass tokenizer, a recursive-descent parser, and a rich AST hierarchy. It transforms SQL text into strongly-typed statement and expression objects that downstream components (query planner, execution engine) consume. Zero external dependencies.
@parameters, operators, and punctuationTryParseSimpleSelect and TryParseSimplePrimaryKeyLookup detect common patterns and skip full AST constructionusing CSharpDB.Sql;
// Parse a SQL statement
var statements = Parser.Parse("SELECT id, name FROM users WHERE age > 21");
// The result is a list of strongly-typed AST nodes
if (statements[0] is SelectStatement select)
{
Console.WriteLine($"Table: {select.From}");
Console.WriteLine($"Columns: {select.Columns.Count}");
Console.WriteLine($"Has WHERE: {select.Where != null}");
}
// Parse DDL
var ddl = Parser.Parse("""
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER,
total REAL
)
""");
// Fast-path detection for simple queries
if (Parser.TryParseSimplePrimaryKeyLookup(sql, out var lookup))
{
// Skip full parsing for SELECT ... WHERE pk = value
}
Statements: CreateTableStatement, DropTableStatement, InsertStatement, SelectStatement, UpdateStatement, DeleteStatement, AlterTableStatement, CreateIndexStatement, DropIndexStatement, CreateViewStatement, DropViewStatement, CreateTriggerStatement, DropTriggerStatement, WithStatement
Expressions: LiteralExpression, ParameterExpression, ColumnRefExpression, BinaryExpression, UnaryExpression, LikeExpression, InExpression, BetweenExpression, IsNullExpression, FunctionCallExpression
Table References: SimpleTableRef, JoinTableRef (Inner, LeftOuter, RightOuter, Cross)
dotnet add package CSharpDB.Sql
CSharpDB.Core - shared type system and schema definitions| Package | Description |
|---|---|
| CSharpDB.Execution | Query planner and operator tree that consumes this AST |
| CSharpDB.Engine | Embedded database engine |
MIT - see LICENSE for details.