Expand description
词法分析器模块。
将源代码字符流分解为 Token 序列,识别关键字、标识符、字面量等词法单元。 词法分析器模块:将源代码字符流转换为 Token 流。
本模块实现了 Onion 语言的词法分析器(Lexer),负责将原始的源代码字符串 分解为结构化的 Token 序列,为后续的语法分析阶段提供输入。
§主要功能
§Token 类型识别
- 数字:整数、浮点数、十六进制、八进制、二进制
- 字符串:单引号、双引号、反引号、多行字符串、原始字符串
- 标识符:变量名、函数名、关键字(支持 Unicode 字符)
- 符号:运算符、分隔符、括号等
- 注释:单行注释
//
和多行注释/* */
- Base64:特殊的 Base64 编码字符串
$"..."
§字符串处理特性
- 转义序列:
\n
,\t
,\r
,\\
,\"
,\u1234
,\x41
等 - 原始字符串:
R"delimiter(content)delimiter"
格式 - 多行字符串:
"""content"""
或'''content'''
- Unicode 支持:完整的 Unicode 字符和转义序列支持
§数字格式支持
- 十进制:
123
,3.14
,1.23e-4
- 十六进制:
0xFF
,0x1A2B
- 八进制:
0o777
,0O123
- 二进制:
0b1010
,0B0011
- 科学计数法:
1.23e10
,4.56E-7
§使用示例
ⓘ
let source: Source = source_code.chars().collect();
let tokens = tokenizer::tokenize(&source);
let filtered_tokens = tokenizer::reject_comment(&tokens);
Modules§
- tokenizer
- 词法分析器模块。
Structs§
- Token
- Token 结构体。
Enums§
- Token
Type - Token 类型枚举。