Typescript AST解析器忽略句子之间的断行

时间:2017-07-11 16:12:09

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

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

我认为可以使用每个语句的开始和结束位置来完成它。但是,事实证明,Typescript解析器会忽略断行。

如果图像不够清晰,我会指出babylon解析器中的 ClassDeclaration 116 开始,而在typescript解析器中从 113开始 STRONG>。

我想知道为什么会发生这种情况以及如何使用Typescript解决它或者有什么办法解决这个问题?我正在使用 tslint 创建自定义规则

打字稿AST解析器 https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5f76ca978af53b1/306e2bd99d0c2851e41933a2df989ae36a2f4b73

typescript ast

Babylon7 AST Parser https://astexplorer.net/#/gist/ffa8dc62cec5bea5a5f76ca978af53b1/d50f63227dec8549a70d6fbb35d4d1aa62b0ea25

enter image description here

1 个答案:

答案 0 :(得分:0)

这是预期的。 pos属性显示最后一个有效标记的结束位置。 node.getStart(sourceFile)方法是您感兴趣的方法,它将返回起始位置。

我建议使用我的ast查看器(ts-ast-viewer),因为它是TypeScript编译器API专用的,并且将向您显示此信息。