3个版本
0.0.4 | 2023年10月2日 |
---|---|
0.0.3 |
|
0.0.2 | 2015年1月8日 |
0.0.1 | 2014年12月26日 |
#279 在 过程宏 中
每月 21 次下载
195KB
4K SLoC
RACC — Rust Another Compiler-Compiler
伯克利YACC解析器生成器的Rust版本
racc
是一个Rust过程宏(proc-macro),允许crates在Rust源代码中嵌入 LALR(1)
语法。
如何使用它?
查看 racc/examples/math.rs
了解编写语法的简要示例。
对于词法分析器我该做什么?
nom 目前可能是你的最佳选择。
但是,为什么??
我一直喜欢 yacc
,多年前我就将 yacc
移植到Rust作为一个语法扩展。这个项目主要是一个将东西移植到Rust的练习,看看结果如何。如果对任何人有用,那么它就是有用的,如果没用——嗯,它只是另一个在GitHub上腐烂的仓库,没人打扰。
这个移植练习的一部分是看看C语言习惯如何转化为Rust语言习惯。我发现将代码移植到Rust几乎总是可以阐明底层算法,因为切片和向量等概念比C指针更能清晰地表达算法的意图。
有更好的包,所以放弃吧。
当然,没关系。你想做什么就做什么。
这些包在某些方面甚至所有方面都比 racc
做得更好
- https://crates.io/crates/lalrpop - 在几乎所有方面都更好
- https://crates.io/crates/nom - 适合编写解析器
限制
不幸的是,这个项目存在很多限制和不完善的地方。找到它们是留给读者的练习。
作者
RACC 由Arlie Davis实现 arlie.davis@gmail.com
。我这样做是为了将一个众所周知(并且有用)的工具移植到Rust的一个实验。我也对Rust对过程宏的支持很感兴趣,我想看看我是否可以用过程宏实现一些有趣的东西。
反馈
请随时将您对RACC的任何反馈发送给我 arlie.davis@gmail.com
。
依赖项
~1.5MB
~37K SLoC