26个版本 (15个破坏性版本)

使用旧Rust 2015

0.16.0 2018年9月3日
0.15.2 2018年5月3日
0.15.1 2018年4月5日
0.15.0 2018年3月22日
0.2.0 2015年7月27日

192 in 解析工具

Download history 426/week @ 2024-03-13 400/week @ 2024-03-20 404/week @ 2024-03-27 428/week @ 2024-04-03 322/week @ 2024-04-10 393/week @ 2024-04-17 415/week @ 2024-04-24 373/week @ 2024-05-01 342/week @ 2024-05-08 323/week @ 2024-05-15 369/week @ 2024-05-22 349/week @ 2024-05-29 320/week @ 2024-06-05 294/week @ 2024-06-12 382/week @ 2024-06-19 213/week @ 2024-06-26

每月1,261次下载

Apache-2.0/MIT

4.5MB
102K SLoC

LALRPOP

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

Build status

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 本身也是用 LALRPOP 实现的。
  • Gluon 是一种静态类型函数式编程语言。

依赖项

~4.5–6MB
~101K SLoC