当前位置:文档之家› 编译原理第章习题课答案

编译原理第章习题课答案

编译原理
chapter1
chapter1~5习题
1、何谓源程序、目标程序、翻译程序、编译程序 和解释程序?它们之间可能有何种关系?
源程序:用源语言编写的程序。
目标程序:源程序经E翻va译lu程a序tio过n加o工nl处y.理后生成的程序。 d翻w译it程h序A:sp将o源se程.S序li转de换s为fo与r其.N逻E辑T 上3.等5 价Cl的ie目nt标P程ro序fi。le 5 编译程C序o:p源yr语ig言h为t 2高0级04语-2言01,1目A标sp语o言se为P汇t编y L语t言d.或机
器语言的翻译程序。
① 先翻译后执行 ②执行速度快 ③多次运算
解释程序:源语言程序作为输入,但不产生目标程序,而 是边解释边执行源程序本身。
① 边解释边执行 ② 有利于程序的调试 ③ 1次运算
编译原理
chapter1
chapter1~5习题
2、一个典型的编译系统通常由有哪些部分组成? 各部分的主要功能是什么?
① 词法分析(Lexical Analysis): 从左到右一个字符一个字符的读入源程序,对构
成源程序的字符串进行扫描和分解,从而识别出一
个个单词(也称E单v词al符u号at或io简n 称on符ly号. )。 d w②it语h 法As分p析os(Sey.SntlaidxeAsnfaolyrs.iNs)E:T 3.5 Client Profile 5
⑥ 代码生成(Generation of code):
目标代码生成是编译器的最后一个阶段。在生成目标 代码时要考虑以下几个问题:计算机的系统结构、指令 系统、寄存器的分配以及内存的组织等。
编译原理
chapter2
chapter1~5习题
1.写出C语言和Java语言的输入字母表。
C语言:0~9数字,大小写英文字母,键盘上可见的字符
首先:找到此E文v法al对u应at的io一n 个on句ly子. iiiei d with其A次s:po构s造e.与S之lid对e应s f的o两r .棵NE语T法3树.5 Client Profile 5
CopyrighSt 2004-2011 AspoSse Pty Ltd.
i SeSiSFra bibliotekiSi
i S eS
词法分析
Evaluatio语n法o分n析ly.
d with Aspose.编Sl译id程es序for语.N义E分T析3与.5中C间lie代n码t P生ro成file 5
编C译o系py统right
2004-201优1 化Aspose Pty
目标代码生成
Ltd.
运行系统
编译原理
chapter1
chapter1~5习题
末尾:以1|3|5|7|9结尾
D→1|3|5|7|9
开头:除了E0v的al任ua意ti数on字only.B→2|4|6|8|D
d wit中h间A部sp分o:se空.S或li者de任s意fo数r 字.N串ET 3C.5→CClAie|nε t Profile 5
所以C题o目p要yr求ig的ht文2法00G4[N-2]0可1以1 A写s成p:oAs→e 0P|tBy Ltd.
N → BCD|D
D → 1|3|5|7|9
B → 2|4|6|8|D C → CA |ε A→0|B
编译原理
chapter1~5习题
9、证明文法: S → iSeS | iS | i 是二义的。
二义性的含义: 如果文法存在某个句子对应两棵以上
不同的语法树,或者两种以上不同的最 左/右推导,则称这个文法是二义的。
所以C整o个p文yr法igGh1t[S2]0可04以-写20为11:Aspose Pty Ltd.
G1(S): S→AB A→aAb|ab B→cB|ε
编译原理
chapter1~5习题
L2={aibncn| n≥1,i≥0}
G6的语言是: 0~9的数字组成的任意非空串
L(G6)={x|x∈{0,1,2,3,4,5,6,7,8,9}+}
(2)给出句子0127、34和568的最左和最右推导。
编译原理
chapter1~5习题
7、 写一文法,使其语言是奇数集。 要求:不以0打头。
(一位): D → 1|3|5|7|9 复杂的情况:分三部分
C在o词p法yr分ig析h的t 2基00础4上-2将01单1词A序sp列o分se解P成ty各L类td语.法
短语,如“程序”,“语句”,“表达式”等等。
③ 语义分析(Syntactic Analysis):
语义分析是在语法分析程序确定出语法短语后,审查 有无语义错误,并为代码生成阶段收集类型信息。
编译原理
i
ii
结论:因为该文法存在句子iiiei对应两棵 不同的语法树,因而该文法是二义的。
编译原理
11、给出下面语言的相应文法
chapter1~5习题
L1={anbnci| n≥1,i≥0} 从n,i的不同取值来把L1分成两部分:
前半部E分v是aluaantbion :n oAn→lya. Ab | ab d with Aspos后e半.S部lid分e是s focri.:NEBT →3.B5cC|lεient Profile 5
d w⑤it代h A码s优p化os(Oep.Stilmidizeastifoonro.Nf cEoTde3).:5 Client Profile 5
为了Co使p生yr成ig的h目t 2标0代04码-2更0为11高A效sp,o可se以P对t产y 生Lt的d.中间
代码进行变换或进行改造,这就是代码的优化。
Java语言:Unicode可以包括的所有字符。
d w6.i文th法AGs6p为o:se.SElDNivd→a→elsu0D|fa|1oNt|2irDo|.3nN|4Eo|5nT|6l3y|7..5|8|C9lient Profile 5 (C1)opGy6r的ig语ht言2是00什4么-2?011 Aspose Pty Ltd.
chapter1~5习题
chapter1
④ 中间代码生成(Generation of intermediate code):
完成语法分析和语义处理工作后,编译程序将源程序
变成一种内部表示形式,这种内部表示形式叫做中间语
言或称中间代码,它是一种结构简单、含义明确的记号
系统。
Evaluation only.
相关主题