Skip to content
/ rflex Public

Fast lexer code generator for Rust

License

Notifications You must be signed in to change notification settings

pfnet/rflex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fa13b1a · Mar 10, 2025

History

73 Commits
Aug 6, 2024
Mar 10, 2025
Mar 10, 2025
Mar 10, 2025
Mar 10, 2025
Mar 10, 2025
Apr 8, 2019
Mar 10, 2025

Repository files navigation

rflex

rflex is a fast lexical analyzer generator for Rust.

GitHub license Crates Status

cargo install rflex

or

Write your Cargo.toml and build.rs

[package]
# ...
build = "build.rs"

[build-dependencies]
# ...
failure = "0.1.5"
rflex = "0.9.0"
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);
    }
}

See tutorial.md.

Unsupported regular-expression

  • e{num} ... repeat e num times
  • e{min,max} ... repeat e min to max times
  • e/s ... lookahead s before accept e

License

  • rflex is released under MIT License.

Copyright

  • Copyright (c) 2018 Preferred Networks, Inc.
  • Partial original codes were written in Java under 3-clause BSD license:
    • Copyright (c) Gerwin Klein, Steve Rowe, Regis Decamp. All rights reserved.

Dependent libraries

These libraries are used only rflex lexer generator, generated code doesn't depend on them.

  • fixedbitset released under MIT License
    • Copyright (c) 2015-2017
  • liquid released under MIT License
    • Copyright (c) 2014 cobalt-org
  • failure released under MIT License