< 返回版块

苦瓜小仔 发表于 2025-08-02 09:30

Tags:日报

Pest Book 终章:实现 AWK 解析

这个项目是一个基于 pest 解析器的 Awk 克隆实现,旨在提供一个完整的项目示例,展示如何使用 pest 解析器来解析和执行 Awk 脚本。

项目支持正则表达式模式、字符串和数值变量、大多数 POSIX 操作符和一些内置函数,但不支持用户定义函数以简化变量作用域管理。

AWK 是一种模式扫描和数据提取语言,擅长处理结构化文本文件。我们的实施将支持:

  • 模式-动作编程模型
  • 正则表达式匹配
  • 处理 field 和 record
  • 内置变量和函数
  • 算术运算和字符串运算
  • 控制流结构

在本教程结束时,您将拥有一个功能齐全的 AWK 解释器,能够运行以下程序:

BEGIN { print "Processing employee data..." }
/Engineer/ { engineers++ }
$2 > 30 { print $1, "is over 30 years old" }
END { print "Found", engineers, "engineers" }

阅读:https://pest.rs/book/examples/awk.html

代码:https://github.com/pest-parser/book/tree/master/examples/awk

Rasterizeddb:在 115 毫秒内全表扫描 500 万行的高性能数据库

我用 Rust 从头开始编写的自定义数据库 Rasterized DB 能够在 115 毫秒内扫描 500 万行(全表扫描)。

它从无模式转变为有模式,兼容 PostgreSQL 方言,并计划引入多种高级特性。目前项目仍处于开发阶段,稳定性尚未成熟,建议谨慎使用。

Reddit | 仓库:https://github.com/milen-denev/rasterizeddb

XMLity:功能最完善的 XML 解析库

XMLity 是一个受 Serde 启发的 XML 序列化/反序列化库,专为复杂 XML 结构设计,采用试错法解析,功能强大但速度稍慢。

它解决了其他库(如 yaserde、quick-xml)在命名空间和复杂结构支持上的不足。

与其他工具对比

  • serde-xml-rs:缺乏对命名空间和其他功能的完整支持。
  • yaserde:缺乏对试错法反序列化的支持,无法完整覆盖 XML 模式。
  • quick-xml:缺乏对命名空间的支持。

Reddit | 仓库:https://github.com/lukasfri/xmlity

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页