6

Dart 在其自己的 Dart VM 中运行,但您可以将其编译为现代优化的 JavaScript。但这是如何工作的?网上有没有解释这个过程的文章或论文?

我想知道这是否是一个简单直接的元素与元素匹配,开发、处理只是耗时,或者 Dart 的某些元素/方面是否无法编译为 JavaScript。

http://www.dartlang.org

编辑:谢谢你的 2 个答案。关键是,我告诉我的一位同事 dart 并且 dart 可以编译为 JavaScript。他承认它可以编译成 JavaScript,但它会产生 mumbojumba 代码,并且只适用于简单的东西。最后他说:'''好吧,解释我。这种编译将如何处理非平凡的代码?'''

这就是我问的原因。我希望网上有一些材料可以链接他。

4

3 回答 3

6

Dart 编辑器现在将使用 dart2js 将您的 Dart 代码编译为 JavaScript。

至于您问题的第二部分,dart:io 库仅适用于服务器/命令行,因此无法使用 dart2js 进行编译。

我现在意识到我认为你在问“工程师是如何设计和实现 dart2js 编译器的”,而不是“你如何运行 dart2js”

这是一篇关于 dart2js 公告的博文:http: //news.dartlang.org/2012/05/new-dart-to-javascript-compiler-ready.html

工程师之一 Kasper Lund 补充道:“对于技术上感兴趣的人,我可以告诉你,新编译器使用 SSA 形式(静态单一赋值)的内部表示,并且编译器完全在 Dart 中实现。”

源代码位于http://code.google.com/p/dart/source/browse/#svn%2Fbranches%2Fbleeding_edge%2Fdart%2Flib%2Fcompiler%2Fimplementation

于 2012-05-12T13:22:14.793 回答
1

Kasper lund 关于中间表示和实施的优化。https://www.youtube.com/watch?v=GwBb_nqQLuc

于 2013-11-09T19:37:14.883 回答
1

网上有没有解释这个过程的文章或论文?

前端是您经典的手动词法分析器和递归下降解析器。后端是,我相信做一堆类型推断(因为 Dart 的类型注释太松散,无法让你从它们进行可靠的静态类型分析,并且运行时语义不会让你认真对待类型注释)。如果您查找有关“具体类型推断”的论文,我相信您会找到一些您正在寻找的文献。此外,任何关于编译到 SSA 表单(以及从该表单生成代码,我假设)的任何参考都应该有所帮助。

于 2012-05-12T21:32:37.243 回答