若有不对之处,敬请指出。
1、先分别用以下文法推导出id+id+id*id,并画出推导过程对应的分析树;最后比较三个文法生成的语言有什么不同。
文法1:E→ E+T | T T→
T*F | F F→
id文法2:E→
T+E | T T→
F*T | F F→
id文法3:E→
E*T | T T→
T+F | F F→
id文法1:E→ E+T | T T→
T*F | F F→
id文法2:E→ T+E | T T→
F*T | F F→
id文法3:E→
E*T | T T→
T+F | F F→
id三个文法均包括两个运算+和*,但在结合性和优先级的处理上有所不同:
文法1左结合,先*后+
文法2右结合,先*后+
文法3左结合,先+后*
2、指出下列错误可在编译的哪个阶段被发现
(1)关键字拼写错误 语法分析
(2)缺少运算对象 语法分析
(3)实参与形参的类型不一致 语义分析
(4)所引用的变量没有定义 语义分析
(5)数组下标越界 语义分析
(6)本应为常数,但却在数中出现了非数字字符
词法分析
3.编译器和解释器之间的区别是什么?
编译器将高级语言编写的源程序翻译成等价的,用低级语言编写的目标程序,解释器则是执行源程序,只是将源程序转换成一次执行的中间代码,并不生成目标程序。
4.编译器相对于解释器的优点是什么?解释器相对于编译器的优点是什么?
由于编译器生成的目标程序将多次执行,故编译过程中优化工作非常重要,产生的目标程序比解释执行更为高效。
由于解释器是逐句执行,故其错误诊断效果好于编译器。
5.下面关于解释程序的说法正确的是:
①.解释程序解决了编译程序不能解决的问题。
②.Basic语言编写的程序采用的执行方式是解释执行。
③.解释语言的特点是执行程序时不产生目标代码。
A.
①②
B. ②③
C.③①
D.③B. Basic 执行是解释型即解释便运行
6.描述一种语言的文法是:
A.唯一的 B.不唯一的 C.个数有限的 D.不能确定
B
7.下面哪些不是语法分析器的任务。
①分析单词是怎样构成的
②分析单词串是如何构成语句和说明的
③分析语句和说明是如何构成程序的
④分析程序的结构
7.给定文法G[A]:
A→bA|cc,则下面的符号串中,该文法的句子有:cc bcbc
bcbcc
bbbcccc bbbcc
8.描述语言L={a^mb^n|n≥m≥
1}的文法为:A、 Z→ABb
A→aA|a
B→bB|bB、 Z→ABb
A→Aa|a
B→aBb|bC、 Z→Ab
A→aAb|aD、 Z→aAb
A→Ab|aAb|εD
时间: 2024-10-06 00:28:03