📜  编译器理论|套装2

📅  最后修改于: 2021-06-28 06:52:27             🧑  作者: Mango

GATE CS考试中提出了以下问题。

1.给出以下表达语法:
E-> E * F | F + E | F
F-> FF | ID
以下内容哪些是对的? (GATE CS 2000)
(a)*比+具有更高的优先级
(b)–优先级高于*
(c)+和-具有相同的优先级
(d)+比*具有更高的优先级

答案(b)

语法中的优先级通过确保具有较高优先级运算符产生式规则永远不会产生与运算符的表达与低优先级执行。
在给定的语法中,“-”比“ *”具有更高的优先级


2.考虑一个程序P,该程序P由包含在两个不同文件中的两个源模块M1和M2组成。如果M1包含对M2中定义的函数的引用,则该引用将在(GATE CS 2004)上解析。

a)编辑时间
b)编译时间
c)链接时间
d)加载时间

答案(c)
编译器将源代码转换为目标语言。目标语言通常采用二进制格式,称为目标代码。通常,目标文件可以包含三种符号:

*定义的符号,允许其他模块调用它,
*未定义的符号,它们调用定义了这些符号的其他模块,以及
*局部符号,在目标文件内部使用,以方便重定位。

当一个程序包含多个目标文件时,链接程序会将这些文件组合成一个统一的可执行程序,以解决这些符号。
http://en.wikipedia.org/wiki/编译器
http://en.wikipedia.org/wiki/Linker_%28computing%29


3.以下哪项足以将任意CFG转换为LL(1)语法? (GATE CS 2003)

(a)单独删除左递归
(b)仅考虑语法
(c)删除左递归并分解语法
(d)以上都不是

答案(d)
删除左递归并分解语法不足以将任意CFG转换为LL(1)语法。
http://pages.cpsc.ucalgary.ca/~robin/class/411/LL1.3.html

4.假设语法G的SLR解析器具有n1个状态,语法G的LALR解析器具有n2个状态。 n1和n2之间的关系是(GATE CS 2003)
(a)n1必须小于n2
(b)n1必须等于n2
(c)n1必须大于n2
(d)以上都不是

答案(b)

http://parasol.tamu.edu/people/rwerger/Courses/434/lec10.pdf
http://dragonbook.stanford.edu/lecture-notes/Stanford-CS143/11-LALR-Parsing.pdf

有关上一年的所有论文/解决方案/说明,课程提纲,重要日期,注释等,请参阅GATE Corner。