一种语言可以自己编写吗?

时间:2012-09-26 00:12:59

标签: recursion programming-languages

是否可以以可以自行编写的方式构建语言?你能用c编写一个c编译器,还是用python写一个python解释器?如果没有,那么源可以自己重写吗?如果是这样,你是否必须使用另一种语言的任何组件(即在python脚本中运行编译的c)?实际上有没有这方面的例子?

3 个答案:

答案 0 :(得分:4)

您要找的关键词是self-hosting

  

其他通常自托管的程序包括内核,   装配工,外壳和修订控制软件。

     

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

我使用过的列表中还有一个编译器是Mercury

相关术语Self-interpreter

  

有些语言特别优雅   自我解释,如Lisp或Prolog。

答案 1 :(得分:2)

Is gcc C compiler written in C itself?

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

答案 2 :(得分:1)

是的,一种方法是写一个metacircular interpreter,其优点是很容易理解或写一个简单的。{3}}。可能最着名的教科书示例是Structure and Interpretation of Computer Programs的第4章,它探讨了实现Scheme的一个子集。虽然如果您想了解一般的口译员和编程语言,我认为PLAI是一个更好的起点。

对于生产语言,您通常需要的不仅仅是简单的解释器,但您仍然可以在某个时刻引导实现。对于最近的示例,Rust编译器本身就已编写。