46 个版本

0.20.2 2024年2月29日
0.20.1 2023年10月23日
0.20.0 2023年5月5日
0.19.9 2023年3月25日
0.2.0 2015年7月27日

#5 in 解析工具

Download history 139060/week @ 2024-04-16 133151/week @ 2024-04-23 123700/week @ 2024-04-30 126689/week @ 2024-05-07 139722/week @ 2024-05-14 136937/week @ 2024-05-21 145138/week @ 2024-05-28 144710/week @ 2024-06-04 144346/week @ 2024-06-11 153869/week @ 2024-06-18 143696/week @ 2024-06-25 135021/week @ 2024-07-02 145269/week @ 2024-07-09 169644/week @ 2024-07-16 172915/week @ 2024-07-23 169151/week @ 2024-07-30

686,651 每月下载量
用于 779 个crate (201 直接)

Apache-2.0 OR MIT

2MB
56K SLoC

LALRPOP

Join the chat at https://gitter.im/lalrpop/Lobby

Deploy

LALRPOP 是一个以 可用性 为主要目标的 Rust 解析器生成框架。您应该能够编写紧凑、DRY、易读的语法。为此,LALRPOP 提供了一些实用的功能

  1. 如果解析器构造失败,则提供友好的错误消息。
  2. 宏可以让你提取语法中的公共部分。这意味着你可以超越简单的重复,如 Id*,并定义像 Comma<Id> 这样的东西,用于标识符的逗号分隔列表。
  3. 宏还可以创建子集,因此你可以轻松地做类似 Expr<"all"> 来表示表达式的完整范围,但 Expr<"if"> 来表示可以出现在 if 表达式中的表达式子集。
  4. 内置对操作符如 *? 的支持。
  5. 紧凑的默认设置,这样你就可以避免编写大量动作代码。
  6. 类型推断,这样你通常可以省略非终结符的类型。

尽管其名称为 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