5 个版本

使用旧的 Rust 2015

0.0.4 2019 年 11 月 28 日
0.0.3 2019 年 11 月 23 日
0.0.2 2019 年 10 月 10 日
0.0.1 2016 年 5 月 20 日
0.0.0 2016 年 5 月 20 日

7 in #forest

每月 36 次下载
6 个包中使用 (5 直接)

MIT/Apache

100KB
2.5K SLoC

gearley • Build status Latest version

Earley 解析器引擎。开发中。 您可以在此处检查文档

此引擎旨在成为优化解析生成器的基石。

Gearley 主要受到 Jeffrey Kegler 的 Marpa 解析器的启发。

扩展 gearley

语法以序列化形式存储。您可以自己创建或反序列化它。语法构建在 cfg 库中实现。

识别器提供了一个编写自定义解析森林的接口。或者,您可以使用默认的解析森林算法,但编写自己的代码来控制规则顺序,并在每个树节点中存储评估值。

另一个接口可以立即控制规则完成。您可以在解析过程中拒绝某些已完成的规则或修改它们的解析森林。

Gearley 在每个层面上都具有完美的可扩展性。

术语表

识别器

Gearley 术语 Marpa 术语 同义词
点规则 --
earleme earleme 输入位置
Earley 项 情况
起源 起源 距离
规则历史 规则语义 --

| complete | complete | accept |

点 — 语法中的一个位置,是一个整数。

Earleme — 标量位置,目前相当于输入位置索引。

项 — 由点、起源和 bocage 节点组成的价值。

起源 — 规则被预测的 Earley 集编号。对于非预测项,总是小于当前 Earley 集ID。

规则历史 — 包含动作编号和其他关于语义信息的价值。每个规则都携带自己的历史。

解析森林

Gearley 术语 Marpa 术语 同义词
bocage bocage 共享打包解析森林
深度优先 bocage 抽象语法森林 --
求和节点 glade OR 节点
乘法节点 因式分解 AND 节点
叶子节点 bocage 符号 叶子节点
根节点 peak glade 顶部节点

Bocage — 以有向无环图形式存在的解析森林。

深度优先 bocage — 通过一次评估一个完整的 bocage 节点来遍历的 bocage。

求和节点 — 一个求森林中树的数量之和的节点。

乘法节点 — 可能乘以森林中树的数量。

叶子节点 — 森林中单个树的起始终端节点。

根节点 — 被用作解析结果的节点。

许可证

双重许可,以兼容 Rust 项目。

许可协议根据您的选择:Apache许可证第2版:https://apache.ac.cn/licenses/LICENSE-2.0,或MIT许可证:http://opensource.org/licenses/MIT

依赖项

约4–13MB
约141K SLoC