Table of Contents

Janglim 매뉴얼에 오신 걸 환영합니다

Janglim은 .NET용 LR/LALR 파서 생성기입니다.
말이 어렵죠?
괜찮아요.
이 매뉴얼은 어려운 용어를 모른다는 전제에서, 처음부터 차근차근 풀어갈 거예요.

이 매뉴얼은 누구를 위한 건가요?

파서가 뭔지, 컴파일러가 어떻게 도는지 하나도 몰라도 괜찮습니다.
이 매뉴얼은 "왜 이게 필요한지"부터 차근차근, 최대한 쉬운 말로 설명해요.
그래서 다 읽고 나면 두 가지가 손에 남습니다.

  1. 파싱이라는 개념 자체 — 다른 어떤 파서를 쓰든 오래 활용할 수 있는 기초 지식
  2. Janglim이라는 파서 생성기 — 그리고 (원하면) 그 안이 코드로 어떻게 만들어졌는지까지

이 매뉴얼은 두 갈래예요

부담을 줄이려고 기본 / 심화 두 과정으로 나눴어요.

🟢 기본 과정 — 개념만 편하게.
공식도 코드도 없이, 개념과 직관 만 잡습니다.
각 페이지는:

단계 무엇을
① 왜 필요한가 이게 없으면 뭐가 안 되는지 (문제부터)
② 무엇을 하는가 개념 자체 + 작은 예시
③ 플레이그라운드에서 보기 브라우저에서 직접 돌려보며 확인

🔵 심화 과정 — 공식 + 코드.
같은 개념을 어떤 문법에나 통하는 공식(알고리즘) 으로 정리하고, 그게 Janglim 코드에서 어떻게 구현됐는지까지 봅니다.
기본 과정의 각 개념 끝에 "→ 심화로" 링크를 달아둘게요.

처음이라면 기본 과정만 쭉 읽으세요.
심화는 나중에 궁금해질 때 봐도 충분해요. 🙂

하나의 예제로 끝까지 갑니다

매뉴얼은 이 작은 문법 하나를 주로 계속 씁니다 — 덧셈·곱셈이 있는 작은 산술식이에요.

Expr   : Expr '+' Term | Term ;
Term   : Term '*' Factor | Factor ;
Factor : '(' Expr ')' | id ;
id     := "[a-zA-Z]+" ;

그리고 이 입력을 계속 파싱해요: a + a * a

매 챕터가 이 같은 예제에 이해를 한 겹씩 더해 나가요.
가끔 이 문법으로는 못 보여주는 개념(예: ε, 충돌)이 나오면, 그 자리에서 작은 보조 문법 을 통째로 따로 보여줘요.
(이 문법을 읽는 법은 처음 나올 때 같이 천천히 뜯어볼 거니까 미리 걱정 안 해도 돼요.)

자, 시작할까요?

참고: Janglim은 아직 초기 프리뷰(0.2.0-preview) 예요.
공개 API는 0.x 동안 바뀔 수 있어요.


감사의 말

이 프로젝트의 골격을 세우는 데 큰 도움을 주신 분들께 깊은 감사를 전합니다.

  • 『컴파일러 입문』의 저자 오세만 · 손윤식 님 — 이 책으로 컴파일러의 기초를 배웠습니다.
  • Actipro Software — 그들의 LL 파서 명세 방식에서 영감을 받아, EBNF를 코드로 쓰는 문법 정의 구조를 완성했습니다.
  • Claude · Codex — 코드 검토와 문서 작성 과정에서 도움을 주었습니다.

진심으로 감사드립니다. 🙏