Module lexer

Source
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§

TokenType
Token 类型枚举。