6个版本

0.3.3 2022年5月28日
0.3.2 2022年5月28日
0.2.0 2022年1月20日
0.1.0 2022年1月16日

解析器工具中排名291

MIT许可证

10KB
227

此crate允许您编写类似于以下解析器的测试

let input = "#( a b #items x y )*";
let spans = "   ^ ^ ^----^ ^ ^   ";
let expected = [
    Rule::token,
    Rule::token,
    Rule::interpolate,
    Rule::token,
    Rule::token,
];

使用^^^^---^突出显示每个标记,以指示其范围。parser_test::test()将确保解析器输出包含在指定位置的确切这些标记。

只要您为其输出实现了Token trait,就可以使用任何解析器。提供了通用的TestToken,可能适用于所有用例。

到目前为止,此crate用于测试pest解析器

let mut output = Lexer::parse(Rule::interpolate_repetition, input).unwrap();
let output = output.next().unwrap().into_inner().map(|t| {
    let span = t.as_span();
    TestToken {
        start: span.start(),
        end: span.end() - 1,
        rule: t.as_rule()
    }
});
assert!(parser_test::test(output, expected, spans));

无运行时依赖