编译原理笔记一

编译原理笔记一

想学习一下程序运行模拟引擎,开坑编译原理
结合哈工大编译原理课程和《图解编译原理》来学习。
参考一位学长的总结

总览:
compileral-c500

讲解几个概念:

编译:将源语言翻译为目标语言的过程。

即我们学习编译器如何自动地将源语言翻译为目标语言。

编译器(以c语言为例):将源程序翻译为汇编语言程序。

compilerpos-w300

中间语言:不受源语言限制,可抽象地表达语义的形式,能方便地转化为其它形式。
ENtranslate-w400

词法分析:将源语言中各个元素进行词性归类。

词法分析器将源语言字符串中识别一个个符号(token),并按序保存。

ENLexica-w436

语法分析:根据源语言语法,将已归类的元素进行组合,组合成一个个语法基本结构。

从词法分析识别出的符号流中识别出符合源语言语法的语句。

ENgramma-w435

语义分析:将语法分析得到的语法结构进行语义检查和处理,产生相应的中间代码。
ENSemanti-w457

编译器结构:
compilerstru-w425

抽象语法树(AST):抽象语法树是源代码的抽象语法结构的树状表示。

语法树是一个二维结构,中间代码是准一维结构,语法树到中间代码的转换过程,本质上是将二维结构转换为一维结构的过程。(中间代码是具有逻辑属性的,所以这个降维过程是将结构化的二维结构转化为线性逻辑的一维结构)