这个问题是我最近一直在思考的问题。编程语言可以用该语言编写,作为第二种实现吗?例如Java的。是否可以使用java编程语言重写java编程语言?
道歉,如果这是一个愚蠢的问题,但我需要知道!
GF
答案 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一书:
答案 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