编译原理第三版名词解释和简单
1.什么是编译程序?
如果源语言是高级语言,目标语言是诸如汇编语言或机器语言之类的低级语言,那么这样的翻译程序为编译程序。
编译过程的5个阶段是什么?
词法分析 语法分析 语义及中间代码生成 代码优化 目标代码生成
请给出编译程序的结构框图
字母表:元素的非空有穷集和
符号:字母表中的元素称为符号
符号串:符号的有穷序列称为符号串
句子:S经0步到多步推导出x且x属于VT*,则x是该文法的一个句子。句子是一种句型
语言:文法G[S]产生的所有句子的集合称为文法G所定义的语言,记为L(G[S])
上下文无关文法:若文法G=(VN,VT,P,S)中的每一条规则形式为A->β,其中A∈VN,
β∈(VN∪VT)*,则称为G是上下文无关文法。
右线性文法:若文法G=(VN,VT,P,S)中的每一条规则形式为A->aB或A->a,
其中A,B∈VN,a∈VT*,则称G是右线性文法。
右线性文法:若文法G=(VN,VT,P,S)中的每一条规则形式为A->Ba或A->a,
其中A,B∈VN,a∈VT*,则称G是左线性文法。
正规文法:右线性文法和左线性文法都称为正规文法
句柄:一个句型的最左直接短语
规范推导(最右推导):每步推导都坚持替换当前句型最右边的非终结符。
文法二义性:如果一个文法存在某个句子对应两棵不同的语法树(或最左推导或最右推导) 则说这个文法是二义性的。
确定有穷自动机:
一个确定的有限自动机M是一个五元组M =(Q,Σ, f, S, Z),其中:
(1)Q是一个有限状态集,它的每一个元素称为一个状态;
(2)(2)Σ是一个有穷输入字母表,它的每一个元素称为一个输入字符;
(3)f是一个从Q×Σ到Q的单值映射,即f (qi , a)=qj且有qi、qj∈Q和a∈Σ; (4) S∈Q,是惟一的一个初态;
(5) Z⊆Q,是一个终态集。
非确定有穷自动机: 一个非确定有限自动机M是一个五元组Mn=(Q,Σ,f,S,Z),其中:
(1) Q、Σ、Z的意义与DFA相同;
(2) 状态转换函数f不是单值函数,它是一个多值函数。是一个从S×Σ*到S的子集映射; (3) S ⊂Q,是一个非空初态集。
正规集:正规语言(正规文法描述的语言)的集合
正规式:正规集的形式化描述,只能出现“.”连接、“|”或、“*”闭包三种运算。多数程序语言的单词都可用正规文法或正规式来描述。
素短语:所谓句型的素短语是指这样的一种短语,它至少包含一个终结符,并且除自身之外,不再包含其他的素短语。
规范句型活前缀:
(1)字符串的前缀是指字符串的任意首部。如,字符串abc的前缀有空串、 a、ab、abc。(2)规范句型活前缀是指规范句型的前缀,这种前缀不包含句柄右边的任何符号。
LR(0)项目集规范族:构成识别一个文法活前缀的DFA的状态(项目集)的全体。
冲突项目:“移进——规约”“规约——规约”冲突
同心集:所谓同心的LR(1)项目集是指在两个LR(1)项目集中,除搜索符不同之外,核心部分是相同的。
什么是属性文法?
一个属性文法是在上下文无关文法的基础上,允许每个文法符号X(终结符或非 终结符)根据处理的需要,定义与X相关联的属性。 文法符号的属性可分为继承属性与综合属性两类。综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息。
语法制导翻译的基本思想是什么?
文法中的每个符号都有一些编译程序关心的信息,称为文法符号
文法中的每个符号都有一些编译程序关心的信息,称为文法符号的属性;
为文法中的每个产生式给定一组计算相关属性的动作——语义动作
所谓语法制导翻译,是指在语法规则的制导下,通过计算语义规则,完成对输入符号串的翻译。
为文法中的每个产生式给定一组计算相关属性的动作——语义动作
所谓语法制导翻译,是指在语法规则的制导下,通过计算语义规则,完成对输入符号串的翻译。
什么是代码优化?代码优化通常在什么基础上进行?
提高代码质量的技术常称为代码优化。根据是否与具体机器有关,分为两类:一 类与机器有关,在目标代码上进行;一类与机器无关,在中间代码上进行。根据优化对象不同,可分为局部优化、循环优化、全局优化。
常用的优化技术有哪些?
删除多余运算、复写传播、代码外提、强度削弱,合并已知量。
目标代码的形式有哪些?
(1)能够立即执行的机器语言代码 (2)待装配的机器语言模块 (3)汇编语 言程序
编译原理第三版名词解释和简单相关推荐
- 编译原理第三版课后答案
编译原理第三版课后答案: https://wenku.baidu.com/aggs/7c792566f5335a8102d22053?index=3&wkts=1669819610140
- 编译原理第三版清华pdf_清华网络科学与网络空间研究院考研经验分享
清华网络科学与网络空间研究院考研经验分享 盛世清北,清北硕博摇篮,专注清华北大考研辅导近十年,盛世清北-北京大学考研辅导班开设清华土木工程考研辅导系列课程.上清华北大,就上盛世清北! 考试科目 参考书 ...
- 编译原理第三版王生原pdf_CS143:编译原理 | 环境搭建HelloWorld
本文使用 Zhihu On VSCode 创作并发布 本文是本人新开的坑的第一篇博客,另一个坑请看MIT 6.828 实现操作系统.从另一个坑的第一篇复制两段话: 写成博客的目的是防止自己走马观花,花 ...
- 编译原理(第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 答案: ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 1.)(python/c/c++版)(笔记)
原文:Let's Build A Simple Interpreter. Part 1. 文章目录 [编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpre ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 5.)(python/c/c++版)(笔记)Lexer词法分析程序
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 5.) 文章目录 python代码 C语言代码 总结 你如何处理像理解如何创建解 ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 3.)(python/c/c++版)(笔记)
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 3.) 文章目录 python代码calc3.py C语言代码(calc3.cp ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 2.)(python/c/c++版)(笔记)
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 2.) 文章目录 python代码 c代码 总结 让我们再次深入研究解释器和编译 ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 6.)(python/c/c++版)(笔记)
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 6.) 文章目录 python代码 C语言代码 总结 今天是这一天:) &quo ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 4.)(python/c/c++版)(笔记)
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 4.) 文章目录 python代码 C语言代码 总结 在上一篇文章中,您学习了如 ...
最新文章
- Python学习--not语句
- 031_spark架构原理
- 计算程序运行时间(.net1.1 于.net2.0的区别)在.net2.0中提供了Stopwatch类,简单例子...
- 计算机弹奏两只老虎爱跳舞,原神风物之诗琴乐谱大全
- 是否使用wraps的區別
- SAP Spartacus支持的语言和货币单位的数据源
- AUTOSAR从入门到精通100讲(二)-SOME/IP及其应用
- python TypeError can only concatenate tuple not str to tuple
- dom4j创建、解析xml文件(增删改查)
- cmdb python 采集虚拟机_Python编程(三十四):CMDB后台管理、封装自定义JS组件、前端td标签定制显示内容及属性...
- centeros6.8 mysql_Center os6.5 mysql
- mybatis中批量插入的两种方式(高效插入)
- 浏览器是如何工作的系列:页面布局
- DHCPV6地址获取交互
- 水星网卡 linux驱动,水星网卡驱动下载_硬件驱动下载
- 正式版TBSA 6.0(用来分析多层及高层建筑结构的专用程序)
- 2022年股票估值法研究报告
- Sleep函数--使得程序暂停一段时间(单位毫秒)
- 鹏鹏seo第三课:长尾关键词的认识!
- log4j配置详解(非常详细转载)