解析表达式文法 vs 正则:用 Lisp 写一个 Org 转 HTML 的解析器
来源:jointhefreeworld.org — 65 分 · by jjba23
📋 概述
作者分享了自己用 Guile Scheme 的 (ice-9 peg) 解析 Org mode 并转成 HTML 的项目 OrgWebAlchemy。他一开始写的是朴素正则表达式,很快发现要处理 Org 这种嵌套与上下文相关的语法,正则根本不够用,于是转向解析表达式文法(PEG),并用 GNU 的 ice-9 peg 模块实现。整体管线是 Org → PEG → AST → SXML → HTML,目标是在不启动 Emacs 的前提下把 Org 文档导出成 HTML 并嵌进自己的项目;他同时坦率说明 AI 帮助他理解 PEG 并调试,但代码结构、单元测试与手工验证(以及大量打印 AST)都是自己的工作,源码托管在 Codeberg。
🔑 核心要点
- 项目定位:用 Guile Scheme 的 (ice-9 peg) 解析 Org mode 并输出 HTML。
- 动机来自失败经验:朴素正则在 Org 的嵌套与上下文面前不够用。
- 管线很清晰:Org → PEG → AST → SXML → HTML。
- 实用目标明确:不启动 Emacs 也能把 Org 导出为 HTML。
- 调试手段实在:单元测试、手工验证与大量打印 AST。
- AI 使用被主动披露:只帮他理解 PEG 与排查问题,代码结构仍是"自己的意面"。
💡 金句
我一开始写了一些朴素的正则来解析 Org mode,但很快就意识到,要达成我想要的目标,我需要比正则更聪明的东西。
👍 0
👎 0
← 返回 Hacker News 首页