Búsqueda de sitios web

árbol de sintaxis abstracta - ¿Qué enfoques al recorrer un AST de TypeScript producen qué?


Comencé a experimentar con el compilador de Typescript, especialmente usando el envoltorio ts-morph. Actualmente estoy intentando recorrer el AST de un archivo fuente para deducir ciertos tipos de nodos y sus propiedades, y noté al menos tres posibilidades para recorrer el AST respectivo, las cuales producen resultados diferentes:

  • SourceFile.getChildSyntaxListOrThrow().getChildren().forEach(...) en combinación con la llamada recursiva node.getChildren().forEach(...), que aparentemente es el único enfoque para obtener también trivia y comentarios.
  • SourceFile.getChildren().forEach(...) sin .getChildSyntaxListOrThrow()
  • SourceFile.forEachDescendant(...) sin la necesidad de llamar a un manejador visitNode para el nodo hijo
  • SourceFile.forEachChild(...) que no produce palabras clave

Desafortunadamente, no parece que pueda entender la diferencia exacta para determinar completamente qué enfoque es mejor en cada caso. Entonces, la pregunta es: "¿qué resultados producen los enfoques que recorren un AST de Typescript?"