欢迎来到天天文库
浏览记录
ID:13229257
大小:48.00 KB
页数:4页
时间:2018-07-21
《编译原理简单复习》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、画出编译程序的总体结构图,简述其部分的主要功能。[答案]编译程序的总框图见下图。 图编译程序的总体结构图其中词法分析器,又称扫描器,它接受输入的源程序,对源程序进行词法分析,识别出一个个的单词符号。语法分析器对单词符号串进行语法分析(根据语法规则进行推导或归纳),识别出程序中的各类语法单位,最终判断输入串是否构成语法上正确的“程序语句”。语义分析及中间代码产生器,按照语义规则对语法分析器归纳出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。优化器对中间代码进行优化处理。其过程实际上是对中间代码进行等价
2、替换,使程序在执行时能更快,并占用更小的空间。目标代码生成器把中间代码翻译成目标程序。中间代码一般是一种与机器无关的表示形式,只有把它再翻译成与机器硬件相关的机器能识别的语言,即目标程序,才能在机器上运行。表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。编译程序各个阶段所产生的中间结果都记录在表格中,所需要的信息也大多从表格中,所需要的信息也大多从表格中获取,整个编译过程都在不断地和表格打交道。出错处理程序对出现在源程序中的错误进行处理。编译程序的各个阶段都有可能发现错误,出错处理程序要对发现的错误进行处理、记录,
3、并反映给用户。 2.已知文法G:E->E+T
4、E-T
5、TT->T*F
6、T/F
7、FF->(E)
8、i试给出下述表达式的推导及分析树(1)i;(2)i*i+i(3)i+i*i(4)i+(i+i)[答案](1)E=>T=>F=>i(2)E=>E+T=>T+T=>T*F+T=>F*F+T=>i*F+T=>i*i+T=>i*i+F=>i*i+i(3)E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*i(4)E=>E+T=>T+T=>F+T=>i+T=>i+F=>i+(E)=>i+(E+T)=>i+(T+T)
9、=>i+(F+T)=>i+(i+T)=>i+(i+F)=>i+(i+i) 3.文法G[S]为:S->Ac
10、aBA->abB->bc该文法是否为二义的?为什么?[答案]对于串abc(1)S=>Ac=>abc(2)S=>aB=>abc即存在两不同的最右推导所以,该文法是二义的。4.令文法G[E]为:E->E+T
11、E-TT->T*F
12、T/F
13、FF->(E)
14、I对于它的一个句型E+T*F,指出这个句型的所有短语、直接短语、句柄和素短语。[答案]此句型的短语有:E+T*F,T*F,直接短语为:T*F。句柄为:T*F素短语
15、:T*F 5.已知文法G[E]:E→ET+
16、TT→TF*
17、FF→F^
18、a试证:FF^^*是文法的句型,指出该句型的短语、直接短语、句柄和素短语.[答案]该句型对应的语法树如下: 该句型的短语有FF^^*,F,F^,F^^;直接短语有F;F^;句柄为F;素短语为F^
此文档下载收益归作者所有