rust 词法结构
简单记录一下 rust 的词法结构及相关文档。
Rust 的词法分析就是将 Rust 源码分解成一个个 Token,这些 Token 之后会被用于构建抽象语法树(AST)。Rust 的词法结构包含六大部分:
- 关键字(Keywords)
- 标识符(Identifiers)
- 注释(Comments)
- 空白(Whitespace)
- 词条(Tokens)
- 路径(Path)
关键字(Keywords)
Rust 提供三种类型的关键字:
- 严格关键字(Strict)
- 保留字(Reserved)
- 弱关键字(Weak)
严格关键字
as/async/await/break/const/continue/crate/dyn/if/else/struct/enum/false/fn/for/impl/in/let/loop/match/mod/move/mut/pub/ref/return/self/Self/static/super/trait/true/type/unsafe/use/where/while
保留字
abstract/become/box/do/final/macro/override/priv/typeof/unsized/virtual/yield/try
弱关键字
macro_rules/union/'static/dyn
标识符(Identifiers)
Rust 目前只支持 ASCII 字符作为标识符,不能以数字开头,只能字母或下划线开头。
原始标志符(Raw identifiers)
原始标识符类似于普通标识符,但以 r#
为前缀。 (请注意,r# 前缀不包含在实际标识符中。)与普通标识符不同,原始标识符可以是除上面为 RAW_IDENTIFIER 列出的关键字之外的任何严格或保留关键字。
注释(Comments)
注释分为文档注释和非文档注释。文档注释就是这部分注释可以通过 cargo doc
命令生成文档。
空白(Whitespace)
空白字符包括空格、制表符、换行符、回车符和垂直制表符。任何形式的空白在 Rust 中只用于分隔标记,没有语义意义。
词条(Tokens)
词条包括:
- 语言项(item)
- 块(block)
- 语句(Stmt)
- 表达式(Expr)
- 模式(Pattern)
- 关键字(Keyword)
- 标识符(Ident)
- 字面量(Literal)
- 生命周期(Lifetime)
- 可见性(Vis)
- 标点符号(Punctuation)
- 分隔符(Delimiter)
- 词条树(TokenTree)
- 属性(Attribute)
路径(Path)
路径是由名称空间限定符(也就是 ::
),它在逻辑上分隔的一个或多个路径段组成的序列。路径有多种应用场景。
- 模块路径
- 方法调用
- 完全限定无歧义调用
- 泛型函数-turbofish操作符