编译器和解释器的关系
Relationship between compiler and interpreter
** 在 pgm 的执行过程中,解释是否遵循编译阶段?**当我们 运行 一个程序时会发生什么?如果这些是不同的,那么什么将在 [=12 之前执行语法检查=] 我读到 python 是一种解释性语言然后检查语句由什么完成?
您有两个选择:
- 编译语言
- 口译语言
在编译语言中,您需要一个编译器获取源代码作为输入并生成二进制作为输出,可以运行 在给定的目标平台上。例如,C、C++ 或 Java 是编译语言。编译器生成 binary 后,您在目标平台上执行 binary。生成 binary 的编译过程涉及的主要步骤是词法、句法和语义分析以及代码生成。
编译器是 运行 在本机平台上运行并为给定目标平台生成代码的程序(二进制)。您有两个选择:
* target_platform == native_platform (native-compiler)
* target_platform != native_platform (cross-compiler).
如果您有一台 x86_64 台式电脑,您的编译器 运行 在 x86_64 上生成的代码 运行 在 x86_64 上,您有本地编译器。在这种情况下,编译器生成本机机器代码。
如果您有一台 x86_64 台式电脑,您的编译器 运行 在 x86_64 上生成代码,运行 在不同的平台(例如 JVM)上生成代码,你有一个 cross-compiler。您应该了解 Java 语言使用 cross-compiler 获取 java 语言作为输入,并在 JVM 上生成 运行 的 byte-code(而不是 x86_64机器)作为输出。
其他cross-compiler如arm-linux-gcc、mips-linux-gcc、ppc-linux-gcc等,获取C源代码作为输入生成二进制到运行在适当的目标平台(ARM、MIPS、PPC)上。
在解释型语言中,您不需要编译器来生成代码,因此在过程结束时不会生成二进制文件。 bash 和 python 是解释性语言。语言的解释器(安装在您的 PC 中的二进制文件,例如 /bin/bash 或 /usr/bin/python)接收输入源代码,对其进行解释,并执行它以生成输出。解释源代码的步骤与编译器完全相同,只是解释器不生成代码,只是在分析后执行。
我前段时间写了一篇文章,解释了如何使用 python 编写 custom-defined 语言的解释器。这篇文章是用西班牙语写的,但是整个过程都有讲解step-by-step,有兴趣的可以学习一下。在文章的最后你可以找到源代码下载和测试。 github 中提供了源代码。该文章可在 link
希望对您有所帮助! :)
** 在 pgm 的执行过程中,解释是否遵循编译阶段?**当我们 运行 一个程序时会发生什么?如果这些是不同的,那么什么将在 [=12 之前执行语法检查=] 我读到 python 是一种解释性语言然后检查语句由什么完成?
您有两个选择:
- 编译语言
- 口译语言
在编译语言中,您需要一个编译器获取源代码作为输入并生成二进制作为输出,可以运行 在给定的目标平台上。例如,C、C++ 或 Java 是编译语言。编译器生成 binary 后,您在目标平台上执行 binary。生成 binary 的编译过程涉及的主要步骤是词法、句法和语义分析以及代码生成。
编译器是 运行 在本机平台上运行并为给定目标平台生成代码的程序(二进制)。您有两个选择:
* target_platform == native_platform (native-compiler)
* target_platform != native_platform (cross-compiler).
如果您有一台 x86_64 台式电脑,您的编译器 运行 在 x86_64 上生成的代码 运行 在 x86_64 上,您有本地编译器。在这种情况下,编译器生成本机机器代码。
如果您有一台 x86_64 台式电脑,您的编译器 运行 在 x86_64 上生成代码,运行 在不同的平台(例如 JVM)上生成代码,你有一个 cross-compiler。您应该了解 Java 语言使用 cross-compiler 获取 java 语言作为输入,并在 JVM 上生成 运行 的 byte-code(而不是 x86_64机器)作为输出。
其他cross-compiler如arm-linux-gcc、mips-linux-gcc、ppc-linux-gcc等,获取C源代码作为输入生成二进制到运行在适当的目标平台(ARM、MIPS、PPC)上。
在解释型语言中,您不需要编译器来生成代码,因此在过程结束时不会生成二进制文件。 bash 和 python 是解释性语言。语言的解释器(安装在您的 PC 中的二进制文件,例如 /bin/bash 或 /usr/bin/python)接收输入源代码,对其进行解释,并执行它以生成输出。解释源代码的步骤与编译器完全相同,只是解释器不生成代码,只是在分析后执行。
我前段时间写了一篇文章,解释了如何使用 python 编写 custom-defined 语言的解释器。这篇文章是用西班牙语写的,但是整个过程都有讲解step-by-step,有兴趣的可以学习一下。在文章的最后你可以找到源代码下载和测试。 github 中提供了源代码。该文章可在 link
希望对您有所帮助! :)