编译原理机测客观题(3)自顶向下语法分析练习题
第四章 自顶向下语法分析练习题
1、采用自上而下分析,必须__C___。
A.( ) 消除左递归 B .( ) 消除右递归
C.( ) 消除回溯 D.( ) 提取公共左因子
2. 编译过程中,语法分析器的任务是 .
①分析单词是怎样构成的
②分析单词串是如何构成语句和说明的
③分析语句和说明是如何构成程序的
④分析程序的结构
A ②和③ B ④ C ②③④ D ①②③④
3、常用的语法分析方法分为 和自底而上分析方法两大类。
A 自顶向下语法分析 B、自左向右 C、递归分析
4、语法分析程序的输出是 。
A 语法分析树 B 表达式 C 四元式 D 句子
5、语法分析程序的输入是 。
A 单词 B 表达式 C 句型 D 程序
6、高级语言编译程序常用的语法分析方法中,递归分析法属于 分析方法?
A 自顶向下 B 自底而上 C自左至右 D 自右至左
7、 一个文法G,若 ,则称它是LL(1)文法.
A. G中不含左递归.
B. G无二义性
C.G的LL(1)分析表不含多重定义
D.G中产生式不含左公因子
8、已知文法G[S]:S→ SaA| bB A → aB | c B → Bb | d 存在直接左递归,消除左递归后的文法是 。
A S→bB S’ S’→aA S’|ε A→aB|c B→dB’ B’→bB’|ε
B S→bB S’ S’→aA S’ A→aB|c B→dB’ B’→bB’
C S→bB S’ S’→aA S’|ε A→aB|c B →bB | d
D S→aA S’ S’→ bB S’|ε A→aB|c B→ bB’ B’→dB’|ε
9、已知文法G[S]:S→ A| B A → aA |a B →bB |b 存在公共左因子,消除公共左因子后的文法是 。
A S→ A| B A → aA’ A’ →A|ε B→ aB’ B ’ →B|ε
B S→ A| B A → aA |a B→ aB’ B ’ →B|ε
C S→ A| B A → aA’ A’ →A|ε B →bB |b
D S→ A| B A → aA’ A’ →A B→ aB’ B ’ →B|ε
10、已知文法G[M]:M→ MaH| H H → b(M) |(M)|c 存在直接左递归,消除左递归后的文法是 。
A M→HM’ M’ → aHM’|ε H → b(M) |(M)| c
B M→aHM’ M’ → HM’|ε H → b(M) |(M)| c
C M→HM’ M’ →M’ aH|ε H → b(M) |(M)| c
D M→HM’ M’ → aHM’ H → b(M) |(M)| c
11、已知文法G[S]: S→ aSb| P P →bPc|bQc Q →Qa|a ,文法消除左递归、提取左公因子后是 。
A S→ aSb| P P →bP’ P’ → Pc| Qc Q →aQ ’ Q’ →Aq’|ε
B S→ PS’ S’ →aSb P’|ε P →bPc|bQc Q →aQ ’ Q’ →Aq’|ε
C S→ aSb| P P’ → Pc| Qc Q →Qa|a
D S→ aSb| P P →bPc|bQc Q →aQ ’ Q’ →Aq’|ε
12、已知文法G[S]:S →(L) | aS’
S’→S |ε
L→SL’
L’→,SL’ |ε
则FIRST(S)和FIRST(L’)是 。
A FIRST(S)={(,a} FIRST(L’)={ , ,ε} B FIRST(S)={# ,(,a} FIRST(L’)={ , ,ε}
C FIRST(S)={ (,a} FIRST(L’)={ ),, ,ε} D FIRST(S)={# ,(,a} FIRST(L’)={ ), , ,ε}
13、已知文法G[S]:S →(L) | aS’
S’→S |ε
L→SL’
L’→,SL’ |ε
则FOLLOW(S)和FOLLOW(L’)是 。
A FOLLOW(S)={ ,, ), #} FOLLOW(L’)={ )} B FOLLOW(S)={ ,, ) } FOLLOW(L’)={ )}
C FOLLOW(S)={ ,, ), ε} FOLLOW(L’)={ )} D FOLLOW(S)={ ,, ), #} FOLLOW(L’)={ ),#}
14、 已知文法G[S]:S →(L) | aS’
S’→S |ε
L→SL’
L’→,SL’ |ε
则SELECT(S’ →S)和SELECT(S’→ ε)是 。
A SELECT(S’→S)={(,a} ,SELECT(S’→ ε)={,,),#}
B A SELECT(S’→S)={(,a} ,SELECT(S’→ε)= {,, ), #,ε}
C A SELECT(S’→S)={(,a} ,SELECT(S’→ ε)= { ), #}
D A SELECT(S’→S)={(,a} ,SELECT(S’→ ε)= {,, ) }
14、已知文法G[S]:S →(L) | aS’ S’→S |ε L→SL’ L’→,SL’ |ε ,且所有产生式的SELECT集合如下:
SELCET(S →(L))={(}
SELECT(S → aS’)={a}
SELECT S’→S)={(, a}
SELECT(S’→ ε)={ ,,),#}
SELECT(L→SL’)={(,a}
SELECT(L’→,SL’)={,}
SELECT(L’→ |ε)={}}
那么该文法的预测分析表有 S1,S2,S3标记的三种,请问 是正确的。
S1:
( | ) | a | , | # | |
S | S →(L) | S → aS’ | |||
S’ | S’→S | S’→ε | S’→S | S’→ε | S’→ε |
L | L→SL’ | L→SL’ | |||
L’ | L’→ε | L’→,SL’ |
S2:
( | ) | a | , | |
S | S →(L) | S → aS’ | ||
S’ | S’→S | S’→ε | S’→S | S’→ε |
L | L→SL’ | L→SL’ | ||
L’ | L’→ε | L’→,SL’ |
S3:
( | ) | a | , | # | |
S | S →(L) | S →(L) | |||
S’ | S’→S | S’→ε | S’→S | S’→ε | S’→ε |
L | L→SL’ | L→SL’ | L’→,SL’ | ||
L’ | L’→ε |
A S1 B S2 C S3 D 均不是