13 个版本 (7 个稳定版)

使用旧的 Rust 2015

1.0.7 2022年7月16日
1.0.6 2021年12月23日
1.0.4 2018年7月30日
1.0.3 2017年10月18日
0.0.4 2017年7月31日

解析工具 中排名 #32

GPL-3.0 许可协议

185KB
4K SLoC

名称

gallop - 通用 LL(1) 解析器

教程请见 文档

示例

let mut grammar: Grammar = BTreeMap::new();

grammar.insert("START", vec![
  vec![RuleElement::NonTerminal("a+")],
]);

grammar.insert("a+", vec![
  vec![RuleElement::Terminal('a'), RuleElement::NonTerminal("a*")],
]);

grammar.insert("a*", vec![
  vec![RuleElement::Terminal('a'), RuleElement::NonTerminal("a*")],
  vec![RuleElement::Empty],
]);

let mut parser = Parser::new(&mut grammar).unwrap();

assert!(parser.parse("aaa").unwrap() == ParseTree::NonTerminal {
    symbol:   "START",
    children: vec![ParseTree::Terminal('a'), ParseTree::Terminal('a'), ParseTree::Terminal('a')],
});

支持

请在此处报告任何错误或功能请求:

请随意fork仓库并提交pull请求 :)

另请参阅

作者

Alfie John

保修

此产品不提供任何类型的保修。

版权和许可证

版权 (C) 2021 by Alfie John

本程序是免费软件:您可以自由分发和/或修改它,具体可参见由自由软件基金会发布的GNU通用公共许可证的条款,许可证版本3或(根据您的选择)任何后续版本。

本程序的分发是希望它有用,但没有任何保证;甚至没有隐含的适销性保证或适用于特定目的的适用性保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已经随本程序收到了GNU通用公共许可证的副本。如果没有,请见 https://www.gnu.org/licenses/

无运行时依赖