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

问题描述 投票:1回答:1

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

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

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

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

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

typescript ast

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

enter image description here

parsing babeljs abstract-syntax-tree tslint typescript-compiler-api
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.