高级语言的源代码是如何转换成机器码的?

How is source code of a high-level language converted into machine code?

我在大学计算机课程中学习编译过程,我了解编译三个阶段的基本功能。 (语义、句法和词法分析)。然而,我并不完全理解他们的所作所为。 python 等高级语言如何转换为机器码?

非常简单和笼统地说:一个编译器它经常分解成许多组件,每个组件将其预期的输入转换为下一个组件的预期状态,直到产生目标结果。以下是通过这些转换的基本高级路径:

  1. 扫描器 - 读取并标记源文件
  2. 分析 - 语法是否更正?
  3. 解析器 - 从令牌形式生成 AST
  4. 分析 - 结构在语义上是否正确?
  5. 发射器 - 从 AST 生成机器代码

Note: The steps can vary, modularization may vary, where symbol trees are built may vary, the kinds of AST may vary, etc. so study these areas independently.