10 个版本 (重大更改)
0.8.1 | 2024年1月26日 |
---|---|
0.8.0 | 2021年2月5日 |
0.7.0 | 2020年11月29日 |
0.6.0 | 2020年2月17日 |
0.5.0 | 2019年7月5日 |
#74 in 解析工具
53 每月下载量
165KB
4.5K SLoC
rflex
rflex 是一个为 Rust 提供快速词法分析器生成的工具。
cargo install rflex
或者
编写您的 Cargo.toml 和 build.rs
[package]
# ...
build = "build.rs"
[build-dependencies]
# ...
failure = "0.1.5"
rflex = "0.8"
extern crate rflex;
use std::env;
use std::path::Path;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let dest = Path::new(&out_dir).join("target.rs");
let path = Path::new("src").join("target.l");
if let Err(e) = rflex::process(path, Some(dest)) {
for cause in failure::Fail::iter_chain(&e) {
eprintln!("{}: {}", cause.name().unwrap_or("Error"), cause);
}
std::process::exit(1);
}
}
参见 tutorial.md。
不支持的正则表达式
e{num}
... 重复 enum
次e{min,max}
... 重复 emin
到max
次e/s
... 接受 e 之前看前s
许可证
- rflex 在 MIT 许可证下发布。
版权
- 版权 (c) 2018 Preferred Networks, Inc.
- 部分原始代码是在 Java 下编写的,并受 3-clause BSD 许可证的约束
- 版权 (c) Gerwin Klein, Steve Rowe, Regis Decamp。保留所有权利。
依赖库
这些库仅在 rflex 词法分析器生成器中使用,生成的代码不依赖于它们。
- fixedbitset 在 MIT 许可证下发布
- 版权 (c) 2015-2017
- liquid 在 MIT 许可证下发布
- 版权 (c) 2014 cobalt-org
- failure 在 MIT 许可证下发布
依赖
~6–8MB
~168K SLoC