Open Source · .NET · LR / LALR
Janglim
A general-purpose, embeddable LR/LALR parser-generator for .NET.
Define a grammar — in C# or EBNF — and look inside every parse.
What you get
See inside the parser — not just the result
<div class="feature-card">
<div class="feature-icon feature-icon-blue">📊</div>
<h3>Inspect everything</h3>
<p>The ACTION/GOTO table, FIRST/FOLLOW sets and the LR automaton are all first-class. It is not a black box.</p>
<a href="ko/first-follow.html" class="feature-link">See FIRST/FOLLOW →</a>
</div>
<div class="feature-card">
<div class="feature-icon feature-icon-purple">👣</div>
<h3>Step-through trace</h3>
<p>Walk every shift / reduce / goto with the parsing stack drawn live, and watch the parse tree build up.</p>
<a href="https://polite-island-0b2142200.7.azurestaticapps.net" class="feature-link" target="_blank">Open the playground →</a>
</div>
<div class="feature-card">
<div class="feature-icon feature-icon-green">🌿</div>
<h3>C# <em>or</em> EBNF</h3>
<p>Build a grammar from C# fields and operators, or read it from plain EBNF text. Same engine either way.</p>
<a href="ko/getting-started.html" class="feature-link">Get started →</a>
</div>
<div class="feature-card">
<div class="feature-icon feature-icon-orange">⚠️</div>
<h3>Conflict reports</h3>
<p>Shift-reduce and reduce-reduce conflicts, pinpointed to the exact state where they happen.</p>
<a href="ko/first-follow.html" class="feature-link">Learn the theory →</a>
</div>
Quick install
Up and running in seconds
Add one NuGet package and you have the whole engine — lexer, grammar, LALR parser, tables and traces.
Full Getting Started guide →.NET CLI
dotnet add package Janglim --prerelease
var p = new LALRParser(grammar);
var r = p.Parsing(tokens); // r.Success == true
Learn the internals
A manual that teaches, from the ground up
<div class="feature-card">
<div class="feature-icon feature-icon-blue">🚀</div>
<h3>Getting started</h3>
<p>Install, then run your first parse in five lines — with every line explained.</p>
<a href="ko/getting-started.html" class="feature-link">Read →</a>
</div>
<div class="feature-card">
<div class="feature-icon feature-icon-green">🗺️</div>
<h3>The big picture</h3>
<p>How text becomes a parse tree, and the hidden “build the table first” step of LR parsing.</p>
<a href="ko/the-big-picture.html" class="feature-link">Read →</a>
</div>
<div class="feature-card">
<div class="feature-icon feature-icon-purple">🧠</div>
<h3>FIRST / FOLLOW</h3>
<p>The cheat-sheet that lets a parser decide where rules start and end — concept plus our code.</p>
<a href="ko/first-follow.html" class="feature-link">Read →</a>
</div>