输入格式
本章节描述了如何将源文件解释为一系列 token。
有关程序如何组织成文件的描述,请参阅 Crates and source files。
源文件编码
每个源文件都被解释为以 UTF-8 编码的 Unicode 字符序列。
[输入.编码.无效] 测试
此规则的测试:
如果文件不是有效的 UTF-8 编码,则会报错。
字节顺序标记移除
如果序列中的第一个字符是 U+FEFF
(字节顺序标记),则会被移除。
CRLF 规范化
每个字符对 U+000D
(CR) 紧接着 U+000A
(LF) 会被替换为单个 U+000A
(LF)。
字符 U+000D
(CR) 的其他出现保持不变(它们被视为空白符 whitespace)。
Shebang 移除
如果剩余的序列以字符 #!
开头,则从序列中删除直到并包括第一个 U+000A
(LF) 的字符。
例如,以下文件的第一行将被忽略
#!/usr/bin/env rustx
fn main() {
println!("Hello!");
}
作为例外,如果 #!
字符后跟(忽略中间的 注释 或 空白符)一个 [
token,则不会删除任何内容。 这可以防止删除源文件开头的 内部属性。
注意: 标准库
include!
宏 对其读取的文件应用字节顺序标记移除、CRLF 规范化和 shebang 移除。include_str!
和include_bytes!
宏 则不会。
Tokenization
然后,生成的字符序列将转换为 token,如本章的其余部分所述。