1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年5月28日 |
---|
#1457 在 开发工具
35KB
628 行
Luther
Luther 是一个用于稳定 Rust 的嵌入式词法生成器。
用法
Luther 目前还在开发中。以下是大致的工作原理
extern crate luther;
#[macro_use]
extern crate luther_derive;
#[derive(Lexer)]
enum Token {
#[luther(regex="ab")]
Ab,
#[luther(regex="acc*")]
Acc,
}
fn main() {
use luther::Lexer;
let input = ... // some suitable iterator
let tokens = Tokens::lexer(input)
.map(|r| r.map(|s| s.into_inner()));
// use tokens
}
上述语法有一些粗糙的边缘,在 Luther 准备好投入使用之前应该平滑处理。
提供 #[derive(Lexer)]
和识别 #[luther(...)]
属性的过程宏实现位于 luther-derive 包中。
目的是让上述示例中的 tokens
迭代器成为解析器生成器 Lalrpop 的外部词法分析器的一个合适候选。
许可证
Luther 根据您的选择受以下任一许可证的许可
- Apache 许可证2.0版,(LICENSE-APACHE-2.0 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您提交给 Luther 的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,没有任何额外的条款或条件。
依赖关系
~215KB