2-1
采用自顶向下分析,文法必须( )。 (3分)
- 消除左递归
- 消除右递归
- 消除回溯
- 提取公共左因子
2-2
编译过程中,语法分析器的任务是( )。 (3分) ①分析单词是怎样构成的 ②分析单词串是如何构成语句和说明的 ③分析语句和说明是如何构成程序的 ④分析程序的结构
- ②和③
- ④
- ②③④
- ①②③④
2-3
常用的语法分析方法分为( )和自底而上分析方法两大类。 (2分)
- 自顶向下语法分析
- 自左向右
- 递归分析
- 算符分析
2-4
语法分析程序的输出是( ) 。 (3分)
- 表达式
- 语法分析树
- 四元式
- 句子
2-5
语法分析程序的输入是 ( ) 。 (3分)
- 表达式
- 句型
- 程序
- 单词
2-6
高级语言编译程序常用的语法分析方法中,递归分析法属于( ) 分析方法? (3分)
- 自底而上
- 自左至右
- 自顶向下
- 自右至左
2-7
一个文法G,若( ) ,则称它是LL(1)文法. (3分)
- G中不含左递归
- G无二义性
- G中产生式不含左公因子
- G的LL(1)分析表不含多重定义
2-8
在自上而下的语法分析中,应从 ( )开始分析。 (3分)
- 句型
- 句子
- 文法开始符号
- 句柄
2-9
在递归子程序方法中,若文法存在左递归,则会使分析过程产生( )。 (3分)
- 回溯
- 非法调用
- 无限循环
- 有限次调用
2-10
LL(1)分析法中“1”的含义是( )。 (3分)
- 确定最左推导
- 确定句柄
- 在输入串中查看一个输入符号,可以确定用哪个产生式进行推导
- 确定是否推导
2-11
LL(1)分析法中第一个"L"的含义是( )。 (3分)
- 确定句柄
- 确定最左推导
- 从左向右扫描输入串
- 确定使用哪一个产生式进行展开
2-12
LL(1)分析法中第二个“L”的含义是 ( )。 (2分)
- 分析过程采用最左推导
- 确定句柄
- 确定使用哪一个产生式进行展开
- 确定是否推导
2-13
已知文法G[S]:
S→ SaA| bB
A → aB | c
B → Bb | d
存在直接左递归,消除左递归后的文法是( )。 (4分)
-
S→bB S’ S’→aA S’ A→aB|c B→dB’ B’→bB’
-
S→bB S’ S’→aA S’|ε A→aB|c B →bB | d
-
S→bB S’ S’→aA S’|ε A→aB|c B→dB’ B’→bB’|ε
-
S→aA S’ S’→ bB S’|ε A→aB|c B→bB’ B'→dB’|ε
2-14
已知文法G[S]:
S→ A| B
A → aA |a
B →bB |b
存在公共左因子,消除公共左因子后的文法是( )。 (4分)
-
S→ A| B A → aA |a B→ bB’ B ’ →B|ε
-
S→ A| B A → aA’ A’ →A|ε B →bB |b
-
S→ A| B A → aA’ A’ →A|ε B→ bB’ B ’ →B|ε
-
S→ A| B A → aA’ A’ →A B→ bB’ B ’ →B|ε
2-15
已知文法G[M]:
M→ MaH| H
H → b(M) |(M)|c