模块

std.parse

无分配的 ASCII 扫描器和无符号整数解析器。

状态

当前可运行:

API返回值说明
std.parse.isAsciiDigit(value)Bool检查首字节是否为 09
std.parse.isAsciiAlpha(value)Bool检查首字节是否为 ASCII 字母。
std.parse.isIdentifierStart(value)Bool检查首字节是否可作为 Zero 标识符的起始。
std.parse.isWhitespace(value)Bool检查是否为 ASCII 空白字符。
std.parse.scanDigits(value)usize计算前导 ASCII 数字序列的长度。
std.parse.scanIdentifier(value)usize计算前导标识符 token 的长度。
std.parse.parseU8(value)Maybe<u8>解析完整的十进制字节值。
std.parse.parseU16(value)Maybe<u16>解析完整的十进制无符号 16 位值。
std.parse.parseU32(value)Maybe<u32>解析完整的十进制无符号 32 位值。

当前限制:

  • 源码位置和跨度类型。
  • 超出当前零分配扫描原语的丰富游标对象。
  • 语言解析器和数据解析器共享的 token 与诊断数据。

示例

use std.parse pub fn main Void world World !  let digit std.parse.isAsciiDigit "7"  let ident std.parse.isIdentifierStart "_"  let scanned std.parse.scanDigits "123abc"  let parsed std.parse.parseU16 "8080"  if && (&& (&& (&& digit ident) (== scanned 3)) parsed.has) (== parsed.value 8080)    check world.out.write "parse primitives ok\n"

设计说明

该模块保持面向字节的设计,使编译器、配置和编解码代码无需 Unicode 标量处理或堆分配即可完成解析。

整数解析器返回 Maybe<T> 而非分配诊断信息。调用者可在其上层构建更丰富的错误处理。