Compiler construction 咖啡脚本如何用咖啡脚本编写? 所以,作为一个新的Web程序员(背景是C、C++和Python),没有JavaScript经验(或者想体验它,基于我所看到的),我一直在做一些关于咖啡剧本的先驱研究,我真的很喜欢我看到的。我注意到一个很酷的细微差别是CoffeeScript是用CoffeeScript写的,这很酷。。。但我真的不明白这怎么可能。不幸的是,我在上一个高级计算机科学课程中选择了网络安全而不是编译器

Compiler construction 咖啡脚本如何用咖啡脚本编写? 所以,作为一个新的Web程序员(背景是C、C++和Python),没有JavaScript经验(或者想体验它,基于我所看到的),我一直在做一些关于咖啡剧本的先驱研究,我真的很喜欢我看到的。我注意到一个很酷的细微差别是CoffeeScript是用CoffeeScript写的,这很酷。。。但我真的不明白这怎么可能。不幸的是,我在上一个高级计算机科学课程中选择了网络安全而不是编译器,compiler-construction,coffeescript,interpreter,bootstrapping,Compiler Construction,Coffeescript,Interpreter,Bootstrapping,我听说有人用目标语言编写语言,用该语言的现有编译器进行解释,但我无法找到任何关于这可能如何工作的信息,因为这是第一个实现 我猜是一个嵌入式shell脚本,它可能负责为构建一个自引用的(这个术语是否正确描述了这种行为?)语言奠定一些初始框架?这并不是什么新鲜事。C编译器是用C编写的 可以使用语言X的编译器编译具有更多功能的较新版本。它叫 顺便说一句,如果你想了解更多关于编译器的知识,尽管你错过了uni的课程,请看一看——特别是,。马特的答案非常好。让我用一些咖啡脚本的具体信息来详细说明

我听说有人用目标语言编写语言,用该语言的现有编译器进行解释,但我无法找到任何关于这可能如何工作的信息,因为这是第一个实现


我猜是一个嵌入式shell脚本,它可能负责为构建一个自引用的(这个术语是否正确描述了这种行为?)语言奠定一些初始框架?

这并不是什么新鲜事。C编译器是用C编写的

可以使用
语言X的编译器编译具有更多功能的较新版本。它叫


顺便说一句,如果你想了解更多关于编译器的知识,尽管你错过了uni的课程,请看一看——特别是,。

马特的答案非常好。让我用一些咖啡脚本的具体信息来详细说明:

CoffeeScript编译器的原始版本是用Ruby编写的,但在2010年2月21日被转换为CoffeeScript for v0.5.0

作为一个实际问题,引导编译器可能会使不断变化的语言变得困难,因为编译器必须重写以适应这些变化。官方文件中的这一段让您对所涉及的挑战有了一些了解:

git checkout lib&&bin/cake build:full
是在使用核心语言时运行的一个好命令。它将刷新
lib
目录(以防你弄坏了什么东西),构建你修改过的编译器,用它来重建自己(一个良好的健全性测试),然后运行所有的测试。如果他们通过了,你很有可能成功改变


lib
目录包含CoffeeScript编译器编译的JavaScript(明白了吗?),在引导过程中提供了一个有用的中介。由于编译器的CoffeeScript代码从不直接在自身上运行,因此更容易对语言进行破坏性更改。

请注意,要使用CoffeeScript编写代码,您需要熟悉Javascript,因为所有运行时错误都会指向编译后的源代码。Re术语:您可以说CoffeeScript编译器是从其原始Ruby实现中启动的。你也可以说CoffeeScript语言是自托管的。可能与我以前听过的术语Bootstrapped重复,但对它没有真正清晰的理解。这真的很有趣,感谢这些伟大的链接,我将做一些关于引导的阅读。我也听说过《龙之书》在读“必读编程书”,所以,我得去看看。我同意马特的观点。但是,如果你想学习Coffeescript,我强烈建议你先学习Javascript。对于不同语言背景的人来说,它可能看起来有点陌生,但它的概念(如函数和原型库)对于各种软件/应用程序解决方案和框架都很有用。同样,Coffeescript编译成Javascript。因此,很明显,隐藏在CS中的类和不同外观的概念之下,Javascript的概念发挥着巨大的作用。请阅读《龙之书》,了解编译器是如何工作的。希望我能更进一步,谢谢你提供语言细节。