编译器和解释器之间的关系

时间:2017-02-10 09:06:00

标签: compilation interpreter compile-time execution-time pythoninterpreter

**在执行pgm期间,解释是否遵循编译阶段?**只是当我们运行程序时会发生什么?如果这些是不同的东西那么什么将在解释之前执行语法检查。我读到python是一个解释语言然后检查由什么做的陈述?

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  • 编译语言
  • 口译语言

编译语言中,您需要一个编译器,它将源代码作为输入,并生成二进制作为可在给定目标平台上运行的输出。例如,C,C ++或Java是编译语言。编译器生成二进制后,在目标平台上执行二进制。编译过程中生成二进制所涉及的主要步骤是词汇,语法和语义分析以及代码生成。

编译器是一个程序(二进制),它在本机平台上运行,并为给定的目标平台生成代码。您有两种选择:

* target_platform == native_platform (native-compiler)
* target_platform != native_platform (cross-compiler). 

如果你有一台x86_64桌面PC,你的编译器在x86_64上运行并生成在x86_64上运行的代码,你有一个本机编译器。在这种情况下,编译器会生成本机机器代码。

如果你有一台x86_64桌面PC,你的编译器在x86_64上运行并生成在不同平台(例如JVM)上运行的代码,你就有了交叉编译器。您应该理解Java语言使用交叉编译器将java语言作为输入,并生成在JVM(而不是x86_64机器上)上运行的字节码作为输出。

其他交叉编译器,如arm-linux-gcc,mips-linux-gcc,ppc-linux-gcc等,获取C源代码作为输入并生成二进制文件以在适当的目标平台上运行(ARM,MIPS ,PPC)。

解释语言中,您不需要编译器来生成代码,因此在流程结束时不会生成二进制文件。 bash和python是解释语言。语言的解释器(安装在PC中的二进制文件,如/ bin / bash或/ usr / bin / python)接收输入源代码,解释它并执行它以生成输出。解释源代码所遵循的步骤完全相同,然后是编译器,除了解释器不生成代码,只是在分析后执行它。

前段时间我写了一篇文章,解释了如何使用python编写自定义语言的解释器。本文是用西班牙文写的,但整个过程是逐步解释的,所以如果你对它感兴趣,你可以学到很多东西。在文章的最后,您可以找到要下载和测试的源代码。源代码在github中提供。该文章可在此link

获取

希望它有所帮助! :)