从 dart2js 或 dart-analyzer 获取类型语法树

Getting the typed syntax tree from dart2js or dart-analyzer

我想准确地导出 dart 编译器(dart2js 或 dartdevc 或其他)或 dart 分析器的源子集,它可以 1. 转换一串 dart 代码(或更好的字符串列表)每一个代表一个编译单元)转换成一个类型化的语法树,2.被翻译成js,3.在浏览器中是运行。一般来说,是否有满足这些要求的标记子集,就是它,我如何找到它。

使用 package:analyzer 完成 #1 相当简单,它与用于提供 IDE 提示和自动完成等的静态分析器相同。Dart 团队目前正在努力统一他们背后的编译器前端在主要 API 上,但就目前而言,analyzer 绝对可以满足您的大部分需求。

下面是一个获取语法树并对其进行 运行 分析的示例:https://github.com/thosakwe/analyzer_examples/blob/master/analyze_a_file/analyze_a_file.dart

至于 #2,您可能需要分叉 dart-lang/sdk 存储库并对 dart2js 进行自己的调整。它不是作为独立包发布的。否则,您可以编写自己的编译器,这可能不会很有趣。

  1. 我想你必须弄清楚如何得到 #2 和 运行,但假设,如果你可以编译一个 JavaScript 源代码,你可以 eval编译后。

要回答你的最后一个问题,不,AFAIK,没有 dart2js 的子集可以让你创建自己的 Dart-to-JavaScript 编译器。