#go #baduk #parser #sgf #weiqi #pest-parser

sgf-parser

SGF文件解析库

12个版本 (稳定)

2.6.0 2021年1月21日
2.5.0 2020年12月27日
2.4.0 2020年1月24日
2.3.0 2019年9月18日
0.1.0 2018年12月19日

#1173解析器实现


用于 goban

MIT 许可证

44KB
977

Build Status Crate Docs

SGF解析器

Rust的SGF解析器。支持所有SGF属性和树分支。

注意GameTree转换为字符串时,我们将所有字符集令牌转换为UTF-8,因为这是Rust中所有字符串的编码。

使用pest进行实际的解析部分。

开发

通过在每次提交上运行cargo clippycargo fmt来确保代码质量。

所有代码也应进行单元测试。

示例用法

use sgf_parser::*;

let sgf_source = "(;C[comment]EV[event]PB[black]PW[white];B[aa])";
let tree: Result<GameTree, SgfError> = parse(sgf_source);

let tree = tree.unwrap();
let unknown_nodes = tree.get_unknown_nodes();
assert_eq!(unknown_nodes.len(), 0);

let invalid_nodes = tree.get_invalid_nodes();
assert_eq!(invalid_nodes.len(), 0);

tree.iter().for_each(|node| {
  assert!(!node.tokens.is_empty());
});

let sgf_string: String = tree.into();
assert_eq!(sgf_source, sgf_string());

依赖项

~3MB
~59K SLoC