2 个版本
0.1.2 | 2019年6月25日 |
---|---|
0.1.1 | 2019年6月18日 |
39 in #dot
47KB
1.5K SLoC
Polka
基于 Rust 的 dot 语言解析器;基于 解析表达式语法(PEG),使用优秀的 pest 包作为底层支持。
使用(作为 Rust 库)
- 将以下内容添加到您的
Cargo.toml
[dependencies]
rand = "0.6"
- 通过传递输入
String
来调用parser
函数
extern crate polka;
use polka::parse;
fn main() {
let input = "digraph { a -> b -> c }".to_string();
println!("Polka AST\n: {:?}", parse(input).unwrap());
}
// Polka AST:
// Graph {
// strict: false,
// graph_type: Some(
// Digraph,
// ),
// id: None,
// statements: [
// EdgeStatement(
// EdgeStatement {
// edge: NodeId(
// NodeId {
// node_id: "a",
// port: None,
// },
// ),
// edge_rhs_list: [
// EdgeRhs {
// edge_op: Arrow,
// edge: NodeId(
// NodeId {
// node_id: "b",
// port: None,
// },
// ),
// },
// EdgeRhs {
// edge_op: Arrow,
// edge: NodeId(
// NodeId {
// node_id: "c",
// port: None,
// },
// ),
// },
// ],
// attributes: None,
// },
// ),
// ],
// }
已知限制
- 目前不支持 HTML ids。
许可证
依赖
~1MB
~11K SLoC