当前位置:网站首页>3.4 - 编译与解释 3.5 - 编译过程 3.8 - 文法
3.4 - 编译与解释 3.5 - 编译过程 3.8 - 文法
2022-08-09 23:33:00 【是李黏黏鸭】
目录
一、编译与解释
1、解释程序(解释器)
不生成目标程序。
解释的程序在运行时需要源代码或者等效的中间代码参与,而且来控制层在解释器上面。
2、编译程序(编译器)
将源程序编译成有目标计算机特征的目标程序。
在计算机直接运行目标程序就行,不需要源程序和编译程序参加。
3、如何区分编译程序和解释程序
看是否生成目标程序。
4、考法1:编译器与解释器的区别

5、考法2:反编译

反编译:不能还原出原程序,只能还原到一个中间状态。通过反编译有助于我们理解设计者的一些思路。
二、编译过程
1、相关概念
语句
用来描述程序中运算步骤,控制结构,数据传输。
语法
程序的基本符号组成的程序,要符合各个语法的要求。
语义
概念:不同的语法结构表示出来的含义。
分类:静态语义、动态语义。
1、静态语义:程序在编译过程中就需要明确的语义。在编译的时候可以确定程序语法结构的含义。
2、动态语义:需要运行这个程序,才能确定语法结构的含义。也就是编译完成的程序仍会存在动态语义的错误。
语用
程序与使用者之间的关系。
2、编译器的组成
四个必备部分:词法分析、语法分析、语义分析、目标代码生成
两个不必须项:中间代码生成、代码优化。如果编译器简单,就不会包含这两部分。
3、编译过程

词法分析:主要是对源程序从前到后,从左到右进行逐个字符的扫描,识别出一个一个的单词。所以通过编译的程序也就是通过词法分析的程序一般不存在词法错误。
语法分析:在词法分析的基础上,按照看语法规则,去检查这些单词是否符合规范,在表达上形成一个正确的程序。所以通过编译的程序也就是通过语法分析的程序一般不存在语法错误。
语义分析:在语法分析的基础上,检查程序的静态语义,主要是对数据类型进行分析和检查。
中间代码生成:根据语义分析输出对应的中间代码。
代码优化:对中间代码进行适当的优化。
目标代码生成:根据目标计算机的指令特点生成对应的指令代码。这就将源程序编译成符合计算机特征的一些指令。
出错管理:贯穿整个编译过程中的错误管理。
符号表管理:主要记录源程序中各种符号的必要信息,以辅助我们进行语义的正确性检查,以及在编译过程中能够快速的进行查找、修改、插入等相关的操作。贯穿整个编译过程。
4、考法1:编译必须的阶段

5、考法2:符号表管理和出错处理的特点

6、考法3:中间代码的特点

7、考法4:静态/动态语义的内容

三、文法
1、文法定义
![]()
2、文法推导(考点)

- S:开始。
- S-A0|B1:S可以用A0或者B1代替;
- A-S1|1:A可以用S1或者1代替;
- B-*S0|0:B可以用S0或者0代替;
边栏推荐
- redis distributed lock code example
- 【集训DAY5】选数字【数学】
- 深入理解Aarch64内存管理
- In-depth understanding of multithreading (Part 1)
- dlopen failed: library “libtaml.so“ not found
- 安全知识培训——消防安全
- const修饰指针的三种情况
- Alibaba Cloud SMS Service Activation
- MATLB|And her ups and downs and finally reached the peak of life [Romantic Journey]
- WPF DataGrid 使用数据模板
猜你喜欢
随机推荐
Dry goods!Towards robust test-time adaptation
Why don't suggest you run in Docker Mysql?
ES6 Beginner to Mastery #13: Extension Methods for Arrays 2
Golden Warehouse Database KingbaseGIS User Manual (6.5. Geometry Object Editing Function)
KingbaseGIS Jin Cang database using manual (6.3. Geometric object creation function)
程序员从佩洛西窜访事件中可以学到什么?
Golden Warehouse Database KingbaseGIS User Manual (6.6. Geometric Object Verification Function, 6.7. Spatial Reference System Function)
Seq2Seq论文阅读笔记
Golden Warehouse Database KingbaseGIS User Manual (6.4. Geometry Object Access Function)
聚焦热点 | ISC 2022软件供应链安全治理与运营论坛圆满落幕
基于 LSTM 的分布式能源发电预测(Matlab代码实现)
Wireshark经典实践和面试13点总结
Copper's emotion
无源晶振负载电容值CL匹配方法及说明
南大通用数据库-Gbase-8a-学习-04-部署分布式集群
【集训DAY5】堆箱子【数学】
Eureka protects itself
阿雷的血压有些低
LSTM-based distributed energy generation prediction (Matlab code implementation)
[C language] Address book "Static Memory Version"









