"计算机编译原理课后习题及答案详细解析"
计算机编译原理是计算机科学中的一门重要课程,对于计算机科学专业的学生来说非常重要。本文档提供了计算机编译原理课后习题及答案的详细解析,涵盖了编译程序的总体结构、词法分析器、语法分析器、语义分析及中间代码生成器、目标代码生成器、优化器、表格管理模块、出错处理程序等方面的知识点。
一、编译程序的总体结构
编译程序的总体结构图如下所示:
图 编译程序的总体结构图
其中,词法分析器又称扫描器,对源程序进行词法分析,识别出一个个的单词符号,其输出结果为单词符号串。语法分析器对单词符号串进行语法分析,识别出程序中的各类语法单位,最终判断输入串是否构成语法正确的程序。语义分析及中间代码生成器按照语义规则对语法分析器归纳出的语法单位进行语义分析,并把它们翻译成一定形式的中间代码。目标代码生成器把中间代码翻译成目标程序。优化器对中间代码进行优化处理,以提高目标程序的执行效率。
二、计算机执行用高级语言编写的程序
计算机执行用高级语言编写的程序有两种途径,即解释与编译。像 Basic 之类的语言,属于解释型的高级语言。它们的特点是计算机并不事先对高级语言进行全盘翻译,将其变为机器代码,而是每读取一行源程序就立即翻译并执行。像 C,Pascal 之类的语言,属于编译型的高级语言。它们的特点是计算机事先对高级语言进行全盘翻译,将其全部变为机器代码,再统一执行。
三、文法和语言
文法是定义语言的规则的集合。语言是文法所生成的字符串的集合。例如,文法 G[S] 為:S->Ac|aB A->ab B->bc,則 L(G[S])={abc}。文法 G[N] 為:N->D|ND D->0|1|2|3|4|5|6|7|8|9,則 G[N] 的语言是 V+,V={0,1,2,3,4,5,6,7,8,9}。
四、正规式和正规文法
正规式是一种特殊的文法,它的产生式形式为 R->aR|ε,其中 R 是非终结符,a是终结符,ε 是空串。例如,正规式是 daa*b* ;相应的正规文法为:G[S]:S →dA A→a|aB B →aB|a|b|bC C →bC|b。
五、上下文无关文法
上下文无关文法是一种特殊的文法,它的产生式形式为 A-> β,A∈Vn,β ∈(Vn∪Vt)* 。例如,语言 {anbncm|n>=1,m>=0} 的上下文无关文法为:S->AB|A A->aAb|ab B->Bc|c。
六、偶正整数集合的文法
偶正整数集合的文法可以定义为:E->NT|G|SFM T->NT|G N->0|1|2|3|4|5|6|7|8|9 D->0|2|4|6|8 G->2|4|6|8 S->NS| εF->1||2|3|4|5|6|7|8|9 M->M0|0。
七、语法树
语法树是语法分析器生成的一棵树,它可以用来描述源程序的语法结构。例如,以下是一些语法树的示例:
(1)i;
E=>T=>F=>i
(2)i*i+i
E=>E+T=>T+T=>T*F+T=>F*F+T=>i*F+T=>i*i+T=>i*i+i
(3)i+i*i
E=>E+T=>T+T=>F+T=>F+T=>i+i*T=>i+i*i
(4)i+(i+i)
E=>E+T=>T+T=>F+T=>F+T=>i+(i+i)
本文档提供了计算机编译原理课后习题及答案的详细解析,涵盖了编译程序的总体结构、词法分析器、语法分析器、语义分析及中间代码生成器、目标代码生成器、优化器、表格管理模块、出错处理程序等方面的知识点,对于计算机科学专业的学生来说非常重要。