1

是否有可能以一种可以自己编写的方式来构建一种语言?你能用c写ac编译器,还是用python写一个python解释器?如果不是,那么源代码本身是否可以重新编写?如果是这样,您是否必须使用其他语言的任何组件(即在 python 脚本中运行编译的 c)?现实中有没有这样的例子?

4

3 回答 3

4

您正在寻找的关键词是self-hosting

通常自托管的其他程序包括内核、汇编程序、shell 和修订控制软件。

自托管的编程语言包括 Ada、BASIC、C、CoffeeScript、F#、FASM、Forth、Haskell、Java、Lisp、Modula-2、OCaml、Oberon、Pascal、Python、Scala、Smalltalk 和 Vala。

另一个不在我使用过的列表中的编译器是Mercury

以及相关术语Self-interpreter

有一些语言有一个特别好的和优雅的自我解释器,比如 Lisp 或 Prolog。

于 2012-09-26T02:05:25.613 回答
2

是的

gcc C编译器是用C本身编写的吗?

它只需要前任。在某些时候,有人在 asm 中编写了一个没有编译器的编译器。我会假设。

于 2012-09-26T00:15:34.893 回答
1

是的,一种方法是编写一个元循环解释器,它的优点是非常容易理解或编写一个简单的解释器。这方面最著名的教科书示例可能是计算机程序的结构和解释的第 4 章,它探讨了如何实现 Scheme 的一个子集。虽然如果您想了解一般的解释器和编程语言,我认为PLAI是一个更好的起点。

对于生产语言,您通常需要的不仅仅是一个简单的解释器,但您仍然可以在某些时候引导实现。对于最近的一个例子,Rust编译器是自己编写的。

于 2012-09-26T01:50:26.910 回答