第一章 引论
第一章
1、通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目 标代码生成等五个部分,还应包括( )
a、表格处理和出错处理
b、解释器
c、模拟执行器
d、符号执行器
2、下面哪个语言不能编写编译程序?
a、algol
b、c
c、c
d、java
3、含有优化部分的编译程序的执行效率高
4、fortran语言是一种系统程序设计语言,可用来编写编译程序。
5、编译程序与具体的机器有关。
6、编编译程序与具体的语言无关。
7、编译程序生成的目标程序一定是可执行的程序。
8、编译程序与解释程序的根本区别在于是否生成目标代码。
9、编译程序是一种常用的应用软件
10、对编译程序而言,中间代码生成是不可缺少的一部分。
第一章作业
1、利用t型图描述在a机器上,利用c语言编写c 语言翻译程序产生b机器的目标代码的交叉编译过程。
第一章课前作业
1、先阅读程序,分析该程序可能存在的错误。利用编译器对下面c语言程序进行编译,将编译结果截图上传作为作业(并备注使用了什么编译器),并思考编译器给出的分析与你的分析是否一致。 int f (int i, char a) { if (a=‘x’) i=i 5; else i=i 10; return i; } void main() { int s=0; s=f(5, “abc”); }
第二章 形式语言的基础知识
第2章测试
1、文法 g 所描述的语言是 的集合。
a、文法 g 的字母表 v 中所有符号组成的符号串
b、文法 g 的字母表 v 的闭包 v* 中的所有符号串
c、由文法的开始符号推出的所有符号串
d、由文法的开始符号推出的所有终结符串
2、文法 g[n]= ( {n , b} ,{b}, {n→b│ bb , b→bn} ,n ),该文法所描述 的语言是 。
a、l(g[n])={│ i ≥ 0}
b、l(g[n])={ │ i≥ 0}
c、l(g[n])={│ i ≥ 0}
d、l(g[n])={│ i ≥ 1}
3、以下各项是0型文法但不是1型文法的一项是 。
a、s::=ab a::=a b::=bc b::=b c::=c
b、s::=aab aa::=ab aa::=aaa b::=b a::=a
c、s::=ab b::=bc c::=c c::=ε
d、s::=acd ac::=b ac::=aaa b::=b
4、文法g[s]:s→xsx | y所产生的语言是 。
a、{xyx}
b、(xyx)*
c、x*yx*
d、{|n≥0}
5、设文法g[s]规则为:s→ab b→a|sb|b a a→aa|bb 句型baabb的句柄为
a、ba
b、a
c、ab
d、b
6、扩充bnf范式[t]表示
a、t不出现或者出现任意多次
b、t只出现一次
c、t不出现或出现一次
d、t至少出现一次
7、一个文法产生的( )的全体,是该文法所描述的语言。
a、句型
b、短语
c、句柄
d、句子
8、广义推导的长度( )
a、大于等于0
b、大于0
c、大于1
d、等于1
9、已知文法g[z],其产生规则p为: z→be|ab|zc a→ae|e b →ce|af c→cf d→f,其压缩过文法为:
a、z→be|ab a∷=ae|e b∷=af
b、z→be|ab a∷=ae|e b →ce|af
c、z→be|ab a∷=ae|e
d、z→be|ab|zc z→be|ab a∷=ae|e b →ce|af
10、由递归文法产生的语言集合一定是无限集合。
11、文法g[s]: s::=acd ac::=b ac::=aac b::=b 是上下文有关文法。
12、直接推导“=>”的长度为1,推导“=> ”的长度≥1,而广义推导“=>*”的长度≥0。
13、某文法是二义性的,该文法对应的语言一定是二义性的。
14、字汇表中的某个符号不可能既是终结符又是非终结符。
15、规范归约又称为最右归约。
16、一个语言可以有多个文法来描述。
17、g[a]: a::=[b b::=d]c c::=ac | ε d::=ac | bc | ε 的非终结符号集合 vt={a, b, [, ], ε}
18、如果在进行归约时,文法的某些规范句型的句柄不唯一,则称该文法是二义性文法。
19、下推自动机所对应的文法为0型文法。
20、句子也是句型。
第二章作业
1、证明文法g[a]: a::= iaea | ia | i是二义性的。
第三章 词法分析
第三章测试
1、( )不是nfa的成分。
a、有穷输入字母表
b、文法符号集合
c、终止状态集合
d、有限状态集合
2、通常程序设计语言的词法规则可以用正规表达式描述,词法分析器可以用()来实现
a、语法树
b、有穷自动机
c、栈
d、堆
3、正规表达式的运算符“*”读作()
a、或
b、连接
c、闭包
d、乘
4、正规表达式(a|b)(a|b|0|1)*对应的文法是()
a、s::=aa|ba a::=0a|1a|ε
b、s::=aa|ba a::=0a|1a|aa|ba|ε
c、s::=aa|ba a::=0a|1a|aa|ba
d、s::=a a::=0a|1a|aa|ba|ε
5、编译程序中词法分析器从源程序中识别出一个一个具有独立意义的()。
a、表达式
b、语句
c、单词符号
d、过程
6、由正规文法构造状态转换图,其右线性文法识别符号对应是状态转换图的初始状态。
7、由正规文法构造状态转换图,其左线性文法识别符号对应是状态转换图的终止状态。
8、某一个左线性文法必然能找到与之等价的右线性文法。
9、正规表达式m1和m2等价是指m1和m2所识别的语言集相等。
10、正规表达式(a|b)*和(a*b*)*不等价
11、文法z::=a0 a::=a0|z1|0 其所对应的自动机是确定的。
12、a是正规表达式,则a* = ε| aa*
13、确定的有穷自动机只有唯一的初始状态。
14、确定的有穷自动机只有唯一的终止状态
第三章作业
1、构造下列正规式相应的dfa:(0 | 11*0)*
第四章
第四章测验
1、递归下降分析法属于()分析方法
a、自顶向下
b、自底向上
c、自左到右
d、从右到左
2、假设有一文法,如果文法g中没有形如a::=....bc....这样的规则,其中a、b和c都为非终结符号,则称该文法为()
a、算符优先文法
b、算符文法
c、简单优先文法
d、ll(1)文法
3、简单优先分析法进行分析时,当栈顶出现()时进行归约
a、素短语
b、简单短语
c、最左素短语
d、句柄
4、已知文法g[a]: a∷=bcc | gdb b∷=ε| bcde c∷=dab | ca d∷=ε| dd e∷=gaf | c 求first(a)=()。
a、{ a,b,c,d,g}
b、{ a,b,c,g}
c、{ b,c,d,g}
d、{ a,b,c,d,g,ε}
5、已知文法 a∷=bcc | gdb b∷=ε| bcde c∷=dab | ca d∷=ε| dd e∷=gaf | c follow(b)={}
a、{ a,c,d,g}
b、{ a,c,d,g,f,#}
c、{ a,c,b,d,g,f,#}
d、{ a,g,f,#}
6、lr分析栈中存放的状态是识别文法规范句型()的dfa的状态。
a、前缀
b、活前缀
c、项目
d、句柄
7、下面文法不是算符优先文法: s∷=a[ ] | [ a∷=aa | b] b∷=a
8、下面文法不是简单优先文法 s∷=beb e∷=f | f t | t | i t∷=i | (e)
9、该项目b ::= abb· 是移进项目。
10、文法: e∷=ee | ee* | a follow(e)={ ,*,#}
11、ll(1)文法无左递归、无二义性。
12、lr分析法是一种规范归约分析法
13、算符优先分析法是一种一种规范归约分析法
14、简单优先分析法是一种一种规范归约分析法
15、s∷=aaa | abb| bab| bba a∷=x b∷=x 该文法不是lalr(1)文法
第四章作业1
1、消除下列文法的间接左递归 g[z]: z::=az | b a::=z a | a
2、构建下面文法的ll(1)分析表 s∷=aad a∷=bc b∷=b |ε c∷=c |ε
第四章作业2
1、已知文法z::= bmb m::= (l|a l::= ma) 利用简单优先分析法分析符号串((aa)a)#
2、证明下述文法不是简单优先文法: (1) s∷=beb e∷=e t | t
期末测试
期末测试
1、以下各项是0型文法但不是1型文法的一项是 。
a、s::=ab a::=a b::=bc b::=b c::=c
b、s::=aab aa::=ab aa::=aaa b::=b a::=a
c、s::=ab b::=bc c::=c c::=ε
d、s::=acd ac::=b ac::=aaa b::=b
2、设文法g[s]规则为:s→ab b→a|sb|b a a→aa|bb 句型baabb的句柄为
a、ba
b、a
c、ab
d、b
3、文法 g 所描述的语言是 的集合。
a、文法 g 的字母表 v 中所有符号组成的符号串
b、文法 g 的字母表 v 的闭包 v* 中的所有符号串
c、由文法的开始符号推出的所有符号串
d、由文法的开始符号推出的所有终结符串
4、文法g[s]:s→xsx | y所产生的语言是 。
a、{xyx}
b、(xyx)*
c、x*yx*
d、{|n≥0}
5、通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目 标代码生成等五个部分,还应包括( )
a、表格处理和出错处理
b、解释器
c、模拟执行器
d、符号执行器
6、下面哪个语言不能编写编译程序?
a、algol
b、c
c、c
d、java
7、已知文法g[s]: s∷=s(s) s∷=ε 在文法中引入新的开始符号s’,并将s’::=s作为规则0, 已知 i={[s’::= ·s,#]},求closure(i)。
a、s’->•s,# s->•s(s),#,( s->• #,(
b、s’->•s,# s->•s(s),#,( s->•ε #,(
c、s’->•s,# s->•s(s),# s->• #
d、s’->•s,# s->•s(s),# s->•ε #
8、简单优先分析法进行分析时,当栈顶出现()时进行归约
a、素短语
b、简单短语
c、最左素短语
d、句柄
9、已知文法g[a]: a∷=bcc | gdb b∷=ε| bcde c∷=dab | ca d∷=ε| dd e∷=gaf | c 求first(bcc)=()。
a、{ a,b,c,d,g}
b、{ a,b,c,d}
c、{ b,c,d,g}
d、{ a,b,c,d,g,ε}
10、已知文法 a∷=bcc | gdb b∷=ε| bcde c∷=dab | ca d∷=ε| dd e∷=gaf | c follow(e)={}
a、{ a,c,d,g}
b、{ a,c,d,g,f,#}
c、{ a,c,b,d,g,f,#}
d、{ a,g,f,#}
11、对于文法g(s'): (0) s' → s (1) s → as (2) s → bs (3) s → a 该文法的lr分析表如下: 下面是输入串aba#的lr分析过程的0~4步的格局,第5步的格局是
a、
b、
c、
d、
12、有一文法g[t],语法制导翻译如下所示: t→ada {print “4”} d→(a) {print “5”} d→d {print “6”} a→dd {print “7”} 若输入字符序列为a(dd)a,且采用规范归约的分析方法,则输出序列为
a、4567
b、6754
c、4576
d、7654
13、一个句型的直接短语(简单短语)是唯一的。
14、正规表达式(a|b)*和(a*b*)*不等价
15、确定的有穷自动机只有唯一的终止状态
16、算符优先分析法是一种一种规范归约分析法
17、由正规文法构造状态转换图,其右线性文法识别符号对应是状态转换图的初始状态。
18、规范归约又称为最右归约。
19、如果在进行归约时,文法的某些规范句型的句柄不唯一,则称该文法是二义性文法。
20、文法g[s]: s::=acd ac::=b ac::=aac b::=b 是上下文有关文法。
21、由递归文法产生的语言集合一定是无限集合。
22、由文法的开始符经0步或多步推导产生文法符号序列是句子。
23、编译程序与具体的机器有关。
24、表达式(a b)/(a-b)-(b*c)的四元式序列为: ⑴.( ,a,b,t1) ⑵.(-,a,b,t2) ⑶.(/,t1,t2,t3) ⑷.(*,b,c,t4) ⑸.(-,t3,t4,t5)
猜你喜欢: