跳到正文

pegtool使用 Go 编写的 PEG 解析器生成器

可为 Go、Haxe、TypeScript、C#、C99 与 Rust 生成可审阅、可部署的解析器源码。

pegtool 是什么

pegtool 是一个使用 Go 编写的 PEG(Parsing Expression Grammar)解析器生成器,可以从同一套文法生成 Go、Haxe、TypeScript、C#、C99 和 Rust 源码。项目在 2024 年从 Pigeon 分叉,基线包含 Pigeon 2023 年 v1.2.x 发布线;此后文法和运行时已经独立演进。这个 fork 的首要原因是改善原版 Pigeon 在实际文法中的性能,围绕这一目标进行了大量优化;部分优化不得不调整文法和值语义,早期分析见 Pigeon #151

powershell
pegtool -t go   -o parser.go grammar.peg
pegtool -t hx   -o Parser.hx grammar.peg
pegtool -t ts   -o parser.ts grammar.peg
pegtool -t cs   -o Parser.cs grammar.peg
pegtool -t c    -o parser.c grammar.peg
pegtool -t rust -o parser.rs grammar.peg

从哪里开始

先保持默认

除非基准测试证明同一命名规则在同一输入位置被反复求值,否则先不要启用 memo。除非生成文件不参与代码审阅,否则先不要启用规则索引优化。

基于 BSD 3-Clause License 发布