可以用该语言编写编程语言的第二个实现吗?

时间:2010-07-15 20:56:53

标签: java programming-languages

这个问题是我最近一直在思考的问题。编程语言可以用该语言编写,作为第二种实现吗?例如Java的。是否可以使用java编程语言重写java编程语言?

道歉,如果这是一个愚蠢的问题,但我需要知道!

GF

13 个答案:

答案 0 :(得分:12)

始终。任何Turing-Complete语言都是 - 图灵完整语言。如果您可以用一种完整的语言编写编译器,则可以用任何等效的语言编写它。

答案 1 :(得分:10)

是的,有可能。查看BootStrapping

答案 2 :(得分:7)

对于任何图灵完整语言都是。 Lisp被认为是为自己编写解释器/编译器的最简单的语言之一。

答案 3 :(得分:6)

它可以。最近的一个例子是python有pypy。维基百科页面上有更多信息,还有一些很好的链接。

答案 4 :(得分:4)

不确定

许多年前,我的第一台家用电脑之一Vic 20带有内置的BASIC解释器,但就是这样。所以我在BASIC中为它编写了第一个汇编程序版本。然后我用我的第一个原始汇编程序编写了一个更好的汇编程序。

答案 5 :(得分:3)

是。只要语言是Turing Complete,您就可以自己实现该语言。

答案 6 :(得分:2)

有许多实际的例子,其中一个例子是Oberon语言,这个讨论很有意义,因为编译器代码非常易读,可以免费获得Project Oberon一书:

http://www.oberon.ethz.ch/bibliography/publications

http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

答案 7 :(得分:2)

GCC编译器是用C语言编写的。

自从任何人从汇编构建任何C编译器以来,已经很长时间了。

答案 8 :(得分:2)

不仅可能,但对于本机代码编译器,这是最常用的实现技术。一个很好的操作指南是Andrew Appel的论文Axiomatic Bootstrapping: A Guide for Compiler Hackers

答案 9 :(得分:1)

它不仅可以,而且可以。 ecj(Eclipse的编译器)就是一个例子,我认为SDK本身带有一个纯Java编译器,虽然我可能错了。

答案 10 :(得分:1)

在java中编写java编译器 - 完全没问题。实际上我认为Sun的javac是用java编写的。

然而,'java'通常意味着更多的东西,而不仅仅是javac,所以你的问题不是很清楚。

答案 11 :(得分:0)

不确定。我甚至看到有人编写用COBOL编写的COBOL编译器! (好吧,不是一个完整的编译器......但至少是一个解析器。)

答案 12 :(得分:-1)

查看3-LISP