编译原理课程作业
《编译原理》作业参考答案
《编译原理》作业参考答案一、填空1.图二图一。
2.文法是无ε产生式,且任意两个终结符之间至多有一种优先关系的算符文法。
3.最右推导最右推导。
4.对于循环中的有些代码,如果它产生的结果在循环中是不变的,就把它提到循环外来。
把程序中执行时间较长的运算替换为执行时间较短的运算。
5.对于文法中的每个非终结符A的各个产生式的候选首符集两两不相交;对文法中的每个非终结符A,若它存在某个候选首符集包含ε,则FIRST(A)∩FOLLOW(A)= ø6.控制。
7.语义分析和中间代码产生8.自上而下自下而上自上而下9.自下而上表达式10.自下而上11.源程序单词符号12. DFA初态唯一,NFA初态不唯一;DFA弧标记为Σ上的元素,NFA弧标记为Σ*上的元素;DFA的函数为单射,NFA函数不是单射13.词法,词法分析器,子程序,语法14.ε,a,ab,ab15.终结符号,非终结符号,产生式16.L(G)={a n | n≥1}17.1型,2型,3型18.二义的19.快20.终态,输入字21.单词符号,终结符22.归约23.必须24.直接25.终结符,更快26.E→E+∙T, E→E∙+T, E→∙E+T, E→E+T∙27.归约—归约28.类型检查,一致性检查29.词法分析、词法30.语法分析程序、语法31。
终结符号、产生式、开始符号、非终结符32.2、2、333.不需要避开34.符合、不符合35.推导36.包括37.Ass38.一定没有、一定没有、至多只有一个39.SLR(1)40.移进——归约41.a.控制流检查、b.一致性检查、c.相关名字检查二、判断下面语法是否正确1 ×2 ×3 √4 ×5 √6 ×三、简答题1.词法分析的任务是对输入的源程序进行单词及其属性的识别,为下一步的语法分析进行铺垫;有两种方法可以实现词法分析器:一,手工编写词法分析程序。
二,由词法分析器自动生成程序生成。
编译原理作业与答案
编译原理独立作业2010.5一、简答题1、 构造一个文法使其生成的语言是不允许0打头的偶正整数集合。
2、文法][E G :T T E T E E -+→,F F T F T T /*→,i E F )(→,构造句型i T T T *+-的语法树,并指出该句型的短语、直接短语、句柄、素短语和最左素短语。
3、 某LL(1)文法的预测分析表如下,请在下述分析过程表中填入输入串( a , a )$ 的分析过程。
4、 文法][S G :R L S =→,R S →,R L *→,i L →,L R →,求增广文法中LR(1)项目集的初态项目集I 0。
5、文法][S G :G G S S ;→,()G G t H →,)(S a H →,求出各非终结符的FISTVT 和LASTVT 集合。
二、分析题:1、构造自动机,使得它能识别字母表{0,1}上以00结尾的符号串,将构造的自动机确定化,并写出相应的正规文法。
2、文法][S G :RT eT S → εDR T → εdR R → bd a D →,写出每个非终结符的FIRST 集和FOLLOW 集,并判断该文法是否为LL(1)文法。
3、若有文法][S G :AB S → εaBa A → εb A b B → (1)试证明该文法是SLR(1) 文法,并构造SLR(1)分析表。
(2)给出输入串aa # 的分析过程。
参考答案一、简答题1、构造一个文法使其生成的语言是不允许0打头的偶正整数集合。
8|6|4|2|ABC Z → 9|8|7|6|5|4|3|2|1→A ε|0|B AB B → |8|6|4|2|0→C2、文法][E G :T T E T E E -+→,F F T F T T /*→,i E F )(→,构造句型i T T T *+-的语法树,并指出该句型的短语、直接短语、句柄、素短语和最左素短语。
短语:T ,T-T ,i ,T*i ,T-T+T*i直接短语:T , i 句柄: T素短语(P72):T-T,i 最左素短语:T-T3 某LL(1)文法的预测分析表如下,请在下述分析过程表中填入输入串( a , a )$ 的分析过程。
编译原理作业
编译原理作业
1.设字母表A={a},符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以及A+
2. 令∑={a,b,c},又令x=abc,y=b,z=aab,写出如下符号串及它们的长度:xy,xyz,(xy)3
3. 设有文法G[S]:S::=SS*|SS+|a,写出符号串aa+a*规范推导,并构造语法树。
4. 已知文法G[Z]:Z::=U0∣V1 、U∷=Z1∣1 、V::=Z0∣0 ,请写出全部由此文法描述的只含有四个符号的句子。
5. 已知文法G[S]:S::=AB A::=aA︱εB::=bBc︱bc , 写出该文法描述的语言。
6.已知文法E::=T∣E+T∣E-T 、T::=F∣T*F∣T/F 、F::=(E)∣i,写出该文法的开始符号、终结符号集合V T、非终结符号集合V N。
7. 对6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。
8. 设有文法G[S]:S::=S*S|S+S|(S)|a,该文法是二义性文法吗?给出分析过程。
9. 写一文法,使其语言是奇正整数集合。
10.给出语言{a n b m|n,m≥1}的文法。
编译原理作业集
编译原理作业集1 第二章词法分析1. C或Java语言的标示符是字母和数字组成的序列,第一个字符必须是字母,下划线视为字母,且大小写字母不同。
请写出匹配C或Java语言标示符的正规表达式。
2.为下边所描述的串写正规式,字母表是 {0, 1}. a) 以11 结尾的所有串 b) 只包含一个1的所有串2 第三章上下文无关文法1. ________是描述程序设计语言语法结构的形式工具。
2. 设G=(VN,VT,P,S)是一文法,且V= VN∪VT,若S =>*α,α∈V,则称α为文法G的,若S=>*α,α∈VT,则称α为文法G的。
3. 给出语言L={ab|j>i>=1}的上下文无关文法。
4. 文法G[S]的产生式如下:S?SaS | SbS | cS | Sd | t 对于输入串 tbctat: (1) 给出一个推导;(2) 画出(1)中推导对应的分析树;ij**(3) 文法G是否是二义性的,请证明你的结论。
3 第四章语法分析1. 考虑文法G[S]:S-> A��B A->a|b B->(C) C->CS|S 1) 消除上述文法的左递归,重写该文法。
2) 求消除左递归后的文法的非终结符构造First集合和Follow集合。
3) 为消除左递归后的文法构造LL(1)分析表。
4) 并写出对句子 (ab) 的LL(1)分析过程。
2. 给定文法G[S]: S->SaSb��c给出句子 cacbacb 的规范推导,画出该句子的语法推导树,指出该句子的句柄。
3. 给定文法G[S]:S->S b A��A A->a 1) 造文法G[S]的LR(1)项目的DFA。
2) 上述文法构造LR(1)分析表。
3) 写出句子 ababa的分析过程。
4 第五章语义分析1.通过下面文法给出的十进制数的浮点数值,写出一个属性文法(提示:使用一个属性count计算小数点右面数字的个数)。
秋兰大编译原理课程作业B
秋兰大编译原理课程作业B————————————————————————————————作者:————————————————————————————————日期:单选题编译程序使用_____区别标识符的作用域。
A: 说明标识符的过程或函数名B: 说明标识符的过程或函数的静态层次C: 说明标识符的过程或函数的动态层次D: 标识符的行号单选题编译程序是一种常用的______软件。
A: 应用B: 系统单选题扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即( ) A: 字符B: 单词C: 句子D: 句型单选题栈式动态分配与管理在过程返回时应做的工作有()。
A: 保护SPB: 恢复SPC: 保护TOPD: 恢复TOP单选题语言是( )A: 句子的集合B: 产生式的集合C: 符号串的集合D: 句型的集合单选题编译程序是对_____。
A: 汇编程序的翻译B: 高级语言程序的解释执行C: 机器语言的执行D: 高级语言的翻译单选题构造编译程序应掌握____。
A: 源程序B: 目标语言C: 编译方法D: 以上三项都是单选题一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在( )A: 移进--归约冲突B: 归约--归约冲突单选题下推自动机识别的语言是( )A: 0型语言B: 1型语言C: 2型语言D: 3型语言单选题若文法 G 定义的语言是无限集,则文法必然是 _____。
A: 递归的B: 前后文无关的C: 二义性的D: 无二义性的单选题四元式之间的联系是通过()实现的。
A: 指示器B: 临时变量C: 符号表D: 程序变量单选题间接三元式表示法的优点为_____。
A: 采用间接码表,便于代码优化处理B: 节省存储空间,不便于表的修改C: 便于代码优化处理,节省存储空间D: 节省存储空间,不便于代码优化处理单选题文法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是 ____。
编译原理作业(答案new)
第3章作业【编辑人:陈芳芳】1.写一文法,使其语言是偶正整数的集合。
要求:(1)允许0打头;(2)不允许0打头。
【解】:(1)允许0打头且含0的偶正整数集合的文法为:N—>(0|D|E)N|(E|0)D—>1|3|5|7|9E—>2|4|6|8(2) 不允许0打头的偶正整数集合的文法为:R—>(D|E)N|EN—>(0|D|E)N|(E|0)D—>1|3|5|7|9E—>2|4|6|82.一个上下文无关文法生成句子abbaa的推导树如下:SA B Sa S B B A aƐ b b a(1)给出该句子的相应的最左推导,最右推导。
(2)该文法的产生式集合P可能有哪些元素?(3)找出该句子的所有短语,简单短语,句柄。
【解】:(1)最左推导:S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa最右推导:S=>ABS=>ABAa=>ABaa=>ASBBaa=>ASBbaa=>ASbbaa=>Abbaa=>abbaa (2) 产生式集合P:S—>ABS | Aa| ƐA—>aB—>SBB | b(3) 短语:a , Ɛ , b , bb , aa , abbaa直接短语:a , Ɛ , b句柄:a3、给出生成下述语言的上下文无关文法:(1){a n b n a m b m | n, m >= 0}(2){1n0m1m0n | n, m >= 0}【解】:(1)S—>AAA—>aAb | Ɛ(2)S—>1S0 | AA—>0A1 | Ɛ第4章课后作业1. 构造一个状态数最小的DFA,它接受∑={0,1}上所有倒数第二个字符为1的字符串。
【编辑人:胡志高】【解】:(1)构造相应的正规式:(0|1)* 1(0|1)(2)由正规式构造NFA,如下图:(3)NFA转化DFA① T0=ε-closure({0})={0}②运用子集构造法求DFA状态,如下表,其中T0为初态,T2、T3为终态:ε-closure(move(Ti,0))ε-closure(move(Ti,1)) T0={0}{0} {0,1}T1={0,1} {0,2} {0,1,2}T2={0,2} {0} {0,1}T3={0,1,2} {0,2} {0,1,2}③分别用0,1,2,3代表T0,T1,T2,T3,得DFA如下图:(4)最小化DFA①找DFA中等价状态,分析过程如下:P0=({0,1},{2,3})P1=({0},{1},{2},{3})经以上分析可知:0无等价状态。
编译原理作业
习题11.1解释名词:源语言、目标语言、翻译器、编译器和解释器。
答:源语言是指待翻译的语言,和目标语言相对。
目标语言是指被翻译的语言,与源语言相对。
能够完成从一种语言到另一种语言的变换的软件称为翻译器,这两种语言分别叫做该翻译器的源语言和目标语言。
编译器是一种特殊的翻译器,它进行语言变换的特点是目标语言比源语言低级。
解释器是不同于编译器的另一类语言处理器。
它不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。
它的执行方式是一边翻译一边执行,因此其执行效率一般偏低。
1.2典型的编译器可以划分成几个主要的逻辑阶段?各阶段的主要功能是什么?答:典型的编译器可以划分成七个主要的逻辑阶段,分别是词法分析器、语法分析器、语义分析器、中间代码生成器、独立于机器的代码优化器、代码生成器、依赖于机器的代码优化器。
各阶段的主要功能:(1)词法分析器:词法分析阅读构成源程序的字符流,按编程语言的词法规则把它们组成词法记号流。
(2)语法分析器:按编程语言的语法规则检查词法分析输出的记号流是否符合这些规则,并依据这些规则所体现出的该语言的各种语言构造的层次性,用各记号的第一元建成一种树形的中间表示,这个中间表示用抽象语法的方式描绘了该记号流的语法情况。
(3)语义分析器:使用语法树和符号表中的信息,依据语言定义来检查源程序的语义一致性,以保证程序各部分能有意义地结合在一起。
它还收集类型信息,把它们保存在符号表或语法树中。
(4)中间代码生成器:为源程序产生更低级的显示中间表示,可以认为这种中间表示是一种抽象机的程序。
(5)独立于机器的代码优化器:试图改进中间代码,以便产生较好的目标代码。
通常,较好是指执行较快,但也可能是其他目标,如目标代码较短或目标代码执行时能耗较低。
(6)代码生成器:取源程序的一种中间表示作为输入并把它映射到一种目标语言。
如果目标语言是机器代码,则需要为源程序所用的变量选择寄存器或内存单元,然后把中间指令序列翻译为完成同样任务的机器指令序列。
编译原理作业题整理
编译原理作业题整理一、概述编译原理是计算机科学与技术领域的重要基础课程,主要研究编译器的设计与实现。
编译器是将高级语言程序翻译成机器语言的工具,它在软件开辟过程中起着至关重要的作用。
为了匡助学生更好地理解和掌握编译原理的相关知识,以下是一些编译原理作业题整理。
二、词法分析1. 请编写一个正则表达式,用于匹配所有以字母开头,后跟零个或者多个字母或者数字的标识符。
2. 请编写一个正则表达式,用于匹配所有以0开头的八进制数。
3. 请编写一个正则表达式,用于匹配所有以1开头的二进制数。
三、语法分析1. 请给出以下文法的FIRST集和FOLLOW集:S -> aAB | bCDA -> cA | εB -> dC -> eC | εD -> f2. 请构造以下文法的LL(1)分析表:文法:S -> aAB | bCDA -> cA | εB -> dC -> eC | εD -> f3. 请给出以下文法的LR(0)项集族和DFA:文法:S -> L = RL -> * R | iR -> L四、语义分析1. 请给出以下语义规则的翻译方案:E -> E + T { E.val = E1.val + T.val }E -> T { E.val = T.val }T -> T * F { T.val = T1.val * F.val }T -> F { T.val = F.val }F -> ( E ) { F.val = E.val }F -> num { F.val = num.val }2. 请给出以下语义规则的中间代码生成方案:E -> E + T { t = newtemp(); gen(t, '+', E1.val, T.val); E.val = t; }E -> T { E.val = T.val }T -> T * F { t = newtemp(); gen(t, '*', T1.val, F.val); T.val = t; }T -> F { T.val = F.val }F -> ( E ) { F.val = E.val }F -> num { F.val = num.val }五、运行时环境1. 请简述静态作用域和动态作用域的区别。
《编译原理》作业题库含答案
《编译原理》作业题库1. 单选题1. 下列哪一项不是与机器有关的代码优化()。
A. 寄存器优化B. 多处理优化C. 特殊的指令优化D. 有用的指令消除正确答案:D2. 处理冲突的方法不包括以下哪种方法()。
A. 开放定址法B. 再哈希法C. 链地址法D. 建立一个私有溢出区正确答案:D3. 优化可生成()的目标代码。
A. 运行时间较短B. 占用存储空间较小C. 运行时间短但占用内存空间大D. 运行时间短且占用存储空间小正确答案:D4. 一个文法是递归的,则它产生的语言的句子个数()。
A. 必定无穷B. 必定有限C. 可能无穷,也可能有限D. 说不准正确答案:A5. 已知文法G:S→WZ W→X|Y X→a|aX Y→b|bY Z→c|cZ,G定义的语言的相应正规式为()。
A. aa*|bb*|cc*B. (aa*|bb*)cc*C. aa*(bb*|cc*)D. (a|b|c)*正确答案:B6. 设G 是一个给定的文法,S 是文法的开始符号,如果S->x( 其中x∈V*), 则称x 是文法G 的一个()。
A. 候选式B. 句型C. 单词D. 产生式正确答案:B7. 词法分析器用于识别()。
A. 字符串B. 语句C. 单词D. 标识符正确答案:C8. 给定文法G[E]:E→E+T∣T T→T*F∣F F→(E)∣i, 则以下()全都不是规范句型的活前缀①T+ ②T* ③ε④T*F ⑤E+E ⑥E* ⑦E+ T* ⑧i ⑨(E+T)⑩(i)A. ②④⑥B. ⑤⑥⑩C. ①②③④D. ⑦⑧⑨正确答案:A9. 下列()不属于程序设计语言中的低级语言?A. 机器语言B. 汇编语言C. C语言D. 面向机器的程序设计语言正确答案:C10. 设已给文法G=(VN,VT,P,S),其中:VN={S} VT={a1,a2,…,an,∨,∧,~,[,]} P={S→ai∣i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]} 此文法所产生的语言是( )。
编译原理 大作业汇总
塔里木大学信息工程学院课程论文基于 c 语言的简单词法分析器的设计课程名称编译原理所属学院信息工程学院班级计算机16-6学生姓名李鹏宇学号 5011212611二零一四年十二月目录一、引言 (1)二、基于c 语言词法分析器的设计 (1)2.1词法分析器的设计原则 (1)2.2词法分析器的设计对象 (2)2.3词法分析器的任务及功能 (2)2.3.1词法分析器的任务 (2)2.3.2 词法分析程序的功能: (2)2.4各种单词符号对应的种别码: (2)三、基于c 语言词法分析器的实现 (3)3.1词法分析程序的算法思想: (3)3.2主程序示意图: (3)3.3函数定义说明 (4)3.4程序设计实现及功能说明 (4)3.4.1关键字的定义 (4)3.4.2符合的关键字的查找 (4)四、词法分析程序的C语言程序源代码 (5)五、结果分析: (10)六、结束语 (11)参考文献 (7)摘要:词法分析器构造技术起源于编译器前端的词法分析需求,是编译的第一阶段。
其主要任务是读入输入字符,产生记号序列,并提交给语法分析使用。
词法分析器技术也经常应用于其他领域,如查询语言与信息检索系统。
在每个应用中,最基本的问题是如何设计与说明一种特殊的程序,它能够完成由字符串的模式触发的动作。
本文通过实际构造FineC语言(作者设计的一个C语言的轻量子集)的词法分析器对词法分析器的构造原理做了基于实践的探讨。
关键字:词法分析器,双缓冲区,符号表,正则表达式,状态转换图一、引言词法分析顾名思义,就是分词。
它是用程序设计语言编制出的源程序作为输入,以单词的序列作为输出。
分词的过程可以通过编制程序让其自动完成,我们通常把这个分词程序称为词法分析器。
词法分析器分析的源程序可以是现有的各类程序设计语言源程序也可以是人为给定的模型语言的源程序。
它一般有五个阶段:词法分析,语法分析,语义分析和中间代码产生及优化,目标的代码生成。
完成计算机翻译过程的重要阶段,它为以后的语义分析、语法分析打好基础, 做好准备,以便高效的、高质量的生成目标语言的程序。
编译原理作业参考答案.
第1章引言1、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。
目标程序(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。
如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。
其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。
按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
编译原理作业
编译原理作业编译原理是计算机科学领域中的一门重要课程,主要研究程序编译过程中的原理、技术和方法。
编译原理可以帮助我们理解程序是如何被翻译成机器语言,并最终在计算机上执行的。
编译原理的基本概念包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。
其中,词法分析是将程序源代码划分为一个个的词法单元,语法分析是根据语法规则确定这些词法单元之间的关系,而语义分析则是对程序的含义进行分析和验证。
在编译原理中,词法分析器是一个重要的组成部分。
它将输入的字符流转化为一个个的词法单元,例如标识符、关键字、运算符和常量等。
词法分析器通过正则表达式和有限状态自动机来实现,能够高效地识别出程序中的各种词法单元。
语法分析是编译原理中的另一个核心概念。
它通过上下文无关文法来描述程序的语法结构,将输入的词法单元序列转化为一个个的语法分析树。
语法分析器通常采用自顶向下的递归下降分析法或自底向上的移进-规约分析法来实现。
在编译过程中,语义分析是对程序的含义进行分析和验证。
它检查程序中的语义错误,并生成中间表示形式(IR),用于后续的代码生成和优化。
语义分析器通常通过语法制导翻译和语义规则来实现。
中间代码生成是将高级语言程序转化为中间表示形式的过程。
中间代码是一种抽象的表示形式,它比源代码更接近于目标代码,但仍保留了高级语言的结构和语义。
中间代码可以通过三地址码、四元式、抽象语法树等形式表示。
代码优化是编译过程中的一个重要环节,它通过对中间代码进行优化,提高程序的执行效率和资源利用率。
代码优化的目标包括减少指令数、减少内存访问、提高并行性等。
代码优化器通常采用各种优化技术,例如常量传播、死代码消除、循环展开等。
目标代码生成是将中间代码转化为目标机器代码的过程。
目标机器代码是计算机可以直接执行的指令序列,它与具体的硬件平台相关。
目标代码生成器通常根据目标机器的架构和指令集来生成相应的机器代码。
编译原理是计算机科学中的一门基础课程,它研究程序编译过程中的原理、技术和方法。
编译原理1-3章作业
(b)已是DFA,只需最少化
b
=> 0
b 2
3
b
a
a
8、令文法为 E->T|E+T|E-T T->F|T*F|T/F F->(E)|I
(1)给出i+i*i、i*(i+i)的最左推导和最右推导; (2)给出i+i+i、 i+i*i和i-i-i的语法树。
9、证明下面的文法是二义性的: S->iSeS|iS|i
证明:该文法存在一个句子iiiei有两棵不同语法分析树,如下所示, 因此该文法是二义的。
第三章
7、构造下列正规式相应的DFA 1(0|1)*101 0*10*10*10* 9、对下面情况给出DFA及正规表达式 (1){0,1}上的含有子串010的所有串; 12、将图3.18的(a)和(b)分别确定化和最少化。
1(0|1)*101 (1) 构造NFA:
(2) 确定化
构造状态转换矩阵如下:
8、令文法为 E->T|E+T|E-T T->F|T*F|T/F F->(E)|I
(1)给出i+i*i、i*(i+i)的最左推导和最右推导; (2)给出i+i+i、 i+i*i和i-i-i的语法树。 答:(1) 最左推导: E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*i E=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T+T)=>i*(F+T)=>i*(i+T)=>i*(i+F) =>i*(i+i) 最右推导: E=>E+T=>E+T*F=>E+T*i=>E+F*i=>E+i*i=>T+i*i=>F+i*i=>i+i*i E=>T=>T*F=>T*(E)=>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)=>T*(F+i)=>T*(i+i) =>F*(i+i)=>i*(i+i)
中南大学《编译原理》课程作业(在线作业)三及参考答案
(一) 单选题1. 为了管理过程在一次执行中所需要的信息,使用一个连续的存储区来管理,这个区(块) 叫做一个()。
(A)结构体记录(B) 数组记录(C) 管理信息记录(D) 活动记录参考答案:(D)2. 考虑下面的程序:… procedure p(x, y, z); begin x:=x+y; z:=z*z; end beginA:=2; B:=A*2; P(A, B, B); Print A, B end. 若参数传递的方式采用传地址时,程序执行后输出 A, B的值是()。
(A)A=4,B=14(B) A=4,B=16(C) A=6,B=14(D) A=6,B=16参考答案:(D)3. 在运行存储空间的划分中有一个单独的区域叫做堆,留给存放()。
(A)局部数据(B) 静态数据(C) 全局数据(D) 动态数据参考答案:(D)4. 所谓得结果就是每个形式参数对应两个单元,第一个单元存放实参的地址,第二个单元存放实参的值。
在过程体中对形参的任何引用或赋值都被处理成对第二个形式单元的(),但在过程工作完成返回之前必须把第二个单元的内容存放到第一个单元所指的那个实参单元之中。
(A)间接访问(B) 指针访问(C) 直接访问(D) 间接的间接访问参考答案:(C)5. 一个过程相应的DISPLAY表的内容为()。
(A)现行活动记录地址(B) 现行活动记录地址和所有外层最新活动记录的地址传递规则(C) 所有外层最新活动记录的地址(D) 以上都不对参考答案:(B)6. 以下程序 (1) J:=1 (2) A:=0 (3) R:=I-1 (4) C:=B+J (5) A:=C*A (6) if J=20 goto(9) (7) J:=J+1 (8) goto (3) (9) 可划出()个基本块。
(A)4(B) 3(C) 2(D) 5参考答案:(A)7. 通过DISPLAY表访问非局部变量和比沿着静态链访问非局部变量()。
中南大学《编译原理》课程作业(在线作业)一及参考答案
(一) 单选题1. 编译前端主要由与源语言有关但与目标机无关的那些部分组成。
这些部分通常包括词法分析、语法分析、语义分析与中间代码产生。
编译后端包括编译程序中与目标机有关的那些部分,如与目标机有关的 和目标代码生成生成等。
( )(A)代码优化(B)静态语义检查(C)一致性检查(D)类型检查参考答案: (A)2.对于文法G[S] S →(L) S→aS S→a L →L,S L→S 句子 (a,(a,a)) 的最左推导是()。
(A )S=>(L)=>(L,S)=>(L,(L))=>(L,(L,S))=>(L,(L,a))=>(L,(S,a))=>(L,(a,a))=>(S,(a,a))=>(a,(a,a))(B)S=>(L)=>(L,S)=>(a,S)=>(a,(L))=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))(C)S=>(L)=>(L,S)=>(S,S)=>(a,S)=>=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))(D)S=>(L)=>(L,S)=>(S,S)=>(a,S)=>(a,(L))=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))参考答案: (D)3. 高级语言程序的执行有编译方式和( )。
(A)交互方式(B)解释方式(C)终端方式(D)命令方式参考答案:(B)4. 已知文法G[S] S→S*aF | aF | *aF F→+aF | +a 消除文法左递归和提公共左因子后的文法为()。
(A)S→aFS’ | *aFS’ S’→*aFS’ | ε F→+aF’ F’→F |ε(B) S→aFS’ | *aFS’ S’→ ε F→+aF’ F’→F |ε(C) S→aFS’ S’→*aFS’ | ε F→+aF’ F’→F |ε(D) S→aFS’ | *aFS’ S’→*aFS’ | ε F→+aF’ F’→|ε参考答案:(A)5. 扫描器的任务是从源程序中识别出一个个()。
中南大学《编译原理》课程作业(在线作业)二及参考答案
(一) 单选题1. 已知文法G[S]及相应翻译方案S→aAb {print “1”} S→a {print “2”} A→AS{print “3”} A→c {print “4”} 输入acab,输出是()。
(A)4231 (B) 3214 (C) 1234 (D) 3421参考答案:(A)2.a:=(b+c)*e+(b+c)/f的逆波兰式是()。
(A)abc*e+bc+f/+:=(B)abc+e*bc+f/+:=(C)abc+e*b+c+f/:=(D)abc+eb*c+f/+:=参考答案:(B)3. 规范归约也称为()。
(A)最上归约(B) 最左归约(C) 最下归约(D) 最右归约参考答案:(B)4. 规范归约使用进行()归约。
(A)句柄(B) 最左素短语(C) 最右素短语(D) 素短语参考答案:(A)5. 素短语是指这样一个短语,()含有一个终结符,并且,除它自身外不再含任何更小的素短语。
(A)至多(B) 只(C) 至少(D) 不参考答案:(C)6. 表达式(a+b)*(c+d)后缀式为()。
(A)abcd++*(B)abcd*++(C)ab*cd++(D)ab+cd+*参考答案:(D)7. 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定称为()。
(A)继承属性(B)一致属性(C)原子属性(D)综合属性参考答案:(A)8. 在形式语言中,()常被称为规范推导。
(A)最上推导(B) 最左推导(C) 最下推导(D) 最右推导参考答案:(D)9. 自下而上分析的中心问题是()。
(A)判断栈中符号可约性,以及如何归约(B) 判断栈底符号可约性,以及如何归约(C) 判断栈顶符号可约性,以及如何归约(D) 判断栈外符号可约性,以及如何归约参考答案:(C)10. 属性文法的属性分为()两类。
(A)综合属性和继承属性(B)一致属性和继承属性(C)原子属性和继承属性(D)综合属性和传递属性参考答案:(A)11. 对于文法的每个产生式都配备了一组属性的计算规则,称为()。
编译原理第一章作业
01-普通作业一(第一章)一、选择题(从备选项中选出一个或多个正确答案)。
1. 编译程序的源程序是高级语言编写的程序,目标程序是编写的程序。
A. 高级语言B. 汇编语言C. 机器语言D. 汇编语言或机器语言2. 编译程序是对进行翻译。
A. 高级语言B. 汇编语言C. 机器语言D. 自然语言3. 如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两个阶段。
A. 编译B. 汇编C. 运行D. 预处理4. 编译的工作过程一般划分为词法分析、、语义分析、中间代码生成、代码优化和目标代码生成若干阶段。
A. 表格管理B. 出错处理C. 语法分析D. 预处理5. 词法分析阶段的主要任务是识别。
A. 表达式B. 单词C. 语句D. 词组二、判断题(对于下列陈述中正确的说法选择回答“对”,否则选择回答“错”)。
1. 编译程序是一种常见的应用软件。
2. C语言的编译程序可以用C语言编写。
3. 编译方式与解释方式的区别之一在于是否生成目标程序。
4. 中间代码生成是编译程序不可或缺的部分。
5. 含有优化的编译程序执行效率高。
三、解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍四、一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
五、何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系?参考答案:一、选择题1. D2. A3. AC4. C5. B二、判断题1.错2.对3.对4.错5.错三、(1)把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。
(2)源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
(3)为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名。
(4)编译程序的前端通常指:词法分析、语法分析、语义分析等生成最终代码以前的一系列步骤。
17春《编译原理》
17春《编译原理》作业_1一、单选题1. 用高级语言编写的程序经编译后产生的程序叫_____。
A. 源程序B. 目标程序C. 连接程序D. 解释程序答案B2. 构造编译程序应掌握______。
A. 源程序B. 目标语言C. 编译方法D. 以上三项都是答案D3. 四种形式语言文法中,1型文法又称为_____文法。
A. 短语结构文法B. 前后文无关文法C. 前后文有关文法D. 正规文法答案C4. 解释程序处理语言时, 大多数采用的是_____方法。
A. 源程序命令被逐个直接解释执行B. 先将源程序转化为之间代码, 再解释执行C. 先将源程序解释转化为目标程序, 再执行D. 以上方法都可以答案B5. 四元式之间的联系是通过_____实现的。
A. 指示器B. 临时变量C. 符号表D. 程序变量答案B6. 把汇编语言程序翻译成机器可执行的目标程序的工作是由_____完成的。
A. 编译器C. 解释器D. 预处理器答案B7. 下列______优化方法不是针对循环优化进行的。
A. 强度削弱B. 删除归纳变量C. 删除多余运算D. 代码外提答案C8. 将编译程序分成若干个"遍"是为了( )。
A. 提高程序的执行效率B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率答案B9. 在自底向上的语法分析方法中,分析的关键是_____。
A. 寻找句柄B. 寻找句型C. 消除递归D. 选择候选式答案D10. 设G 是一个给定的文法,S 是文法的开始符号,如果S->x( 其中x∈V*), 则称x 是文法G 的一个_____。
A. 候选式B. 句型C. 单词D. 产生式答案B二、多选题1. 一个LR(1) 项目可以看成()两个部分组成。
A. 心B. 向前搜索符集合C. 分析表答案A,B2. 循环优化的重要技术有()。
A. 代码外提B. 删除归纳变量C. 强度削弱D. 局部优化答案A,B,C3. 运行时的存储区常常划分为:()A. 目标区B. 静态数据区C. 栈区D. 堆区答案A,B,C,D三、判断题1. 解释程序适用于COBOL 和FORTRAN 语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B. (1)
C. (1)(2)(3)
D. (2)(3)
得分:0
知识点:第一章
收起解析
答案
B
解析
第一章绪论
4.
(4分)动态存储分配可采用的分配方案是()。
A.队式存储分配
B.栈式存储分配
C.线性存储分配
D.链式存储分配
得分:0
知识点:第八章
收起解析
答案
B
解析
第八章存储空间组织
5.
(4分)正规式M 1和M 2等价是指_____。
收起解析
答案
A
解析
第五章语法分析
11.
(4分)按逻辑上划分,编译程序第二步工作是____。
A.语义分析
B.词法分析
C.语法分析
D.代码代码优化
得分:0
知识点:第一章
收起解析
答案
C
解析
第一章绪论
12.
(4分)一般程序设计语言的定义都涉及( )三个方面。1)语法2)语义3)语用4)程序基本符号的确定
得分:0
知识点:第一章
收起解析
答案
错误
解析
第一章绪论
4.
(4分)削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。
得分:0
知识点:第九章
收起解析
答案
正确
解析
第九章代码优化
5.
(4分)程序中的表达式语句在语义翻译时不需要回填技术。
得分:0
知识点:第七章
收起解析
答案
正确
解析
第七章中间代码生成
6.
得分:0
知识点:第三章
收起解析
答案
错误
解析
第三章词法分析
3.
(4分)对任意的SLR(1)文法G,都存在DFA(M),满足L(M)=L(G)。
得分:0
知识点:第五章
收起解析
答案
错误
解析
第五章语法分析
4.
(4分)一个LL( l)文法一定是无二义的。
得分:0
知识点:第四章
收起解析
答案
正确
解析
第四章LL(1)文法
二、判断
1.
(4分)动态数组的存储空间在编译时就可完全确定。
得分:0
知识点:第八章
收起解析
答案
错误
解析
第八章运行时存储空间组织
2.
(4分)仅考虑一个基本块,不能确定一个赋值是否真是无用的。
得分:0
知识点:第七章
收起解析
答案
正确
解析
第七章赋值语句
3.
(4分)编译程序与具体的机器有关,与具体的语言无关。
得分:0
知识点:第六章
收起解析
答案
A
解析
第六章属性文法
14.
(4分)_____是两类程序语言处理程序。
A.高级语言程序和低级语言程序
B.解释程序和编译程序
C.编译程序和操作系统
D.系统程序和应用程序
得分:0
知识点:第一章
收起解析
答案
B
解析
第一章绪论
15.
(4分)文法G:S→xSx|y所识别的语言是_____。
A. A右递归
B. B左递归
C. C直接右递归
D. D直接左递归
得分:0
知识点:第四章
收起解析
答案
B
解析
第四章自顶向下的语法分析
11.
(4分)下列______代码优化方法不是针对循环代码优化进行的。
A.强度削弱
B.删除归纳变量
C.删除多余运算
D.代码外提
得分:0
知识点:第九章
收起解析
答案
C
解析
第九章代码优化
A. xyx
B. (xyx)* C.
C. xnyxn(n≥0)
D. x*yx*
得分:0
知识点:第六章
收起解析
答案
C
解析
第六章属性文法
二、判断
1.
(4分)算符优先分析法等价于规范规约
得分:0
知识点:第五章
收起解析
答案
错误
解析
第五章算符优先分析
2.
(4分)正则文法其产生式为A-﹥a,A-﹥Bb, A,B∈VN,a、b∈VT。
B.直接短语
C.最左素短语
D.控制结点
得分:0
知识点:第五章
收起解析
答案
C
解析
第五章归约
2.
(4分)一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码代码优化,目标代码生成等五个部分。
A.语法分析
B.文法分析
C.语言分析
D.解释分析
得分:0
知识点:第一章
收起解析
答案
A
解析
第一章绪论
3.
编译原理课程作业
一、单选题
1.
(4分)文法G所描述的语言是______的集合。
A.文法G的字符表V中所有符号组成的符号串
B.文法G的字符表V的闭包V*中的所有符号串
C.由文法的识别符号推出的所有符号串
D.由文法的识别符号推出的所有终结符号串
得分:0
知识点:第六章
收起解析
答案
D
解析
第六章属性文法
2.
(4分)在LR分析法中,分析栈中存放的状态是识别规范句型_____的DFA状态。
A. M1和M2的状态数相等
B. M1和M2的有向边条数相等
C. M1和M2所识别的语言集相等
D. M1和M2状态数和有向边条数相等
得分:0
知识点:第三章
收起解析
答案
C
解析
第三章正规文法
6.
(4分)编写一个计算机高级语言的源程序后,到正式上机运行一般要经过____这几步. (1)编辑(2)编译(3)连接(4)运行
A.维数
B.类型
C.各维的上下界
D.各维的界差
得分:0
知识点:第七章
收起解析
答案
B
解析
第七章数组元素
9.
(4分)在重载符号的引用点,若其含义能确定到唯一,就叫做重载的______。
A.定义
B.消除
C.确定
得分:0
知识点:第五章
收起解析
答案
C
解析
第五章语法分析
10.
(4分)编译程序生成的目标程序____是可执行的程序.
得分:0
知识点:第三章
收起解析
答案
错误
解析
第三章词法分析
8.
(4分)程序语言的语言处理程序是一种应用软件。
得分:0
知识点:第一章
收起解析
答案
错误
解析
第一章绪论
9.
(4分)词法分析作为单独的一遍来处理较好。
得分:0
知识点:第三章
收起解析
答案
错误
解析
第三章词法分析
10.
(4分)“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。
D.正规文法
得分:0
知识点:第六章
收起解析
答案
A
解析
第六章属性文法
9.
(4分)编译程序中的语法分析器接受以______为单位的输入,并产生有关信息供以后各阶段使用。
A.表达式
B.产生式
C.单词
D.语句
得分:0
知识点:第四章
收起解析
答案
C
解析
第四章语法分析
10.
(4分)采用自顶向下分析方法时,要求文法中不含有____。
A.一定
B.不一定
得分:0
知识点:第一章
收起解析
答案
B
解析
第一章绪论
11.
(4分)算符优先分析与规范归约相比的优点是:
A. A归约速度快
B. B对文法限制少
得分:0
知识点:第二章
收起解析
答案
A
解析
第二章编译原理基础第三节
12.
(4分)编译原理各阶段工作都涉及_____
A.词法分析
B.表格管理
C.语法分析
收起解析
答案
D
解析
第一章绪论
9.
(4分)在自底向上的语法分析方法中,分析的关键是______。
A.寻找句柄
B.寻找句型
C.消除递归
D.选择候选式
得分:0
知识点:第五章
收起解析
答案
D
解析
第五章语法分析
10.
(4分)算符优先分析与规范归约相比的优点是( )
A.归约速度快
B.对文法限制少
得分:0
知识点:第五章
C. AB∨┐CD∨∧
D. A┐B∨∧CD∨
得分:0
知识点:第七章
收起解析
答案
B
解析
第七章后缀式
8.
(4分)与编译系统相比,解释系统_____。
A.比较简单,可移植性好,执行速度快
B.比较复杂,可移植性好,执行速度快
C.比较简单,可移植性差,执行速度慢
D.比较简单,可移植性好,执行速度慢
得分:0
知识点:第一章
(4分)算符优先分析与规范归约相比的优点是:
A. A归约速度快
B. B对文法限制少
得分:0
知识点:第二章
收起解析
答案
A
解析
第二章编译原理基础第三节
4.
(4分)数组的内情向量中肯定不含有数组的_____的信息。
A.维数