是否可以以可以自行编写的方式构建语言?你能用c编写一个c编译器,还是用python写一个python解释器?如果没有,那么源可以自己重写吗?如果是这样,你是否必须使用另一种语言的任何组件(即在python脚本中运行编译的c)?实际上有没有这方面的例子?
答案 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)
答案 2 :(得分:1)
是的,一种方法是写一个metacircular interpreter,其优点是很容易理解或写一个简单的。{3}}。可能最着名的教科书示例是Structure and Interpretation of Computer Programs的第4章,它探讨了实现Scheme的一个子集。虽然如果您想了解一般的口译员和编程语言,我认为PLAI是一个更好的起点。
对于生产语言,您通常需要的不仅仅是简单的解释器,但您仍然可以在某个时刻引导实现。对于最近的示例,Rust编译器本身就已编写。