编译时会发生什么?

ant*_*ant 10 compiler-construction

我想知道什么是编译,编译时会发生什么?我的意思是,你按下编译或输入控制台,但它在"背景"中实际做了什么?

jas*_*son 30

  1. 首先,编译器"lexes"源.这意味着它将源转换为一系列"令牌".标记是对编译器有意义的字母,数字和符号序列.

  2. 接下来,编译器从第一步"解析"令牌序列.这意味着编译器会检查以确保源符合编程语言的规则(语法).

  3. 接下来,编译器执行语法分析以创建源的表示以确定源的语义含义.这是编译器构建语法树的步骤.

  4. 最后,编译器将生成输出,该输出捕获目标表示中的源的语义含义(无论是机器代码,中间语言,如Microsoft的CIL,还是其他编程语言).

有关简要信息,请参阅维基百科.对于血淋淋的细节,请参阅龙书(计算机科学的每个学生都应该学习本书).


Tom*_*Tom 10

看到这个

基本上,魔法精灵和仙女将人类可读代码转换为机器代码.