软考内容——编译原理

470 阅读3分钟

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

编译原理

编译原理即是对高级程序语言进行翻译的一门科学技术, 我们都知道计算机程序由程序语言编写而成, 在早期计算机程序语言发展较为缓慢, 因为计算机存储的数据和执行的程序都是由0、1代码组合而成的, 那么在早期程序员编写计算机程序时必须十分了解计算机的底层指令代码通过将这些微程序指令组合排列从而完成一个特定功能的程序, 这就对程序员的要求非常高了。人们一直在研究如何如何高效的开发计算机程序, 使编程的门槛降低。

编译可以分为五个基本步骤:词法分析、语法分析、语义分析及中间代码的生成、优化、目标代码的生成。

词法分析注重的是每个单词是否合法, 以及这个单词属于语言中的哪些部分。

词法分析的作用是从连续的字符中识别出标识符、关键字、数字、运算符并存储为符号(token)流

其中,中间代码生成与代码优化并不是必须的步骤。

词法分析

将字符串扫描分解,识别出每个单词符号。

工具:正规式、有限自动机

语法分析

在词法的分析的基础上,根据语法规则,把单词符号分解成“句子”“短语”“子句”“程序段”等。

判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。

文法根据施加不同的限制分为0型、1型、2型、3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法, 限制条件依次递增。

语义分析

语义分析是了解各个语法单位之间的关系是否合法。实际应用中就是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查等

语义分析也需要借助语法规则, 在对语法单元的静态语义进行检查时, 要保证语法规则设定的准确性。

中间代码生成

四元式、三元式、逆波兰、树形

代码优化

方法:公共子表达式的提取、循环优化、删除无用代码

目标代码生成

中间代码变为低级语言代码

  • 目标代码生成以源程序的中间表示形式作为输入,并把它映射到目标语言
  • 目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器