26 个不稳定版本 (4 个破坏性更新)
新 0.6.0-beta5 | 2024 年 8 月 21 日 |
---|---|
0.6.0-beta3 | 2024 年 8 月 20 日 |
0.5.4 | 2024 年 7 月 30 日 |
0.4.6 | 2024 年 2 月 15 日 |
0.0.2 | 2023 年 10 月 31 日 |
#773 在 开发工具
每月 1,092 次下载
41KB
569 代码行
Atlas-core
Crate 用于托管 Atlas77 项目。一个嵌入式函数式语言。
atlas_core
atlas_core
是一个 Rust 库,旨在简化编程语言的词法分析和令牌解析。它提供了一个灵活且可定制的词法分析器实现,并提供了宏来定义语言特定的令牌、关键字和符号。功能
- 词法分析器生成:使用宏自动生成词法分析结构和方法。
- 令牌类型定义:轻松定义各种令牌类型,包括字面量、关键字和符号。
- 错误处理:具有详细错误消息和可恢复错误支持的强大错误处理。
- 可定制:使用特定的关键字、符号和数字解析选项配置您的词法分析器。
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
atlas_core = "0.6.0"
用法
定义符号
所有内容都在重构中,所以它不会那样工作。请保持关注更新!
使用 symbols!
宏来定义您的语言中使用的符号
symbols! {
'+' => Plus,
'-' => Minus,
'*' => Asterisk,
'/' => Slash,
// Add more symbols as needed
}
定义关键字
使用 keyword!
宏来定义关键字
keyword! {
"if",
"else",
"while",
// Add more keywords as needed
}
配置数字解析
使用 number!
宏来配置数字解析选项
number! {
enable_f64: true,
enable_i64: true
}
生成词法分析器
使用 lexer!
宏来生成具有默认或自定义配置的词法分析器
lexer!();
示例
以下是一个使用 atlas_core
创建简单词法分析器的示例
use atlas_core::prelude::*;
symbols! {
'+' => Plus,
'{' => LBracket,
'}' => RBracket,
';' => SemiColon,
}
keyword! {
"if",
"return"
}
number! {
enable_f64: true,
enable_i64: true
}
lexer!();
fn main() {
let source = "if x + y { return 42; }";
let tokens = Lexer::tokenize("example.rs", source).unwrap();
for token in tokens {
println!("{:?}", token);
}
}
贡献
欢迎贡献!请提出问题或提交拉取请求。
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
依赖关系
~2MB
~27K SLoC