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 解析工具

Download history 1/week @ 2024-07-02 34/week @ 2024-07-23 19/week @ 2024-07-30

53 每月下载量

MIT 许可证

165KB
4.5K SLoC

rflex

rflex 是一个为 Rust 提供快速词法分析器生成的工具。

GitHub license Crates Status

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} ... 重复 e num
  • e{min,max} ... 重复 e minmax
  • 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