解释程序:对高级语言源程序并不生成汇编程序或机器语言程序,而是边解释边执行的 程序。 编译程序把源语言程序翻译成目标代码,然后由操作系统加载执行;而解释程序则是边 翻译边执行,不生成目标代码。
3. 前端编译和后端编译是如何划分的? 根据编译器的工作是与源语言相关还是目标机器有关来进行划分。 编译前端:编译程序中包括词法分析、语法分析、语义分析和中间代码产生等主要与源 语言程序有关但与目标机无关的那些部分叫编译前端。 编译后端:编译程序中包括目标代码生成、目标代码优化等与目标机有关而与源语言无 关的那些部分部分叫编译后端。
4. 标识符是由字母或数字以及某些特殊符号(因不同的高级语言而不同)组成的,但是必 须以字母开头的一个字符串。 当给某标识符以确切的含义时,这个标识符就叫做名字。程序语言中的各种名字都是用 标识符表示的。 名字和标识符具有相同的形式,名字使用标识符来描述,但标识符是没有意义的字符序 列,而名字却有确切的意义和属性(即类型和作用域)。
5. 6.
六.应用题 解答:
第二章 高级语言及其语法描述
一.填空题
1. 假设G是一个文法,?是由终结符和非终结符组成的串,S是文法的开始符号,如果S=>*α
,则称α是________________________。
2. 在赋值语句中,赋值号‘:=’左右两边的变量名扮演着两种不同的角色,为了区分一个 名字的这两种特征,我们把一个名字所代表的______称为该名的左值,把一个名字的_______ _ 称为该名字的右值。
3. 对于文法G,仅含终结符号的句型称为_________________________。
4. 设有文法G[S],其部分产生式: S->S;T S->T T->if E then S T->V:=E T->A 则VN ={ },VT={ }。
5. 由文法产生的_______________________集合是文法产生的语言。
6. Chomsky语法定义的3型文法又可以分为__________________________________。
7. 一个上下文文法G的四个组成部分分别是:________________________________________ _。
8. 已知语言:{anbnambm|n,m≥0},其
语法定义为:G=({a,b},{S,A,B},S,P),其中P为: ________________________________________________________ 。
9. 已知某语言的语法定义为:G=({1,0},{S,A},S,P),且P:S→1A0|A|ε?;A→0A1| ε,则该语言为________________________________。
10. 已知某语言为{?wcwR|?∈{a,b}*},其语法定义为G=({a,b,c},{S},S, P), 其中P为:_________________________________ 。
11. 所谓最右推导是指_________________________________________________________。
12. 已知文法G(Z): E→ET+|T T→TF*|F F→FP↑|P P→E|i 试写出其识别的一个句子:_____________________。
13. 文法G[S]:S→aA|a, A→aS为_______ 型文法,其确定的语言的为:_______ 。
14. 在一棵语法树生长过___________________________________________ _________ 就是一个句型。
程
中
的
任
何
时
刻
,
15. 我们说G=(VT,VN,S,P)是一个0型文法,如果它的每一个产生 式α→β是这样一种结构:
_________________________________________________________________ 。
解答: 1. 句型;
2. 单元的地址(或者:单元、存储单元的地址),值(或者:单元的内容) 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
二.判断题
1. 一棵语法树表示了一个句型所有的不同推导过程,包括最右推导和最左推导。 ( )
2. 可能有两个不同的文法G和G“,期中一个是二义的而另一个是无二义的,但是却有L(G) =L(G“)。( )
3. 变量既持有左值又持有右值,而常数和带有算符的表达式一般认为只持有右值。( )
4. 文法G: S→bA A→aA|a 定义的语言是所有以b开头的后跟至少一个a的字符串的集合。( )
5. 设有文法G: S→S*S | S+S | (S) | a
该文法是二义的。( )
6. 正则文法一定不是二义的。( )
7. 上下文无关文法可以产生语言L={ anbnci | i>=1, n>=1 }。( )
8. 不存在任何正规文法能产生语言L={anbn | n>=1}。( )
9. 对于每一个左线性文法G1,都存在一个右线性文法G2,使得L(G
( ) 1)=L(G2)。
10. 正规文法产生的语言都可以用上下文无关文法来描述。( )
11. 上下文无关文法比正规文法有更强的描述能力。( )
12. 文法的二义性和语言的二义性在概念上是相同的,也就是说,对于某个语言,不可能存 在两个以上的文法来描述它。( )
13. 二义性是可以判定的,也就是说,可以编这么一个程序,输入该文法后,该程序能确切 地给出该文法是否二义的答案。( )
14. 说明语句旨在定义名字的性质。编译程序把这些性质登记在符号表中,并检查程序中名 字的引用和说明是否一致。实际上,许多说明语句并不能翻译成相应的目标代码。( )
15. C语言是一个允许子程序嵌套定义的语言。( )
解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.