M98*_*M98 53 javascript compiler-construction typescript
在GitHub上的TypeScript存储库中,根据GitHub,存储库只包含100.0%TypeScript (.ts文件)
它是如何工作的?以及TypeScript如何将其自身编译为JavaScript?
ssu*_*ube 59
这称为编译器引导,并且由于多种原因而很常见,尤其是您正在编写的语言通常是用于理解您正在编写的语言中实现的概念的最佳语言...
如果你看一下这篇文章,大多数主要语言都有自托管编译器(C,C++).这样做意味着您通过新的编译器运行大量代码,这是对功能的良好测试.在通常的情况下,你正在编写一个编译器,因为你想要一种新语言,它比你当前的语言有一些好处,所以能够在编写编译器时利用这些好处是有道理的.
第一遍必须用现有语言编写,但是一旦有了编译器,就可以用它来编译下一个版本,依此类推.显然,这限制了编译器仅使用n-1修订版中的功能,但是因为您控制编译器应该是次要问题.引用维基百科:
C++编译器clang的主要部分是用C++的子集编写的,可以用g ++和Microsoft Visual C++编译.
由于TypeScript是JavaScript的超集,因此编译器可以(理论上)用共享语法编写并在其中编译.我不相信这种情况,但这种关系确实为初始编译器提供了良好的起始语言.
Iva*_*ski 26
我只想添加一些我认为有趣的东西。
在 git 中,您可以有一个名为.gitattributes的文件。Github 有一个名为linguist的项目,它可以使用该文件作为每个存储库中的语言详细信息部分。在打字稿存储库中有一个.gitattributes文件,其内容如下:
*.js linguist-language=TypeScript
* -text
Run Code Online (Sandbox Code Playgroud)
您可以 fork 打字稿存储库,删除该文件,提交到 github 并等待一段时间,直到他们的存储库分析工作完成并且语言图会发生变化。