首页 > 代码库 > [龙书]理论练习题(一)

[龙书]理论练习题(一)

  若有不对之处,敬请指出。



  1、先分别用以下文法推导出id+id+id*id,并画出推导过程对应的分析树;最后比较三个文法生成的语言有什么不同。

  文法1:E→ E+T | T    TT*F | F     Fid

  文法2:ET+E | T    TF*T | F     Fid

  文法3:EE*T | T    TT+F | F     Fid






文法1:E→ E+T | T    TT*F | F     Fid

文法2:ET+E | T    TF*T | F     Fid

文法3:EE*T | T    TT+F | F     Fid

三个文法均包括两个运算+和*,但在结合性和优先级的处理上有所不同:

文法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  bbbcc


cc bbbcc


8.描述语言L={a^mb^n|nm 1}的文法为:


A、   Z→ABb      AaA|a        BbB|b

B、   ZABb      AAa|a        BaBb|b

C、   ZAb         AaAb|a

D、   ZaAb       AAb|aAb|ε


D





[龙书]理论练习题(一)