编译原理试题及答案3

更新时间:2023-10-24 01:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编译原理复习题

一、填空题:

1、编译方式与解释方式的根本区别在于( 是否生成目标代码 )。

2、对编译程序而言,输入数据是( 源程序 ),输出结果是( 目标程序 )。

3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段 )和( 运行阶段 )。

4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:( 编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有( 回溯 )和( (左递归带来的)无限循环 )。 6、LL(k)分析法中,第一个L的含义是( 从左到右进行分析 ),第二个L的含义是( 每次进行最左推导 ),“k”的含义是(向输入串中查看K个输入符号 )。

7、LL(1)分析法中,第一个L的含义是(从左到右进行分析 ),第二个L的含义是(每次进行最左推导 ),“1”的含义是(向输入串中查看1个输入符号 )。

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立( 直接推导 ),试图构造一个推导序列,最终由它推导出与输入符号相同的( 符号串 )。

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的( 识别符号|开始符号 )。

10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是( 采用最右推导的逆过程---最左归约 ),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。 11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。 12、SLR(1)分析法的名字中,“S”的含义是(简单的 ),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

13、在编译过程中,常见的中间语言形式有(逆波兰表示 )、(三元式 )、(四元式)和(树形表示)。

14、在编译程序中安排中间代码生成的目的是(便于代码优化)和(便于目标程序的移植)。 15、表达式-a+b*(-c+d)的逆波兰表示为( a-bc-d+*+ )。 16、表达式a+b*(c+d/e)的逆波兰表示为(abcde/+*+ )。

17、表达式a:=a+b*c↑(d/e)/f的逆波兰表示为( aabcde/↑*f/+:= )。 18、文法符号的属性有( 继承属性 )和( 综合属性 )两种。

19、一个文法符号的继承属性是通过语法树中它的(兄弟结点与父 )结点的相应文法符号的属性来计算的。

20、一个文法符号的综合属性是通过语法树中它的(子 )结点的属性来计算的。

21、语法制导的编译程序能同时进行( 语法 )分析和( 语义 )分析。

22、编译过程中扫描器所完成的任务是从( 源程序 )中识别出一个个具有( 独立语法意义的单词 )。

23、确定的有穷自动机是一个( 五元组 ),通常表示为( DFA=(K,∑,M,S,Z))。 24、已知文法G(E): E->T|E+T|E-T T->F|T*F|T/F F->(E)|i

该文法的开始符号是( E ),终结符号集合VT是( { +,-,*./,(,),i } ),非终结符号集合VN是( { E,T,F } ),句型T+T*F+i的短语有( T+T*F+I ,T*F第一个T,i)。 25、已知文法G(E): E->T|E+T|E-T T->F|T*F|T/F F->(E)|i

改写该文法以消除直接左递归,改写后的文法为:E->(+TE‘|-TE‘|ε ),T->( FT‘ ),(T‘-> *FT‘|ε),F->( (E)| i )。 26、已知文法G(Z): Z->U0|V1 U->Z1|1 V->Z0|0

请写出全部由此文法描述的只含四个符号的句子:( 0101,1010,1001,0110 )。 该文法是Chomsky( 3 )型文法。

27、Chomsky定义的四种形式语言文法分别为:( 0型)文法--又称(短语文法 )文法,(1型)文法--又称(上下文有关)文法,(2型 )文法--又称(上下文无关 )文法,(3型)文法--又称(正则)文法。 28、文法G(S): S->AB A->aAb|ab B->Bc|ε

其描述的语言L(G[S])=( anbncm,n≥1,m≥0 )。 29、文法G(S): S->SAS|b|c A->aaA|a

其描述的语言L(G[S])=(b,C,或者是以b开头、以c结尾的、中间是任意个由b或c间

隔开的奇数个a组成的符号串)。

30、过程与过程引用中信息交换的方法是(全局变量的使用)和(参数传递 )。 31、形式参数和实在参数之间的对应关系通常按(它们在源程序中的位置)来确定。 32、按传结果的方式进行形实参数结合,是一种把(传地址 )和(传值)的特点相结合的参数传递方式。

33、在PASCAL中,由于允许用户动态申请与释放内存空间,所以必须采用( 堆 )存储分配方式。

34、编译程序进行数据流分析的目的是( 为了进行全局优化 )。

35、根据所涉及程序的范围,优化可分为( 局部优化 )、( 循环优化 )和( 全局优化 )三种。

36、局部优化是局限于一个( 基本块 )范围内的一种优化。

37、词法分析阶段的错误主要是( 拼写错误 ),可通过( 最小距离匹配 )的办法去纠正错误。

38、对错误的处理方法一般有( 校正法 )和( 局部优化法 )。

39、源程序中的错误一般有( 词法错误 )、( 语法错误 )、( 语义错误 )和( 违反环境限制的错误 )四种。

40、翻译程序是这样一种程序,它能够将( 用甲语言书写的程序 )转换成与其等价的( 用乙语言书写的程序 )。

41、编译程序的工作过程一般可以划分成( 词法分析、语法分析、语义分析、中间代码生成、代码优化 )等五个基本阶段。

42、编译程序的工作过程还会伴有( 表格处理 )和( 出错处理 )。

二、选择题:

1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部( A )错误和部分( B )错误。

A、语法 B、语义 C、语用 D、运行 2、程序语言的处理程序是一种( A )。

A、系统软件 B、应用软件 C、实时系统 D、分布式系统

3、( B )是两类程序语言处理程序,它们的主要区别在于是否生成目标代码。 A、高级语言和低级语言 B、解释程序和编译程序 C、编译程序和操作系统 D、系统程序和应用程序

4、汇编语言是将( A )翻译成( B );编译程序是将( C )翻译成( D )。 A、汇编语言程序 B、机器语言程序 C、高级语言程序 D、汇编或机器语言程序 e、汇编或高级语言程序 F、机器或高级语言程序

5、编译程序与具体的机器( A ),与具体的语言( B )。 A、有关 B、无关

6、编译程序生成的目标程序( B )是可执行的程序。 A、一定 B、不一定

7、编译程序生成的目标程序( B )是机器语言程序。 A、一定 B、不一定

8、把汇编语言程序翻译成机器可执行的目标程序的工作是由( B )完成的。 A、编译器 B、汇编器 C、解释器 D、预处理器 9、编译过程中,语法分析器的任务是( B )。

(1)分析单词是怎样构成的;(2)分析单词串是如何构成语句和说明的;(3)分析语句和说明是如何构成程序的;(4)分析程序的结构

A、(2)(3) B、(2)(3)(4) C、(1)(2)(3) D、(1)(2)(3)(4) 10、文法G所描述的语言是( D )的集合

A、文法G的字母表V中所有符号组成的符号串; B、文法G的字母表V的闭包V*中的所有符号串;

C、由文法的识别符号推出的所有符号串; D、由文法的识别符号推出的所有终结符符号串;

11、描述语言L={ambn|n>m>1}的文法为( D )。

A、Z->Abb, A->aA|a, B->bB|b B、Z->ABb, A->Aa|a,B->aBb|b C、Z->Ab, A->aAb|a D、Z->aAb, A->Ab|aAb|@ 12、一个句型中的最左( B )称为该句型的句柄。

A、短语 B、简单短语 C、素短语 D、终结符号 13、文法的二义性和语言的二义性是两个( A )的概念。 A、不同 B、相同 C、无法判断

14、上下文无关文法( A )产生语言L={ambnci|i>1,n>1} A、可以 B、不可以

15、( B )正规文法能产生下面的语言:L={ambn|n>1} A、存在一个 B、不存在任何 c、无法判断

16、编译程序中的语法分析器接受以( C )为单位的输入,并产生有关信息供以后各阶段使用。

A、表达式 B、产生式 C、单词 D、语句

17、高级语言编译程序常用的语法分析方法中,递归下降分析法属于( B )分析方法。 A、自左至右 B、自顶向下 C、自底向上 D、自右至左

18、算符优先分析法每次都是对( E )进行归约,简单优先分析法每次都是对

( C )进行归约。

A、最左短语 B、简单短语 C、句柄 D、素短语 E、最左素短语

19、文法G(S):S—>aTb|,,T->R,R—>R/S|S的句型aR/aSb/aTb,b的最左素短语为( B )。 A、aTb B、aSb C、S D、R/ E、,

20、LR语法分析栈中存放的状态是识别( B )的DFA状态。 A、前缀 B、可归前缀 C、项目 D、句柄

21、已知文法G[S]:s->LaR|R,L->bR|c,R->L 该文法是( B )。 (1)LR(0)文法;(2)SLR(1)文法;(3)LR(1)文法;(4)LALR(1)文法;(5)都不是 A、(1)(2) B、(3)(4) C、(1)(2)(3)(4) D、(5) E、(6)

22、若一个句型中出现了某一产生式的右部,则此右部( B )是该句型的句柄。 A、一定 B、不一定 23、LR(K)方法是( D )。

A、从左到右分析,每次走K步的一种编译方法 B、从左到右分析,共经过K步的一种编译方法 C、从左到右分析,每次向前预测K步的一种编译方法 D、从左到右分析,每次向貌似句柄的符号串后看K个输入符号的一种编译方法

24、文法G[S]:S->AA,A->Aa|a 不是LR(1)文法的理由是( D )

A、FIRST(S)NFIRST(A)≠ф B、FIRST(A)NFOLLLOW(A) ≠ф C、FIRST(Aa)NFIRST(a) ≠ф D、都不是

25、下列关于标识符和名字的叙述中,正确的是( C )。

A、标识符有一定的含义 B、名字是一个没有意义的字符序列 C、名字有确切的属性 D、都不对

26、编译程序在其工作过程中使用最多的数据结构是( C )。它记录着源程序中的各种信息,以便查询或修改。

A、线性表 B、链表 C、表 D、符号表

27、在编译程序在其工作过程中使用的各种表中,以( D )最重要,其生存期最长,使用也最频繁。

A、线性表 B、链表 C、表 D、符号表 28、编译程序使用( B )区别标识符的作用域。

A、说明标识符的过程或函数名 B、说明标识符的过程或函数的静态层次 C、说明标识符的过程或函数的动态层次 D、标识符的行号

29、动态存储分配时,可以采用的分配方法有( C )。

(1)以过程为单位的栈式动态存储分配;(2)堆存储分配;(3)最佳分配方法 A、(1) B、(2) C、(1)(2) D、(1)(2)(3) 30、过程调用时,参数的传递方法通常有( D )。

本文来源:https://www.bwwdw.com/article/ety2.html

Top