编译原理试题集78677 下载本文

⑵请构造该文法的 LR(0) 分析表。

⑶什么是 LR(0) 文法?该文法是 LR(0) 文法吗?为什么? ⑷什么是 SLR(1) 文法?该文法是 SLR(1) 文法吗?为什么?

12. 下面文法属于哪类LR文法?试构造其分析表。 S→aSAB | BA A→aA | B B→ b 输入串abababb是文法的句子吗?给出分析过程。

13. 文法 S→(L) | a L→L, S | S (1) 计算该文法的Firstvt和Lastvt; (2) 构造算符优先关系表,并说明该文法是否是OPG文法; (3) 计算优先函数; (4) 给出串(a, (a, a))的算符优先分析过程。

14. 设已给文法G1[S]: S→Aa|bAc|dc|bda A→d 构造其LALR(1)文法,并分析输入串bdc是否文法的句子;

15. 下面是一个描述∑={a b}上的正规式的LALR文法(实际上也是SLR文法),只不过用‘+ ’代替‘|’,用∧代替?(空字)。 E→E+T | T T→TF | F F→F* | (E) | a | b | ∧ 构造这个文法的LALR项目集和分析表。

解答: 1. 2. 3. 4. 5. 6. 7. 8. 9.

10. 11. 12. 13. 14. 15.

第六章 属性文法和语法制导翻译

一.填空题

1. ________属性用于“自下而上”传递信息;而________属性用于“自上而下”传递信息 。

2. 如果一属性文法不存在属性之间的________,那么称该文法为良定义的。

3. 按照________________的编译程序模型来理解语法制导翻译方法,所谓的语法制导翻译 ,直观上说,就是为文法中每个_____________配上一组语义规则,并在________________的

同时执行这些语义规则。

4. 下面语义规则: T→T1*F T.val:=T1 .val*F.val ,改写成翻译模式为:_________________________。

5. S-属性文法中的每个文法符号,只含有________属性。

6. 与树遍历的属性计算方法不同,一遍扫描的处理方法是在语法分析的同时计算属性值, 而不是语法 分析构造语法树之后进行属性计算。 ________________可用于一遍扫描的自上 而下分析,而________________则适合于一遍扫描的自下而上分析。

7. 已知表达式文法的一条语法规则E→E1+T,对每个文法符号引入nptr属性, 可以写出为该文法建立抽象语法树的、对应于这条规则的语义规则为:___________________ ______________。

8. 在S-属性文法的基础上,LR分析器可以改造为一个翻译器,在对输入串进行语法分析的 同时___________________________。

9. 通过在基础文法中新引入非终结符M,加入形式为____________的新的产生式,可以使嵌

入的语义动作出现在产生式的末尾。

10. 属性计算规则中只能使用相应产生式中的文法符号的属性,这有助于在产生式范围内“ 封装”属性的依赖性。然而,出现在产生式左边的______________ 和出现在产生式右边的__

_________________不由所给的产生式的属性计算规则进行计算,它们由其他产生式的属性 规则计算或者由属性计算器的参数提供。

11. 语义规则可能产生副作用(如产生代码),也可能不是变元的严格函数(入某个规则给 出可用的下一个数据单元的地址)。这样的语义规则通常写成___________________________ ___。

12. 我们可以用一个_________________________来跟踪一个标识符,看它是出现在赋值号的

左边还是右边,以确定是需要这个标识符的地址还是值。

13. 在自下而上语法分析中,若一个产生式匹配输入串成功,或者,在自下而上分析中,当 一个产生式被用于进行归约时,__________________________________________________, 完成相关的语义分析和代码产生工作。

14. S-属性文法自下而上计算属性时,在分析栈中使用一个附加的域val来存放综合属性值。 文法符号是隐含在state中而不是存储在栈中。当把文法符号放入栈中时,那么当第i个state 对应符号为A时,val[i]中就存放____________________________________________________ _。

15. 对于一个属性文法,?A→X1X2…Xn∈P, 其每个语

义规则中的每个属性都是一个综合属性;或者,Xj(1≤j ≤ n)是一个继承属性, 这个继承属性仅依赖于: ①__________________________________________________________ ②__________________________________________________________ 则,该属性文法是L-属性文法。

解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

13. 14. 15.

二.判断题

1. 非终结符只有综合属性,由词法分析器提供。( )

2. S—属性文法一定是L—属性文法。( )

3. 只含有综合属性的属性文法是S-属性文法。( )

4. 只含有继承属性的属性文法称为-L属性文法。( )

5. 语法制导翻译可以基于语法分析树,也可以基于抽象语法树,两种情况所采用的基本方 法是一样的。( )

6. 翻译模式既适于自顶向下分析,又适于自底向上分析。( )

7. 用于自顶向下分析的翻译模式,其基础文法中不能含有左递归。( )

8. 在基础文法中增加标记非终结符不会导致新的语法分析冲突。( )

9. 对L-属性文法,不用显式构造语法树就可以实现翻译。( )

10. 在翻译模式中,和文法符号相关的属性和语义规则(语义动作),用花括号括起来,插 入到产生式右部或左部的合适位置上。( )

11. 语法制导定义中文法符号的一个属性,既可以是综合属性,同时又可以是继承属性。( )

12. 在抽象语法树中,操作符和关键字都不作为叶子结点出现,而是把它们作为内部结点。 ( )

13. 一般来说,语法制导翻译是基于语法分析树的,基于抽象语法树无法进行语法制导翻译 。( )

14. 在必要的时候引进标记非终结符,可以实现LR分析过程中对L-属性文法进行计算。虽然

任何LL(1)文法也是LR(1)文法,但是,当标记非终结符加入到LL(1)文法时可能会引起分析冲 突。( )

15. 尽管把和文法符号相关的属性和语义动作用花括号括起来插入到了产生式右部的合适位

置上,翻译模式还是不能给出使用语义规则进行计算的顺序。( )