【问题标题】:Getting the typed syntax tree from dart2js or dart-analyzer从 dart2js 或 dart-analyzer 获取类型化语法树
【发布时间】:2018-01-16 04:32:10
【问题描述】:

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

【问题讨论】:

    标签: dart dart2js dart-analyzer


    【解决方案1】:

    使用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 编译器。

    【讨论】:

    • 答案描述了如何获取 ast 并运行 typer,但没有描述第三步:如何获取类型化的语法树?
    • 示例中函数返回的CompilationUnit就是你要查找的语法树。
    • 如何运行该示例“analyze_a_file.dart”?如何使用 pub 运行它?不是包裹?!
    • 你应该克隆 repo,然后你可以运行示例。
    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2019-07-24
    • 2019-11-23
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多