习题一、单项选择题
1、将编译程序分成若干个“遍”是为了 B 。 a.提高程序的执行效率 b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握 D 。 a.源程序
b.目标语言 d.以上三项都是
c.编译方法
3、变量应当 c 。 a.持有左值
b.持有右值
c.既持有左值又持有右值 d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在 d 上。 a.出错处理
b.词法分析 d.管理表格
c.目标代码生成
5、 d 不可能是目标代码。 a.汇编指令代码 c.绝对指令代码
b.可重定位指令代码 d.中间代码
6、使用 a 可以定义一个程序的意义。 a.语义规则 c.产生规则
b.词法规则 d.词法规则
7、词法分析器的输入是 b 。 a.单词符号串 c.语法单位
b.源程序 d.目标程序
8、中间代码生成时所遵循的是 c 。 a.语法规则 c.语义规则
b.词法规则 d.等价变换规则
9、编译程序是对 d 。 a.汇编程序的翻译 c.机器语言的执行
b.高级语言程序的解释执行 d.高级语言的翻译
10、语法分析应遵循 c 。 a.语义规则 c.构词规则 二、多项选择题
b.语法规则 d.等价变换规则
1、编译程序各阶段的工作都涉及到 b、c 。 a.语法分析 d.语义分析
b.表格管理 e.词法分析
c.出错处理
2、编译程序工作时,通常有 a、b、c、e 阶段。 a.词法分析 d.语义检查 三、填空题
b.语法分析 e.目标代码生成
c.中间代码生成
1、解释程序和编译程序的区别在于 是否生成目标程序 。
2、编译过程通常可分为5个阶段,分别是 词法分析 、语法分析、 中间代码生成 、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是 源程序 ,最后阶段的输出为 目标代码生成 程序。
4、编译程序是指将 源程序 程序翻译成 目标语言 程序的程序。 一、单项选择题
1、文法G:S→xSx|y所识别的语言是 C 。
a. xyx b. (xyx)*
c. xnyxn(n≥0)
d. x*yx*
2、文法G描述的语言L(G)是指 A 。
α , α∈VT*} a. L(G)={α|S+?
*α, α∈V*} b. L(G)={α|S?T
*α,α∈(V∪V*)} d. L(G)={α|S?+ α, α∈(V∪V*)} c. L(G)={α|S?TNTN
3、有限状态自动机能识别 C 。
a. 上下文无关文法 c.正规文法
b. 上下文有关文法 d. 短语文法
4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立 C 。
a. 若f(a)>g(b),则a>b c. a~b都不一定成立
b.若f(a) 5、如果文法G是无二义的,则它的任何句子α A 。 a. 最左推导和最右推导对应的语法树必定相同 b. 最左推导和最右推导对应的语法树可能不同 c. 最左推导和最右推导必定相同 d. 可能存在两个不同的最左推导,但它们对应的语法树相同 6、由文法的开始符经0步或多步推导产生的文法符号序列是 C 。 a. 短语 b.句柄 c. 句型 d. 句子 7、文法G:E→E+T|T T→T*P|P P→(E)|I 则句型P+T+i的句柄和最左素短语为 B 。 a.P+T和i b. P和P+T c. i和P+T+i d.P和T 8、设文法为:S→SA|A A→a|b 则对句子aba,下面 D 是规范推导。 a. S?SA?SAA?AAA?aAA?abA?aba b. S?SA?SAA?AAA?AAa?Aba?aba c. S?SA?SAA?SAa?Sba?Aba?aba d. S?SA?Sa?SAa?Sba?Aba?aba 9、文法G:S→b|∧(T) T→T,S|S 则FIRSTVT(T) C 。 a. {b,∧,(} b. {b,∧,)} c.{b,∧,(,,} d.{b,∧,),,} 10、产生正规语言的文法为 D 。 a. 0型 b. 1型 c. 2型 d. 3型 11、采用自上而下分析,必须 C 。 a. 消除左递归 b. 消除右递归 c. 消除回溯 d. 提取公共左因子 12、在规范归约中,用 B 来刻画可归约串。 a. 直接短语 b. 句柄 c. 最左素短语 d. 素短语 13、有文法G:E→E*T|T T→T+i|i 句子1+2*8+6按该文法G归约,其值为 B 。 a. 23 B. 42 c. 30 d. 17 14、规范归约指 B 。 a. 最左推导的逆过程 b. 最右推导的逆过程 c. 规范推导 d. 最左归约的逆过程 二、多项选择题 1、下面哪些说法是错误的 a、c 。 a. 有向图是一个状态转换图 c.有向图是一个DFA b. 状态转换图是一个有向图 d.DFA可以用状态转换图表示 2、对无二义性文法来说,一棵语法树往往代表了 a、c、e 。 a. 多种推导过程 d.仅一种推导过程 b. 多种最左推导过程 e.一种最左推导过程 c.一种最左推导过程 3、如果文法G存在一个句子,满足下列条件 b、c、d 之一时,则称该文法是二义文法。 a. 该句子的最左推导与最右推导相同 b. 该句子有两个不同的最左推导 c. 该句子有两棵不同的最右推导 d. 该句子有两棵不同的语法树 e.该句子的语法树只有一个 4、有一文法G:S→AB A→aAb|ε B→cBd|ε 它不产生下面 a、c 集合。 a. {anbmcndm|n,m≥0} c. {anbmcmdn|n,m≥0} e. {anbncndn|n≥0} 5、自下而上的语法分析中,应从 b、c 开始分析。 a. 句型 b. 句子 e. 句柄 c. 以单词为单位的程序 b. {anbncmdm|n,m>0} d. {anbncmdm|n,m≥0} d. 文法的开始符 6、对正规文法描述的语言,以下 a、b、c、d、e 有能力描述它。 a.0型文法 三、填空题 1、文法中的终结符和非终结符的交集是 空集 。词法分析器交给语法分析器的文法符号一定是 终结符 ,它一定只出现在产生式的 右 部。 2、最左推导是指每次都对句型中的 最左 非终结符进行扩展。 3、在语法分析中,最常见的两种方法一定是 自上而上 分析法,另一是 自下而上 分析法。 4、采用 自上而上 语法分析时,必须消除文法的左递归。 5、 语法 树代表推导过程, 分析 树代表归约过程。 6、自下而上分析法采用 移进 、归约、错误处理、 接受 等四种操作。 b.1型文法 c.上下文无关文法 d.右线性文法 e.左线性文法