Trivia
Trivia 表示源文本中对于正常理解代码而言基本上无关紧要的部分。例如; 空格、注释,甚至是冲突标记。Trivia 不存储在 AST (以保持轻量级)。 然而,它可以使用一些 API 按需获取。ts.*。
Trivia 所有权
一般来说:
- 一个
Token拥有它之后在同一行直到下一个Token的任何Trivia。 - 该行之后的任何注释都与以下标记相关联。
对于文件中的前导和结束注释:
- 源文件中的第一个标记获取所有初始
Trivia。 - 文件中最后的琐事序列被附加到文件结尾标记上,否则该标记的宽度为零。
Trivia APIs
对于大多数基本用途,注释是“有趣”的琐事。可以通过以下函数获取属于 Node 的评论:
| 功能 | 描述 |
|---|---|
ts.getLeadingCommentRanges | 给定源文本和该文本中的位置,返回给定位置之后的第一个换行符和标记本身之间的注释范围(可能对 最有用 ts.Node.getFullStart)。 |
ts.getTrailingCommentRanges | 给定源文本和该文本中的位置,返回注释范围,直到给定位置之后的第一个换行符(可能对 最有用 ts.Node.getEnd)。 |
例如,想象一下源文件的这一部分:
debugger;/_hello_/
//bye
/_hi_/ function
getLeadingCommentRanges 因为 function 只会返回最后 2 条注释 //bye 和 /_hi_/。
适当地,在调试器语句的末尾调用 getTrailingCommentRanges 将提取 /_hello_/ 注释。
Token Start/Full Start
节点具有所谓的 “令牌启动” 和 “完全启动” 。
- Token Start:更自然的版本,它是文件中标记文本开始的位置。
- Full Start:扫描器从最后一个重要令牌开始扫描的点。
AST 节点有一个用于 getStart 和 getFullStart。在以下示例中:
debugger;/_hello_/
//bye
/_hi_/ function
因为 function token 开始是在, function 而 Full Start 是在 /_hello_/ 。请注意,Full Start 甚至包括原本由前一个节点拥有的 Trivia。