【问题标题】:Typescript AST parser ignores break lines between sentencesTypescript AST 解析器忽略句子之间的断行
【发布时间】:2019-02-23 05:00:26
【问题描述】:

我对如何将 Typescript 解析为 AST 有疑问。 我的目标是能够计算导入和类声明之间有多少断线。

我认为可以使用每个语句的开始和结束位置来做到这一点。但是,事实证明 Typescript 解析器忽略了断线。

如果图像不够清晰,我会指出巴比伦解析器中的 ClassDeclaration116 开始,而在 typescript 解析器中从 113 开始强>。

我想知道为什么会发生这种情况以及如何使用 Typescript 解决它,或者有任何解决方法吗?我正在使用 tslint 创建自定义 Rule

Typescript AST 解析器 https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5f76ca978af53b1/306e2bd99d0c2851e41933a2df989ae36a2f4b73

Babylon7 AST 解析器 https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5f76ca978af53b1/d50f63227dec8549a70d6fbb35d4d1aa62b0ea25

【问题讨论】:

  • 对我来说听起来像是 TS 解析器中的一个错误。可能最好提交错误。
  • @loganfsmyth 谢谢,我已经等了一段时间没有答案,也许你是对的。

标签: parsing babeljs abstract-syntax-tree tslint typescript-compiler-api


【解决方案1】:

这是意料之中的。 pos 属性显示最后一个重要标记的结束位置。 node.getStart(sourceFile) 方法是您感兴趣的,将返回起始位置。

我建议使用我的 ast 查看器 (ts-ast-viewer),因为它专门用于 TypeScript 编译器 API,并且会显示这些信息。

【讨论】:

  • 感谢分享链接,我完全忘记了!祝你有美好的一天:)
猜你喜欢
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多