46 个版本
0.20.2 | 2024年2月29日 |
---|---|
0.20.1 |
|
0.20.0 | 2023年5月5日 |
0.19.9 | 2023年3月25日 |
0.2.0 | 2015年7月27日 |
#5 in 解析工具
686,651 每月下载量
用于 779 个crate (201 直接)
2MB
56K SLoC
LALRPOP
LALRPOP 是一个以 可用性 为主要目标的 Rust 解析器生成框架。您应该能够编写紧凑、DRY、易读的语法。为此,LALRPOP 提供了一些实用的功能
- 如果解析器构造失败,则提供友好的错误消息。
- 宏可以让你提取语法中的公共部分。这意味着你可以超越简单的重复,如
Id*
,并定义像Comma<Id>
这样的东西,用于标识符的逗号分隔列表。 - 宏还可以创建子集,因此你可以轻松地做类似
Expr<"all">
来表示表达式的完整范围,但Expr<"if">
来表示可以出现在if
表达式中的表达式子集。 - 内置对操作符如
*
和?
的支持。 - 紧凑的默认设置,这样你就可以避免编写大量动作代码。
- 类型推断,这样你通常可以省略非终结符的类型。
尽管其名称为 LALRPOP,但实际上默认使用 LR(1)(尽管你可以选择 LALR(1)),而且我真的希望最终迁移到一个可以处理所有 CFG(如 GLL、GLR、LL(*) 等)的通用方案。
文档
LALRPOP 书籍 涵盖了所有关于 LALRPOP 的内容——或者至少它是这样计划的!以下是一些提示
- 教程部分涵盖了设置 LALRPOP 解析器的基础知识。
- 如果您急于入门,可能更喜欢快速入门指南部分,它描述了如何将 LALRPOP 添加到您的
Cargo.toml
文件中。 - 对于 LALRPOP 的回归用户,可能受益于速查表。
- 高级设置章节展示了如何配置 LALRPOP 预处理的其它方面。
- 如果您有任何问题,请加入我们的Gitter 大厅。
示例用途
- LALRPOP 本身是用 LALRPOP 实现的。
- Gluon 是一种静态类型函数式编程语言。
- RustPython 是用 Rust 重写的 Python 3.5+。
- Solang 是用 Rust 重写的 Ethereum Solidity。
贡献
如果您打算更改 LALRPOP 的语法,请务必阅读 CONTRIBUTING.md
。
依赖关系
~6–15MB
~164K SLoC