#parser-generator #proc-macro #grammar #lalr #definition #source #yacc

racc

RACC是将伯克利YACC移植到Rust的版本,并允许你直接在Rust源代码中编写语法定义。

3个版本

0.0.4 2023年10月2日
0.0.3 2021年9月12日
0.0.2 2015年1月8日
0.0.1 2014年12月26日

#279过程宏

每月 21 次下载

MIT 许可证

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 做得更好

限制

不幸的是,这个项目存在很多限制和不完善的地方。找到它们是留给读者的练习。

作者

RACC 由Arlie Davis实现 arlie.davis@gmail.com。我这样做是为了将一个众所周知(并且有用)的工具移植到Rust的一个实验。我也对Rust对过程宏的支持很感兴趣,我想看看我是否可以用过程宏实现一些有趣的东西。

反馈

请随时将您对RACC的任何反馈发送给我 arlie.davis@gmail.com

依赖项

~1.5MB
~37K SLoC