43.编译程序必须完成的工作有A. (1) 词法分析 (2) 语法分析 (3) 语义分析 (4) 代码生成 (5) 中间代码生成 (6) 代码优化 A. (1)(2)(3)(4) B. (1)(2)(3)(4)(5) C. (1)(2)(3)(4)(5)(6) D. (1)(2)(3)(4)(6) 44.按逻辑上划分,编译程序第二步工作是C。
A. 语义分析 B. 词法分析 C. 语法分析 D. 代码优化 45.已知语言L={ xnyyn | n>=1},则下述文法中,D可以产生语言L。
A 1.Z→xZy|xAy|y B 1.A→xAy 2. A→xAy|x 2.A→x C 1.Z→AyB D 1.Z→xAy 2.A→xA|x 2.A→xAy|y 3.B→yB|y
46.乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。其中3型文
法是B。
A.短语文法 B.正则文法 C.上下文有关文法 D.上下文无关文法 48.设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈V*),则称x是文法G的一个B。
A. 候选式 B.句型 C. 单词 D. 产生式 49.若一个文法是递归的,则它所产生的语言的句子A。
A.是无穷多个 B.是有穷多个 C.是可枚举的 D.个数是常量 50.文法的二义性和语言的二义性是两个A的概念。
A 不同 B 相同 C 无法判断 D 不存在
51.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是B。
A. 非终结符集 B.终结符集 C. 字母表 D. 状态集 52.编译程序中语法分析器接收以A为单位的输入。
A. 单词 B. 表达式 C. 产生式 D. 句子
53.在LR分析法中,分析栈中存放的状态是识别规范句型C的DFA状态。
A.句柄 B. 前缀 C. 活前缀 D. LR(0)项目
三、判断题
1.计算机高级语言翻译成低级语言只有解释一种方式。(×) 2.在编译中进行语法检查的目的是为了发现程序中所有错误。(×) 3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。(×) 4.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”说法。(×) 5.正则文法其产生式为A?a,A?Bb, A,B∈VN,a、b∈VT。(√) 6.产生式是用于定义词法成分的一种书写规则。 (×) 7.解释程序适用于 COBOL 和 FORTRAN 语言。 (×) 8.正规文法产生的语言都可以用上下文无关文法来描述。(√)
9.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。 (√) 10.编译程序是对高级语言程序的解释执行。 (×) 11.一个有限状态自动机中,有且仅有一个唯一的终态。 (×) 12.语法分析时必须先消除文法中的左递归。 (×)
13.两个正规集相等的必要条件是他们对应的正规式等价。 (√) 14.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。(×)
15.确定的自动机以及不确定的自动机都能正确地识别正规集。 (√) 16.词法分析作为单独的一遍来处理较好。 (×) 17.构造LR分析器的任务就是产生LR分析表。 (√) 18.编译程序与具体的机器有关,与具体的语言无关。 (×) 19.每个文法都能改写为LL(1)文法。(×)
20.递归下降法允许任一非终结符是直接左递归的。(×)
21.递归下降分析法是自顶向下分析方法。 (√) 22.一个 LL(l)文法一定是无二义的。 (√)
23.算符优先关系表不一定存在对应的优先函数。(√) 24.自底而上语法分析方法的主要问题是候选式的选择。(×) 25.LR分析方法是自顶向下语法分析方法。(×) 26.简单优先文法允许任意两个产生式具有相同右部。(×)
27.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。(×) 28.一个句型的句柄一定是文法某产生式的右部。(√)
29.在 SLR(1)分析法的名称中,S的含义是简单的。 (√) 30.综合属性是用于 “ 自上而下 ” 传递信息。 (×) 31.一个算符优先文法可能不存在算符优先函数与之对应。 (√)
32.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 (√) 33.规范归约和规范推导是互逆的两个过程。 (√) 34.LR分析技术无法适用二义文法。 (×) 35.逆波兰表示法表示表达式时无须使用括号。 (√) 36.逆波兰法表示的表达式亦称后缀式。 (√) 38.在程序中标识符的出现仅为使用性的。(×) 39. 设∑为{a,b},则a,ba,{∑},Φ都是∑上的正规式。(×)
40. 对于上下文无关文法G[S],若 S?αAB ?αβγ则A →γ一定是一条产生式规则,
其中α,β,γ∈(VT∨VN) 。
*
(×)
41. 对于逆波兰后缀式,无论从哪头开始分析均可得到唯一正确的分解。(√) 42. LR(0)分析法是一种规范归约法。
(√)
43. 算符优先分析法只能用来分析算符优先文法。 () 44. 解释程序和编译程序一样,生成目标代码。 (×) 45. 编译程序生成的目标代码只能是机器语言。 (×) 46. 等价文法是指两个文法完全相同。 (×)
47. 对于字母表Σ上的任一NFA M',必存在Σ上与NFA M' 等价的DFA M。(√) 48. 不存在正规文法能产生语言:L={ab|n>=1}(×)
nn
四、简答题
1、什么是句子?什么是语言?
句子:设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈VT*),则称x是文法的一个句子。
语言:句子的集合。设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: 2、已知文法G[E]为:
E→T|E+T|E-T T→F|T*F|T/F F→(E)|i
①该文法的开始符号(识别符号)是什么?E
②请给出该文法的终结符号集合VT和非终结符号集合VN。 答:VN={E,T,F}VT={i,+,-,*,(,),,}
③找出句型T+T*F+i的所有短语、简单短语和句柄。 答:短语T,T*F,i,T+T*F+i 简单短语:T,T*F 句柄:T
3、已知文法G[S]为:
S→dAB A→aA|a B→Bb|ε
① G[S]产生的语言是什么? 答:L(G[S])={danbn|n≥1,m≥0}
② G[S]能否改写为等价的正规文法?
,,
答:能, G[S] S→dAB A→aA|aB|a B→bB|b
5、证明下面文法G[N]是二义性文法。
G[N]: N →SE∣E S →SD∣D E →0∣2∣10
D →0∣1∣2
证明:左推导1:N=>SE=>DE=>D0=>10
左推导2:N=>E=>10
7、简述DFA与NFA有何区别 ? 答:DFA与NFA的区别:
?NFA可以有若干个开始状态,而DFA仅只有一个开始状态;
?DFA的映象M是从K×∑到K,而NFA的映象M是从K×∑到K的子集,即映象M将产生一个状态集合(可能为空集),而不是单个状态。 8、试给出非确定自动机的定义。
答:一个NFA(M)是一个五元组:M=(K,∑,f,S,Z)。 (K是一个有穷集,它的每个元素称为一个状态;
(∑是一个有穷字母表,它的每个元素成为一个输入符号,所以也称∑为输入符号表;
(f是状态转换函数,是在K×∑*→K的子集的映射,即f:K×∑*→ZK;表明在某状态下对于某输入符号可能有多个后继状态; ④SCK是一个非空初态集; ⑤ZCK是一个终态集(可空)。
9、为正规式(a|b)*a(a|b) 构造一个等价的确定的有限自动机。
10、构造正规式相应的 NFA : 1(0|1)*101
13、编译过程一般分为几个阶段?各阶段的输入输出分别为什么?
15、在LL(1)分析法中,LL分别代表什么含义?
答:第一个L表明自顶向下分析是从左向右扫描输入串,第二个L表明分析过程中将用最左推导。 16、文法G为: S→aAB A→a B→ α|β|γ
则判断G为LL(1)文法的条件是: 答:Sclect(S→aAB)={a} Sclect(A→a)={a}
Sclect(B→α|β/y)={α,β,y}=? 17、文法G=({A, B, S}, {a, b, c}, P, S) 其中P为: S→Ac|aB A→ab B→bc
该文法是二义的吗?说明理由。