- 已知文法G:({A, B, C},{a, b, c},P ,S), 其中:P为①S→Ac | aB ② A→ab ③B→bc , 推导abc时,发现该文法是二义的。
- 和翻译模式的语义计算相比,基于属性文法的语义计算更适合在语法分析时进行语义翻译。
- 正规式和有穷自动机是等价的,所以二者可以互相转换。( )
- LR文法中的R表示最右推导。
- 直接短语一定是句柄。
- 字母表Σ的正闭包Σ+一定包含空串ε。
- ε是所有字母表Σ上的一个正规式。
- 由于目标代码在编译时可以确定大小,所以放在静态存储区。
- 某属性文法中,为产生式A→A+a关联的语义计算可以是{ A.val := A.val +a} 。
- 作为脚本语言,Python语言编写的源程序,每次都要边解释边执行。
- LR(1)分析器是LR(0)分析器的优化,功能更强,执行效率更高。
- 已知文法G(S)如下:S→ aSb|aS对该文法正确描述的有( )
- 5类单词中的标识符是指变量。
- 符号串aab的前缀包括( )
- DFA和NFA的不同之处是( )
- 下列语言编写的程序能被机器直接执行的是( )。
- 下列错误属于静态语义错误的是( )
- 下述( )不是将词法分析作为单独一遍的好处
- 已知文法G(S)如下: S→ aAaB |bAbB A→ S |db B → bB |a若用递归下降法实现语法分析,需要编写( )段递归子程序。
- 编译程序检查、处理的源程序中的错误具体是指( )。
- 形如:x := y op z,此处的op是指二元算术运算符,不包括逻辑运算符。
- LR(1)的项目集,项目的后面要标注向前搜索符号。
- 任何一个不确定的有穷自动机NFA一定能找到和它等价的一个DFA。
- 符号串001的化简结果是1,所以001和1是相同的符号串。
- 只有LL(1)文法才能用确定的自顶向下语法分析。
- 已知文法G:({A, B, C},{a, b, c},P ,S), 其中:P为①S→Ac | aB ② A→ab ③B→bc , 可以生成两棵推导abc的语法树。
- 已知文法G(S)如下: S→ aAaB |bAbB A→ S |db B → bB |aSELECT(B→ bB)∩SELECT(B→ a)的结果是Ø。
- 目标代码生成时,无需考虑目标计算机的系统结构
- 文法描述的语言是符合该文法的一切句子的集合。
- 所有LR分析器的总控程序都一样,只是LR分析表不同。
- 空集是字母表上的正规式。
- 一个确定的有穷自动机有且只有一个终态。
- 已知文法G(S)的两个产生式如下:M → K | bLM K → dML |ε,First(M)集合中的元素有( )
- 逆波兰式只能表示表达式的中间代码形式。
- 经编译得到的目标程序中不可能出现( )。
- 编译器在编译的各个阶段都需要出错管理程序。
- 某属性文法中,为产生式A→Aa关联的语义计算可以是{ A.n := A1.n +1},下列描述正确的是( ) 。
- 在自顶向下语法分析中,要求文法满足( )
- 字母表Σ的元素有3个,Σ3的元素有( )个。
- 对于下面的程序:… procedure P(X,Y,Z); begin Y:=Y+1; Z:=Z+X; end P; begin A:=2; B:=3; P(A+B,A,A); print A end若参数传递的方法为传地址,程序执行时所输出的A是( )
- 已知文法:G(E): E→T | E+T T→F | T*F F→i 若用该文法最左推导i1+i2*i3,E⇒E+T之后推导应选用的产生式是( )。
- 所有编译程序都有目标代码生成阶段
- DAG图不仅可以表示中间代码,还可以进行代码优化。
- 已知文法G:({A, B, C},{a, b, c},P ,S), 其中:P为①S→Ac | aB ② A→ab ③B→bc , 推导abc时,可以选用的第一个产生式是S→aB。 ( )
- DAG是有向无环图,利用DAG可实现局部优化
- LL(1)文法的实现有两种方法,递归下降法和预测分析法。
- 符号表的内容是在词法分析时填入,并在以后各个阶段得到使用。
- 自底向上语法制导的语义分析时,栈包括3个,分别是状态栈、符号栈、语义栈。
- 赋值语句x := x+5 的四元式描述是(:= x 5 x)。
- 词法分析输出的终结符号串。
- 编译程序的前端部分是和目标机器无关的分析部分。
- 句柄一定是短语。
- 只有有综合属性的文法是S-属性文法。
- LR(0)的项目集中不会出现项目间的移进、归约的冲突。
- 目标代码生成时,为了提高效率,应考虑如何充分利用计算机的寄存器的问题
- 在DAG图中,每个节点对应一个运算符。
- 控制流分析的主要任务是分析程序中的控制流程,找出其中的循环结构部分。
- 正规文法和有穷自动机是等价的,所以二者可以互相转换。( )
- 语法分析的任务是将输入的单词序列转换成各种语法短语。
- 既有继承属性又有综合属性的文法是S-属性文法。
- 后缀式表示法可以不用括号,因为只要知道每个算符的目数,就能对它进行无歧义的分解计算。
- 目标代码生成中,变量的活跃信息是必须要考虑的,否则无法生成正确的目标代码
- 为了提高代码优化和移植,语义计算的结果是以中间代码的形式表示。
- 二义性文法会造成符号串推导的不确定性,可以通过有限次递归的方法证明一个文法是二义的。
- 三元式和四元式都属于三地址码。
- 一般来说,符号表中的信息可以视为两大栏:名字栏和信息栏
- 一个程序设计语言只能提供一种参数传递机制。
- 一个目标程序运行所需的存储空间包括( )。
- 下列选项是符号串abc前缀的是( )。
- 二义性文法可以通过递归证明的方式,在有限步骤内推导出来。( )
- 代码生成阶段要考虑的问题包括( )。
- 设有基本块如下:T1:=3T2:=A*BT3:=9+T1M:=A*BT4:=C-DL:=T3*T4T2:=C+DN:=T2假设L、M和N 是出基本块后的活跃变量,对于上述程序可以采取的局部优化措施有( )
- 字母表Σ={0,1},字母表Σ*是由0,1组成的符号串构成。
- 静态语义分析的任务最主要是检查程序结构(控制结构和数据结构)的一致性和完整性。
- 栈和堆都是动态存储的形式,具体到某种程序设计语言,运行前要规定二者所占动态存储区的大小。
- 控制流分析是的基本块的入口语句可以是( )。
- 词法分析器的输出包括单词的( )。
- LR分析程序最核心部分是( )。
- LL(1)文法中的第二个L表示( )
- 编译过程只有一“遍”的主要目的是( )。
- 已知文法G(S)如下: S→ aAaB |bAbB A→ S |db B → bB |aSELECT(A→ S)的结果是( )。
- 将产生式B → Bb |d消除左递归的方法是( )
- 将正规式a(a|b)*转换成相应的正规文法,正确的是( )。
- 对于一个无二义性文法,下列表述最准确的是( )。
- 词法分析器输出的5类单词不包括下列选项中的( )。
- LL(1)文法中的1表示( )。
- 已知文法:G(E): E→T | E+T T→F | T*F F→i 该文法的一个句子i1+i2*i3中,短语的数量是( )。
- 如果一个文法G是无二义性文法,则低于任一个句子x∈L(G),该句子( )
- 语法树的构成方法有( )种。
- 有关基本归纳变量的作用,错误的是
- 已知文法G(S)的部分产生式如下:M → K | bLM L → eHfK → dML |ε,Follow(M)集合是( )
- 已知文法:G(E): E→T | E+T T→F | T*F F→i 该文法的一个句子i1+i2*i3中,直接短语的数量是( )。
- 已知文法G(S)的部分产生式如下:M → K | bLM L → eHfK → dML |ε,Select(M → K)集合是( )
- 已知文法G(S)的部分产生式如下:M → K | bLM L → eHfK → dML |ε,Select(M → bLM)集合是( )
- 关于代码优化描述错误的是( )。
- 经编译得到的目标程序是
- 按照课件中的虚拟机及其指令系统,当只有一个寄存器R时,设中间代码(/ a 2 t1)为某个基本块的第一条代码,该中间代码对应的目标代码为
- 代码生成时,对于寄存器中最新的计算结果一定要马上送回主存单
- 寄存器地址模式的附加代价为( )
- ( )不可能是目标代码
- 假设H是基本块出口的活跃变量, R0和R1是可用寄存器,对下列四元式组成基本块:A:=B*CD:=E+FG:=A+DH:=G*2生成目标代码如下:LD R0, BMUL R0, CLD R1, EADD R1, FADD R0, R1MUL R0, 2( )其中括号里的代码为
- 关于程序流图的描述错误的是( )。
- 强度削弱是指把程序中执行时间较长的运算替换为执行时间较短的运算
- 对于基本快内Out集合由In集合计算出来,而对于基本块之间,In集合由前驱基本块的Out集合计算出来。这样的数据流问题属于
- 利用DAG进行局部优化,不能实现
- 关于循环的描述正确是( )。
- 属于基本块的优化措施是( )。
- 关于基本块的描述正确的是( )。
- 关于数据对象存储分配的描述正确的是( )。
- 对于在编译时不能确定程序运行时数据空间的大小、允许递归调用的程序设计语言,一般采取静态存储分配策略。
- 对于下面的嵌套过程语言的程序,按照最近嵌套原则进行作用域分析,下面说法正确的是( )program P var a,b: integer; procedure P1(i1,j1:integer); var c,d: integer; ... end; procedure P2(i2,j2:integer); var a,c: integer; procedure P21; var b1,b2:boolean; ... end; ... end; ...end;
- 关于过程/函数的活动记录描述错误的是( )。
- 以下关于数据存储的说法错误的是( )。
- 关于过程/程序块嵌套时,活动记录的相关描述正确的是( )。
- 对于下面的高级语言程序: … procedure P(X,Y,Z); begin Y:=Y+1; Z:=Z+X; end P; begin A:=2; B:=3; P(A+B,A,A); print A end若参数传递的方法为传值,程序执行时所输出的A是( )
- 存储组织中,为某些量动态分配存储空间的含义正确是( )。
- 编译的各个阶段都可能要用到符号表。
- 符号的作用域是通过其在符号表中是否可见体现的。
- 目标代码生成阶段,对符号名进行地址分配的依据是( )。
- 符号表可以是单表结构,也可以是多表结构,若采用多表结构,还需要维护一个作用域栈。
- 编译程序使用( )区别名字的作用域。
- 符号表中符号的常见属性,最关键的是符号名,要求不同符号的符号名尽可能不要相同。
- 对一般的程序设计而言,其编译程序的符号表应包含哪些内容及何时填入信息不能一概而论。
- 符号表可以用来帮助做名字的作用域分析。
- 符号表常用的操作不包括( )。
- 已知产生式 S→ if B then S1,其语义规则{B.true := newlable; B.false := S.next; S1.next:=S.next; S.code := B.code ‖gen(B.true':')‖S1.code},下列描述正确的有( )
- (a+b)/(c-d)对应的逆波兰式(后缀式)是( )。
- 算术表达式在语义分析时直接转换成三地址码指令,不需要回填。
- 表达式(a+b)/c-(a+b)*d对应的三元式形式,(a+b)的运算结果用( )表示。
- 无条件跳转语句goto L的四元式描述是(goto L - -),其中“-”表示此处不填。
- 终结符号的属性值来自词法分析的结果。
- 某属性文法,产生式E→T关联的语义计算包括{ E.val := T.val} ,据此判断.val属性应该在( )语法分析过程中进行语义计算。
- 某属性文法,产生式S→B关联的语义计算包括{ B.f := S.f} ,据此判断.f是( )属性。
- 某属性文法中,为产生式A→Aa关联的语义计算可以是{ A.n→A.n +1} 。
- 某属性文法,产生式B→Bb关联的语义计算是B→{B1.in_num :=B.in_num }B1b{ B.num := B1.num-1} ,在自顶向下语法分析时,对于应该先计算的属性描述正确的是( )。
- S-属性文法的语义技术是自底向上进行。
- 既有继承属性又有综合属性的文法是L-属性文法。
- 原来的文法G(S)的基础上,为其文法符号关联具有特定意义的属性,并为产生式关联语义计算或条件谓词,就构成属性文法。
- 语法制导的语义计算是指在语义分析的同时,顺便进行语法分析和检查。
- 基于属性文法的语义计算更适合在语法分析时实现语义计算。
- 若某项目集I={ B®c·B B®·cB B®·d },当小圆点跳过的符号是d时,对跳转后新的项目集的描述正确的是( )。
- 若某项目集I={ B®c·B B®·cB B®·d },当小圆点跳过的符号是B时,对跳转后新的项目集的描述正确的是( )。
- 若某项目集I={ B®c·B B®·cB B®·d },当小圆点跳过的符号是c时,对跳转后新的项目集的描述正确的是( )。
- 对LR分析描述正确的有( )
- 若项目集I1是{ S¢®E·},下列描述正确的是( )
- 若某项目集的核是E®a·A,则该项目集的全部项目是( )。
- 若项目集I1={ S¢®E·},其中项目的类型是( )。
- 由项目集I0输入不同符号能跳转到()个新的项目集。
- 若初态项目集I0的核是S¢®·E,则I0的全部项目是( )。
- 产生式S¢®E能构造( )个项目。
- 该文法是LL(1)文法。( )
- Select(E’→+E)∩Select(E’→ε)的结果是空集Ø。( )
- First(P)集合中的元素有( )个。
- 关于T’的两个产生式T’ → T |ε,选择T’ → T时,当前的输入符号可能是下列( )
- Follow(T’) 集合中的元素包括( )
- Follow(E’) 集合中的元素包括( )
- First(E)集合中的元素包括( )
- First(T)集合中的元素包括( )
- First(F’)集合中的元素包括( )。
- 该文法共有7个非终结符,其中能推出ε的符号有( )。
- 子集 {3,5} 能拆分成更小的子集。( )
- 子集 {1,2,4}能拆分成更小的子集。( )
- 若将其转换成DFA,则DFA的终态的数量是( )个。
- 第6空对应的状态集是( )
- 第5空对应的状态集是( )
- 第4空对应的状态集是( )
- 第3空对应的状态集是( )
- 第2空对应的状态集是( )
- 第1空对应的状态集是( )
- 第4空对应的状态集是( )
- 第3空对应的状态集是( )
- 第1空对应的状态集是( )
- 字母表的克林闭包(kleene)一定包含符号ε。
- 空串ε的长度为0.
- bc和cb是两个不同的符号串。
- 符号串abc的前缀有()个。
- Chomsky文法分类中,2型文法又称为( )。
- 短语、直接短语、句柄都是句型的成分。
- 已知文法:G(E): E→T | E+T T→F | T*F F→i 该文法的一个句子i1+i2*i3中,句柄是( )。
- 符号串x=ab,符号串y=abc,x和y的乘积(或称:连接)得到的符号串是( )。
- 语义分析是在语法分析之后进行。
- 编译过程分成若干“遍”的主要目的是( )。
- 编译程序中,语法分析器的输入是( )。
- 编译程序是一种( )。
- C语言编写的源程序,每次执行都要边解释边执行。
- ( )不是编译程序的组成部分。
- 编程程序生成的目标程序是机器语言编写的指令。
- 下述描述错误的是( )。
答案:对
答案:错
答案:对
答案:错
答案:错
答案:错
答案:对
答案:对
答案:错
答案:对
答案:错
温馨提示支付 ¥5.00 元后可查看付费内容,请先翻页预览!