26 个不稳定版本 (4 个破坏性更新)

0.6.0-beta52024 年 8 月 21 日
0.6.0-beta32024 年 8 月 20 日
0.5.4 2024 年 7 月 30 日
0.4.6 2024 年 2 月 15 日
0.0.2 2023 年 10 月 31 日

#773开发工具

Download history 1/week @ 2024-06-06 6/week @ 2024-06-27 81/week @ 2024-07-04 555/week @ 2024-07-25 138/week @ 2024-08-01 2/week @ 2024-08-08 395/week @ 2024-08-15

每月 1,092 次下载

MIT 许可证

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