
scanning:就是把输入分成一个个Token 可以理解成对各个单词的分析
parsing: 也叫句法分析 对于整个句子进行分析
semantic analysis:检查生成的句子是否有意义,有时候一句话语法正确但是没有意义 例如苹果吃了一个汽车
一个程序只有拥有了表达式 条件判断 循环等关键特质才能有意义 进而转换成汇编语言
例如像变量a这种叫做symbolic information(符号信息) 在最终转化而成的汇编语言中 是不存在符号信息的 所有的变量其实是内存地址
在最终的Abstract syntax tree形成后 其实是没有保留symbolic information的
而保留symbolic information唯一作用就是debug
scanner:

paring:

semantic:
student a;
car b;
int x
本文介绍了编译器的主要组件和过程,包括扫描(token划分)、解析(句法分析)、语义分析(检查程序意义)和优化(如公共子表达式消除)。编译器不仅要确保代码语法正确,还需考虑其逻辑意义,并在转换为汇编语言时进行性能优化。语义分析在消除无意义的逻辑,优化则可能涉及寄存器分配和指令调度,以提高代码执行效率。
最低0.47元/天 解锁文章
1266

被折叠的 条评论
为什么被折叠?



