Org 모드를 Lisp로 파싱해 HTML로 변환하기
Key Point
정규식의 한계를 벗고 PEG로 복잡한 문서 형식을 우아하게 파싱하는 아키텍처 설계와 구현 방식이 파서 개발에 관심 있는 개발자들에게 실질적 교훈을 제공한다.
핵심 요약
- Guile Scheme의 PEG(Parsing Expression Grammar) 모듈을 이용해 Org 모드 문서를 파싱하고 HTML로 렌더링하는 OrgWebAlchemy 프로젝트를 소개한다.
- 기존 정규식 기반 파싱의 한계를 지적하며, 중첩 리스트, 인라인 마크업, 소스 블록, 테이블 등 Org 모드의 복잡한 구조를 정확히 다루려면 PEG가 필요했다고 설명한다.
- OrgWebAlchemy는 Org 문서를 AST로 변환한 뒤 SXML을 거쳐 HTML로 출력하는 방식으로 동작하며, 느슨한 결합으로 향후 마크다운 등 다른 형식 내보내기도 가능하다.