【发布时间】:2012-09-26 00:12:58
【问题描述】:
是否有可能以一种可以自己编写的方式来构建一种语言?你能用c写一个c编译器,还是用python写一个python解释器?如果不是,那么源代码本身是否可以重新编写?如果是这样,您是否必须使用其他语言的任何组件(即在 python 脚本中运行编译的 c)?现实中有这样的例子吗?
【问题讨论】:
-
Mono C# 编译器是用 C# 编写的..
-
是的。它被称为“bootstrapping”。
-
仅供参考,PyPy 是 Python 中的 Python 解释器。 gcc 和 g++ 很长一段时间都是用 C 编写的,现在是用 C 和 C++ 混合编写的。
-
是的,编译语言习惯上自己编写编译器。在这个编译器中你不需要其他语言的组件——但你最初需要一个用现有语言编写的辅助解释器或编译器。
-
基本答案是否定的。当然,如果一种语言已经存在编译器,那么您可以使用该编译器以该语言为该语言编写另一个编译器。这与您可以使用编译器以该语言编写程序这一事实一样明显,因此,这不算数。另一个不重要的原因是这个编译器或其前身不能用那种语言编写。所以不,您实际上无法使用编译器所针对的语言构建编译器,因为这要求编译器已经存在,如果存在,您就不需要制作它。
标签: recursion programming-languages