6个版本
使用旧的Rust 2015
0.3.0 | 2021年6月8日 |
---|---|
0.2.0 | 2018年8月21日 |
0.1.5 | 2018年8月20日 |
1771 在 解析器实现
每月35 次下载
45KB
1.5K SLoC
rust-abc-2
使用PEG编写的ABC解析器。
使用方法
将包添加到您的cargo依赖项中。
[dependencies]
abc-parser = "0.2"
然后您可以通过abc模块使用PEG生成的规则。
extern crate abc_parser;
use abc_parser::datatypes::*;
use abc_parser::abc;
let parsed = abc::tune_book("X:1\nT:Example\nK:D\n").unwrap();
assert_eq!(
parsed,
TuneBook::new(None, vec![
Tune::new(
TuneHeader::new(vec![
InfoField::new('X', "1".to_string()),
InfoField::new('T', "Example".to_string()),
InfoField::new('K', "D".to_string())
]),
None
)
])
)
很可能dev
分支有更多最近添加的功能,这些功能可能不完整,但(可能)不会破坏现有功能。您还可以像这样让cargo直接从dev
分支安装
[dependencies]
abc-parser = { git = "https://gitlab.com/Askaholic/rust-abc-2", branch = "dev" }
特性列表
这些大致按照ABC标准的顺序。
- 信息字段
- 字段延续
- 音符
- 音高
- 变化音
- 时值
- 连音
- 破碎的节奏
- 休止符
- 谱号和移调
- 符杠
- 小节
- 变奏终止式
- 滑音
- 装饰音
- 连音
- 装饰
- 符号行
- 重新定义符号
- 和弦与单音
- 和弦符号
- 注释
- 歌词
- 多声部
- 文本字符串
- 宏
- 样式表指令
- 方言
历史
第一个版本是尝试手动编写解析器,但使用PEG更易于维护。旧的仓库在这里:https://gitlab.com/Askaholic/rust-abc
依赖项
~150KB