Rust项目sqleibniz集成Lua脚本实现可配置静态SQL分析

2024-12-19

sqleibniz是一个用于SQLite方言的静态SQL分析工具,作者为了增强其可配置性和扩展性,将Lua嵌入其中。文章详细介绍了如何使用mlua库在Rust中与Lua进行交互,包括数据结构的转换、Lua函数的调用以及错误处理。通过Lua脚本,用户可以自定义规则和钩子函数,实现更灵活的静态分析,例如自定义诊断信息和代码风格检查。这使得sqleibniz具备了强大的可扩展性,并提升了用户体验。

阅读更多
开发

我为什么喜欢用 Rust 进行词法分析和语法解析

2024-11-08

作者在用 Rust 编写一个名为 sqleibniz 的 SQL 分析工具,目标是对 SQL 输入执行静态分析,包括语法检查、表、列和函数存在性检查等。作者分享了在使用 Rust 开发词法分析器和语法解析器过程中的经验和发现,着重介绍了 Rust 宏在代码去重方面的强大功能,例如利用宏定义抽象语法树节点,减少代码重复。作者还讲述了如何用 Rust 编写类似 Go 的表格驱动测试,并展示了如何利用 Rust 的模式匹配特性进行字符和Token匹配,以及如何进行错误处理和展示。最后,作者还分享了 Rust 中 Option 类型的一些便捷用法,例如 is_some_and、map 和 map_or 等方法,以及迭代器在字符过滤和检查方面的应用。

阅读更多
14
未分类 Parser

Go 迭代器的乐趣

2024-10-10

这篇文章探讨了 Go 1.23 版本中引入的迭代器功能。作者认为,尽管 Go 的迭代器使用起来很简单,但创建迭代器的过程却相对繁琐,尤其是在需要链接多个操作(如 map、filter、forEach)时。为了解决这个问题,作者创建了一个结构体来封装迭代器,并提供类似 JavaScript 的链式操作方法,从而简化了代码。文章最后展示了如何使用该结构体对切片进行反转、映射和过滤等操作。

阅读更多
20
未分类