#lalr-parser #context-free-grammar #lalr #parser #table #generation #control

lalry

一个从上下文无关文法创建LALR(1)解析器的库

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2024年6月8日

#82解析工具

Download history 218/week @ 2024-06-07 43/week @ 2024-06-14 136/week @ 2024-06-21 89/week @ 2024-06-28 59/week @ 2024-07-05 83/week @ 2024-07-12 99/week @ 2024-07-19 74/week @ 2024-07-26 102/week @ 2024-08-02 103/week @ 2024-08-09

385 每月下载量
用于 10 个crate(通过 parol

MIT/Apache

55KB
1K SLoC

lalry - 一个从上下文无关文法创建LALR(1)解析器的库

这是由伟大的lalr crate分支而来,这是一个从上下文无关文法创建LALR(1)解析器的库。

lalr 的扩展

为了使解析表的生成更灵活,lalry 增加了一种控制此过程的方法。使用 trait Config 来实现,并可以提供自定义实现以偏离默认设置。为了保持与之前版本的默认行为,用户可以使用 DefaultConfig 结构,它提供了标准行为的实现。

lalry 的特性

lalry,虽然不是主要目标,但在功能上与它的祖先 lalr 完全兼容。它可以作为直接替换使用,只需进行少量修改。

您需要做的就是创建一个 DefaultConfig 并将其传递给对 lalr1 的调用

let config = DefaultConfig::new();
let parse_table = grammar.lalr1(&config).unwrap();

使用默认配置,您将获得与使用 lalr 风格 API 相同的功能

let parse_table = grammar.lalr1(|_, _| true, |_, _| 0).unwrap();

无运行时依赖