为什么我喜欢用 Rust 进行标记化和解析

主要观点:正在为 Sql 编写分析工具sqleibniz,用于 sqlite 方言,包括静态分析(语法检查、表等是否存在检查等),结合嵌入式 sqlite 运行时和在其中断言条件,提供良好开发体验,还能展示带上下文等的高质量错误消息,项目包括词法分析、语法解析等阶段,之后计划写 lsp 服务器;
关键信息:

  • sqleibniz工具针对 sqlite 方言,能进行静态分析等操作。
  • 用宏实现代码重复和抽象语法树节点定义等,如node!宏。
  • 有词法分析和语法解析的测试,包括通过和失败的测试用例,用不同宏实现。
  • 匹配字符用matches!宏,匹配令牌用match语句,在词法分析和语法解析中都有应用。
  • 展示了错误显示方式,如缺少分号的错误。
  • 介绍了 Rust 的一些特性,如Option相关操作(is_some_andmapmap_or)、迭代器(过滤字符、检查字符等)。
    重要细节:
  • 宏在 Rust 中的使用细节,如宏参数定义、重复定义等。
  • 词法分析和语法解析的具体实现代码和逻辑,如各种函数的功能和执行流程。
  • 不同测试用例的具体内容和预期结果。
  • sqleibniz中错误处理和显示的相关代码和示例。
阅读 13
0 条评论