编译原理(第3版)——引论
考试重点:语法树、中间代码(四元)、前/后端、遍
知识点梳理与总结
- 编译
① 翻译程序:将源语言程序等价(不改变语义)转换为目标语言程序。(会产生目标代码;高级语言 <=> 低级语言(机器语言|汇编语言))
② 解释程序:边解释边执行程序本身。***(不会产生目标代码)***
解释程序与编译程序的区别在与(
是否生成中间代码
)
用高级语言编写的源程序都必须通过编译,产生目标程序后才能运行 (×
)
【编译程序分成翻译程序和解释程序,解释程序不需要产生目标代码】
2. 编译过程和编译过程的结构
① 编译过程(简述):
源程序->词法分析->语法分析->语义分析->中间代码生成->代码优化->目标代码生成
->目标程序
词法分析:——字符流 ||【——>(类号,内码)】
(1)预处理后识别有词法意义的单词;
(2)单词:有意义的最小语法单位;
(3)原则:构词规则;
(4)描述工具:有限自动机 || 正规式;
(5)标识符:(用户自己定义的)由字母字符开头,后跟字母、数字字符的一种单词。
语法分析:——构造语法树
(1)任务:分析单词串是如何构成语句和说明;
(2)原则:语法规则;
语义分析:——边判断边处理
中间代码生成:——四元式(运算符,运算对象1,运算对象2,结果)
目标代码生成:——在特定机器上;与硬件系统结构和指令含义有关
②编译程序的结构
表格管理和出错处理与上面6个模块都有联系
③编译阶段的组合
前端:词法分析、语法分析、语义分析、中间代码生成
后端:目标代码生成以及相关出错处理和符号表操作
遍:对源程序或等价的中间语言程序从头到尾扫描并完成规定任务的过程。
编译原理(第3版)——引论相关推荐
- 编译原理第三版课后答案
编译原理第三版课后答案: https://wenku.baidu.com/aggs/7c792566f5335a8102d22053?index=3&wkts=1669819610140
- 编译原理(第3版-王生原)课后习题答案-第三章
1.构造下列正规式相应的 DFA. (1)1(0|1) *101 (2)1(1010* |1(010)*1) *0 (3)a((a|b)* |ab*a)*b (4)b((ab)* bb)*ab 答案: ...
- 编译原理第三版清华pdf_清华网络科学与网络空间研究院考研经验分享
清华网络科学与网络空间研究院考研经验分享 盛世清北,清北硕博摇篮,专注清华北大考研辅导近十年,盛世清北-北京大学考研辅导班开设清华土木工程考研辅导系列课程.上清华北大,就上盛世清北! 考试科目 参考书 ...
- 编译原理第三版王生原pdf_CS143:编译原理 | 环境搭建HelloWorld
本文使用 Zhihu On VSCode 创作并发布 本文是本人新开的坑的第一篇博客,另一个坑请看MIT 6.828 实现操作系统.从另一个坑的第一篇复制两段话: 写成博客的目的是防止自己走马观花,花 ...
- 编译原理(第二版)张素琴 课后代码 A.2 C版本
恰好上当编译原理了 就把课后的打了一下 希望对各位有帮助QwQ pl0.h #ifndef PL0_H_INCLUDED #define PL0_H_INCLUDED typedef enum{fal ...
- 【编译原理】第一章 引论
一,语言处理器 1)一个集成的软件开发环境,其中包括很多种类的语言处理器,比如编译器.解释器.汇编器.连接器.加载器.调试器以及程序概要提取工具. 2)编译器:把源程序的每一条语句都编译成机器语言,并 ...
- 编译原理(第3版-王生原)课后习题答案-第二章
1.文法G=({A,B,S},{a,b,c},P,S)其中Р为:S→Ac|aB A→ab→bc 写出L(GISJ)的全部元素. 答案: L(G[S])={abc} 2.文法G[N]为:N→D|ND D ...
- 《编译原理》课程教学大纲
<编译原理>课程教学大纲 课程编号:773033 课程名称(中/英文):编译原理 / Compiler Principle 课程类型: 模块课 总 学 时:5学时/周 讲课学时:4学时/周 ...
- 《编译原理》实验教学大纲
<编译原理>实验教学大纲 课程编号: 773033 课程名称:编译原理 英文名称:Compiler Principle 课程类型: 模块课 学 时:5 学 分:4 适用对象: 软件开发各专 ...
- [编译原理]DO-WHILE循环语句的翻译程序设计(LR(1)方法、输出四元式)C++实现
题目: DO-WHILE循环语句的翻译程序设计(LR(1)方法.输出四元式) 1 课设任务概述 初始条件: 理论:完成编译原理,数据结构.高级编程语言.汇编语言等相关课程的学习,基于计算机专业知识 ...
最新文章
- linux mysql5.1安装,1怎么安装?Linux环境下MySQL5?
- 1600802071
- Linq to XML的练习
- 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组
- 性能监控工具javamelody与spring的集成
- 去除UINavigationBar的下边框
- matlab 垂直边缘检测,matlab 边缘检测
- mysql function_MySQL基础函数——数学函数详解
- JavaScript学习——JavaScript 条件 语句 switch语句 while语句
- [译] 在 Twitch 代码直播一年的总结
- JAVA 前端上传文件,后端解析文件流并写入数据库
- linux 卸载java jdk1.6_Linux 下安装与卸载JDK(jdk-6u16-)
- 什么是Servlet类
- 我收藏的PDF电子书第一部分
- Linux 安装SNMPWALK工具
- matlab 无刷电机,无刷直流电机控制简介
- 安卓gridview控件的使用
- java字符串 与 ASCII码相互转换
- 制造业工厂需要关注的工业物联网解决方案
- 彗星http_大气与彗星
热门文章
- C:\Program Files (x86)\SogouInput\Components\程序异常结束 ,QT
- 1. 走进Java语言 —— Java SE
- Go面试:用Go语言实现工厂模式 (Golang经典编程案例)
- ssh1—xshell免密登录
- 集合竞价选股(附源码)
- IT软件开发人员必去的10个社区
- 小米开发版安装magisk_小米开发版安装magisk(面具),不用第三方rec就可以安装...
- (求救大佬)蓝桥杯C语言试题 算法训练 C++ CH08 01
- 【虚拟主播】刚刚,我用三行代码创建了一个虚拟主播
- cs231n assignment3