23 个版本 (13 个重大更新)

使用旧的 Rust 2015

0.15.1 2018 年 4 月 5 日
0.15.0 2018 年 3 月 22 日
0.14.0 2018 年 1 月 24 日
0.13.1 2017 年 6 月 16 日
0.2.0 2015 年 7 月 27 日

#104解析器工具

Download history 352/week @ 2024-03-14 274/week @ 2024-03-21 335/week @ 2024-03-28 225/week @ 2024-04-04 233/week @ 2024-04-11 246/week @ 2024-04-18 239/week @ 2024-04-25 203/week @ 2024-05-02 212/week @ 2024-05-09 225/week @ 2024-05-16 201/week @ 2024-05-23 239/week @ 2024-05-30 204/week @ 2024-06-06 195/week @ 2024-06-13 254/week @ 2024-06-20 101/week @ 2024-06-27

每月 785 次下载

Apache-2.0/MIT

4KB
104

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

无运行时依赖