Can a second implementation of a programming language be written in that language?
这个问题只是我最近一直在思考的问题。一种编程语言可以作为第二种实现用该语言编写吗?例如Java。使用Java编程语言重写Java编程语言是可能的吗?
如果这是一个愚蠢的问题,请道歉,但我需要知道!
GF
总是。任何图灵完备的语言——好吧——都是图灵完备的语言。如果您可以用一种完整的语言编写编译器,那么您可以用任何等效的语言编写它。
是的,这是可能的。查看引导。
是的,对于任何图灵完整语言。Lisp是最容易为自己编写解释程序/编译器的语言之一。
它可以。最近的一个例子是,pypython有pypy。维基百科页面上有更多的信息和一些很好的链接。
当然。
许多年前,我的第一台家用电脑,一台VIC 20,有一个内置的基本翻译程序,但就是这样。所以我用BASIC为它编写了汇编程序的第一个版本。然后我用我的第一个原始汇编程序编写了一个更好的汇编程序。
对。只要语言是图灵完备的,就可以实现语言本身。
不仅可能,而且对于本机代码编译器来说,这是最常见的实现技术。一个好的操作指南是安德鲁·阿佩尔的论文《自动引导:编译器黑客指南》。
GCC编译器是用C编写的。
自从有人从程序集构建任何C编译器以来,已经有很长时间了。
有许多实际的例子,其中一个例子是Oberon语言,这是在讨论中感兴趣的,因为编译器代码非常易读,它在Oberon项目的书中免费提供:
http://www.oberon.ethz.ch/书目/出版物
http://en.wikipedia.org/wiki/bootstrapping(编译器)
用Java编写Java编译器——根本没有问题。实际上,我认为Sun的Javac是用Java编写的。
然而,"Java"通常意味着比Javac更多的东西,所以你的问题并不十分清楚。
它不仅可以,而且是。EcJ(Eclipse的编译器)就是一个例子,我认为SDK本身带有纯Java编译器,虽然我可能错了。
当然。我甚至看到有人用COBOL编写了一个COBOL编译器!(好,不是一个完整的编译器…但至少是一个解析器。
签出3-LISP