扫描器
为避免重复创建扫描器造成的开销,parser.ts
中创建了一个扫描器的单例。解析器根据需要使用 initializeState
函数准备该扫描器。
下面是解析器中的实际代码的简化版,你可以运行它演示以上概念
该段代码输出以下内容:
调用 scan
后,扫描器更新其局部状态(扫描位置,当前 token 详情等)。扫描器提供了一组工具函数获取当前扫描器状态。下例中,我们创建一个扫描器并用它识别 token 以及 token 在代码中的位置。
该代码输出以下内容:
即便 TypeScript 解析器有单例扫描器,你仍可以使用 创建独立的扫描器,然后可以用 setText
/setTextPos
随意扫描文件的不同位置。