Compiler construction Python解释器可以用Python实现,但是哪个解释器将解释解释器本身呢?

Compiler construction Python解释器可以用Python实现,但是哪个解释器将解释解释器本身呢?,compiler-construction,interpreter,Compiler Construction,Interpreter,我发现了一个用Python实现的Python解释器。我不知道是否需要安装其他解释器来解释解释器本身? 如果是这样的话,为什么我们要费心用它将要解释的语言来编写解释程序呢?如果没有,如何运行此解释器 2我也不是很清楚编译器是用它将要编译的语言实现的。解释器和编译器背后有相同的原因吗?是的,您需要其他解释器来运行它。对于编译器,您可以使用不同的编译器编译一次,然后使用该可执行代码再次编译源代码。如果我们编写的程序能够解释简单的数学表达式,如1+2*3,请参见。程序是用C语言编写的 // bash &

我发现了一个用Python实现的Python解释器。我不知道是否需要安装其他解释器来解释解释器本身? 如果是这样的话,为什么我们要费心用它将要解释的语言来编写解释程序呢?如果没有,如何运行此解释器


2我也不是很清楚编译器是用它将要编译的语言实现的。解释器和编译器背后有相同的原因吗?

是的,您需要其他解释器来运行它。对于编译器,您可以使用不同的编译器编译一次,然后使用该可执行代码再次编译源代码。如果我们编写的程序能够解释简单的数学表达式,如
1+2*3
,请参见。程序是用C语言编写的

// bash
> ./calculate "1 + 2 * 3"
> 7
所以C语言程序可以解释一种简单的数学语言

显然,我们可以选择Ruby或Python而不是C来编写这个程序。最后,Ruby或Python语言程序可以解释数学语言

让我们让程序解释一种更复杂的语言,比如Python。然后我们得到了它。Python语言程序解释Python语言

因此,任何语言都可以解释任何语言

编译器将源代码编译成机器代码,这样就可以直接在CPU中运行,解释器将源代码解释成字节码,这样就可以在虚拟机中运行。唯一的区别是CPU已经存在,但需要首先编译虚拟机


对不起,我的英语很差。

这种技术(另一位用户正确回答称为引导)的原因之一是使用不同的编译器优化技术,其工作原理(大致如下):

假设您有一个正在工作的编译器Y,它将语言X编译为汇编语言。然后,这个编译器就是将用X语言编写的程序翻译成可理解且可在机器上执行(链接等后)的形式所需的一切

现在,您认为这个编译器在核心方面写得很好,但在其他方面写得不太好(例如:它在计算长case语句时非常慢)

您要做的是:只使用语言X的一个子集(使用编译器Y很好地实现)重写完整的语言X,并优化前面提到的长case语句的计算(示例)

现在有了编译器Z,它将语言X的程序计算为只包含语言X的核心语句的程序。使用编译器Y,您现在可以将其转换为汇编语言

一般来说:在一长行编译器中的某个点上,应该有一个编译器,它实际生成有效的机器指令,否则您将无法执行您的好程序(听起来很琐碎,但请记住)

EDIT@merito:编译器将程序从源语言翻译成目标语言,目标语言可以是二进制代码,但不一定是。我觉得你对解释器和编译器的区分是错误的