4个版本
0.2.5 | 2023年6月9日 |
---|---|
0.2.4 | 2023年6月8日 |
0.2.3 | 2023年6月7日 |
0.2.2 | 2023年6月7日 |
#165 在 解析器工具
130KB
2.5K SLoC
帕科索 - 一种Rust的流式解析器组合框架
帕科索 是一个用于快速解析器开发的框架。它并不旨在构建高性能解析器 - 其他框架更适合此目的 - 而是旨在易于开发,以便快速原型设计和具有适度性能要求的工程。
与其他流式解析器库不同,帕科索 在内部管理传入的流。该功能旨在尽可能简化解析器的编写。 帕科索 能够处理任何读取器,包括内存缓冲区、字符串、文件、套接字和组合这些读取器的IO链。
文档可在 此处 查看。
Jsosso 是一个演示框架的JSON解析器。它包含示例程序、基准测试和更多文档。
lib.rs
:
帕科索 是一个用于快速解析器开发的框架。它并不旨在构建高性能解析器 - 其他框架更适合此目的 - 而是旨在易于开发,以便快速原型设计和具有适度性能要求的工程。
与其他流式解析器库不同,帕科索 在内部管理传入的流。该功能旨在尽可能简化解析器的编写。 帕科索 能够处理任何读取器,包括内存缓冲区、字符串、文件、套接字和组合这些读取器的IO链。
要查看 帕科索 的实际应用,请查看 Jsosso,这是一个演示框架的JSON解析器。它包含示例程序、基准测试和更多文档。
示例
use std::io;
use pacosso::{Stream, ParseResult};
use pacosso::options::Opts;
let parse = |p: &mut Stream<io::Cursor<Vec<u8>>>| -> ParseResult<()> {
p.string("hello")?;
p.whitespace()?;
p.string("world")
};
let mut input = io::Cursor::new("hello world".as_bytes().to_vec());
let mut s = Stream::new(Opts::default().set_buf_size(8), &mut input);
assert!(match s.apply(parse) {
Ok(()) => true,
Err(e) => {
eprintln!("error: {:?}", e);
false
},
});