【Rust日报】 Pest Book 终章:实现 AWK 解析

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 日报小组 苦瓜小仔

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值