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.

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>

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

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>

한국어 · English · 日本語