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 直接)
100KB
2.5K SLoC
gearley •
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