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
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请求 :)
另请参阅
作者
保修
此产品不提供任何类型的保修。
版权和许可证
版权 (C) 2021 by Alfie John
本程序是免费软件:您可以自由分发和/或修改它,具体可参见由自由软件基金会发布的GNU通用公共许可证的条款,许可证版本3或(根据您的选择)任何后续版本。
本程序的分发是希望它有用,但没有任何保证;甚至没有隐含的适销性保证或适用于特定目的的适用性保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了GNU通用公共许可证的副本。如果没有,请见 https://www.gnu.org/licenses/。