48 个版本

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 日

77开发工具

Download history 144987/week @ 2024-04-08 159052/week @ 2024-04-15 159863/week @ 2024-04-22 142553/week @ 2024-04-29 143676/week @ 2024-05-06 168158/week @ 2024-05-13 172297/week @ 2024-05-20 159197/week @ 2024-05-27 169873/week @ 2024-06-03 175170/week @ 2024-06-10 170887/week @ 2024-06-17 166364/week @ 2024-06-24 150499/week @ 2024-07-01 167078/week @ 2024-07-08 179239/week @ 2024-07-15 187356/week @ 2024-07-22

691,377 次每月下载
841 个 Crates 中使用 (221 直接使用)

Apache-2.0 OR MIT

39KB
702

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实现的。LALRPOP
  • Gluon是一种静态类型函数式编程语言。Gluon
  • RustPython是用Rust重写的Python 3.5+。RustPython
  • Solang是用Rust重写的Ethereum Solidity。Solang

贡献

如果您打算更改LALRPOP的语法,您真的应该阅读CONTRIBUTING.md

依赖关系

~0–425KB