#parser-combinator #parser #streaming-parser #json-parser #解析框架

帕科索

https://github.com/toschoo/pacosso/blob/master/README.md

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解析器工具

GPL-2.0 WITH Bison-exception-2.2

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
    },
});

无运行时依赖