# rflex rflex is a fast lexical analyzer generator for Rust. [![GitHub license](https://img.shields.io/github/license/pfnet/rflex.svg)](https://github.com/pfnet/rflex) [![Crates Status](https://img.shields.io/crates/v/rflex.svg)](https://crates.io/crates/rflex) ``` cargo install rflex ``` or Write your Cargo.toml and build.rs ```toml [package] # ... build = "build.rs" [build-dependencies] # ... failure = "0.1.5" rflex = "0.8" ``` ```rust 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](docs/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](https://github.com/bluss/fixedbitset) released under MIT License * Copyright (c) 2015-2017 * [liquid](https://github.com/cobalt-org/liquid-rust) released under MIT License * Copyright (c) 2014 cobalt-org * [failure](https://github.com/rust-lang-nursery/failure) released under MIT License