信阳师范编译原理
[填空题,10分] 语法分析基于()文法进行,即识别的是该类文法的句子。语法分析的有效 工具是()
答案是:上下文无关|语法树
[填空题,10分] 词法分析基于()文法进行,即识别的单词是该类文法的句子
答案是:正则
[填空题,10分] 局部优化是在()范围内进行的一种优化
答案是:基本块
局部优化
答案是:是指对代码的每一个线性部分所进行的优化,使得在这个线性部分只存在一个入 口和一个出口,而这个线性部分我们称之为基本块。
接受项目
答案是:形如 ,其中 为文法的开始符号,即文法开始符号的规约项目。 为左部 的规则仅有一个,它是规约项目的特殊情况,它表示整个句子已经分析完毕,可以接受
待约项目
答案是:即圆点后面为非终结符的项目,它表 示期待从剩余的输入串中进行规约而得到B,然后才能继续分析A的又部。
规约项目
答案是:形如A->a.,其中 ,即圆点在最右端的项目,它表示一个规则的右部已 分析完,句柄已形成,应该按此规则进行规约。
[简答题,10分] 何谓编译程序
答案是:编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编写的目标程序的翻译程序。
[简答题,10分] 何谓翻译程序
答案是:翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程序和汇编程序等。
[简答题,10分] 进行优化所需要的基础是什么?
答案是:优化所需要的基础是在中间代码生成之后或目标代码生成之后
[填空题,10分] 后缀式 abc-|所代表的表达式是()
答案是:a(b-c)
[填空题,9分] 一个 LR 分析器包括两部分:一个总控程序和()
答案是:一张分析表
[填空题,9分] 自上而下分析法采用()、归约、错误处理、()等四种操作
答案是:移进|接受
移进项目
答案是:形如 ,其中 , ,即圆点后面为终结符的项目,它表示 期待从输入串中移进一个符号,以待形成句柄。
冲突项目
答案是:“移进——规约”“规约——规约”冲突
LR[0]项目集规范族
答案是:构成识别一个文法活前缀的DFA的状态(项目集)的全体
规范句型活前缀
答案是:1)字符串的前缀是指字符串的任意首部。如,字符串abc的前缀有空串、 a、ab、abc。(2)规范句型活前缀是指规范句型的前缀,这种前缀不包含句柄右边的任何符号
[简答题,9分] 编译过程中可进行的优化如何分类?
答案是:依据优化所涉及的程序范围,可以分为:局部优化|循环优化|全局优化
[简答题,9分] 编译程序大致有哪几种开发技术?
答案是:自编译|交叉编译|自展|移植
[简答题,9分] 语法分析的主要任务是什么?
答案是:任务是在词法分析的基础上将单词序列组合成各类语法短语
[简答题,9分] 计算机执行用高级语言编写的程序有哪些途径?
答案是:计算机执行用高级语言编写的程序主要途径有两种,即解释与编译
[填空题,11.2分] 扫描器是(),它接受输入的(),对源程序进行()并识别出一个个 (),其输出结果是单词符号,供语法分析器使用
答案是:词法分析器|源程序|词法分析|单词符号
[填空题,11.1分] 计算机执行用高级语言编写的程序主要有两种途径:()和()
答案是:解释|编译
[填空题,11.1分] 语法分析最常用的两类方法是()和()分析法
答案是:自上而下|自下而上
静态语义检查
答案是:1) 类型检查,如参与运算的操作数其类型应相容。(2) 控制流检查,用以 保证控制语句有合法的转向点。(3) 一致性检查,如在相同作用域中标识符只能说明一次、case语句的标号不能相同等。
代码优化
答案是:提高代码质量的技术常称为代码优化
循环优化
答案是:对循环中的代码可以实行代码外提、强度削弱和删除归纳变量等优化
正规集
答案是:正规语言(正规文法描述的语言)的集合
[简答题,11.1分] 文法 S->a|^|(T) T->T,S|S 对 (a,(a,a) 的最左推导
答案是:对(a,(a,a)的最左推导为: S=>(T) =>(T,S) =>(S,S) =>(a,S) =>(a,(T)) =>(a,(T,S)) =>(a,(S,S)) =>(a,(a,S)) =>(a,(a,a))
[简答题,11.1分] 文法 G[S] 为: S->Ac|aB A->ab B->bc 写出 L(G[S]) 的全部元素
答案是:S=>Ac=>abc 或S=>aB=>abc 所以L(G[S])={abc}
[填空题,2.5分] 若源程序是用高级语言编写的,()是机器语言程序或汇编程序, 则其翻译程序称为()
答案是:目标程序|编译程序
[填空题,2.5分] 计算机执行用高级语言编写的程序主要有两种途径:()和()
答案是:解释|编译
[填空题,2.5分] 语法分析是依据语言的()规则进行的,中间代码产生是依据语言的()规 进行的
答案是:语法|语义
[填空题,2.5分] 语义分析阶段所生成的与源程序等价的中间表示形式可以有(),(),()等
答案是:逆波兰|三元式表示|四元式表示
[填空题,2.5分] 自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地 向上进行() ,力求归约到文法的()
答案是:直接归约|开始符号
[填空题,2.5分] 自上而下分析法采用()、归约、错误处理、()等四种操作
答案是:_移进|接受
[填空题,2.5分] 常用的参数传递方式有(),传值和传名
答案是:传地址
[填空题,2.5分] 递归下降法不允许任一非终极符是直接()递归的
答案是:左
[填空题,2.5分] 分析句型时,应用算符优先分析技术时,每步被直接归约的是(),而应用 LR 分析技术时,每步被直接归约的是()
答案是:最左素短语|句柄
[填空题,2.5分] 设G是一个给定的文法,S是文法的开始符号,如果S->x( 其中 x∈VT*), 则称 x是文 法的一个()
答案是:句子
[填空题,2.5分] 产生式是用于定义()的一种书写规则
答案是:语法成分
[填空题,2.5分] 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两 种:()和()
答案是:静态存储分配方案|动态存储分配方案
[填空题,2.5分] 按 Chomsky 分类法,文法按照()进行分类
答案是:规则定义的形式
[填空题,2.5分] 规范规约是最()规约
答案是:3
[填空题,2.5分] 一个名字的属性包括()和()
答案是:类型|作用域
[填空题,2.5分] 一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有()定义的规则
答案是:递归
[填空题,2.5分] 编译方式与解释方式的根本区别在于()
答案是:是否生成目标代码
[填空题,2.5分] 局部优化是在()范围内进行的一种优化
答案是:基本块
[填空题,2.5分] 编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码 生成,代码优化等几个基本阶段,同时还会伴有()和()
答案是:表格处理|出错处理
[计算题,2.5分] 考虑下面程序 Var a:integer; Procedure S(X); Var X:integer; Begin a:=a+1; X:=a+X End; Begin a:=5; S(a); Print(a) End
答案是:传名:a=12|传值:a=6
[计算题,2.5分] 设有文法G1 G1:S→SaQ ∣ Q Q→QbR ∣ R R→cSd ∣ e 证明句型 QbRae 是规范句型
答案是:证明句型
[计算题,2.5分] 把语句 if x>0∧y>0 then z:=x+y else begin x:=x+2; y:=y+3 END; 翻译成四元式序列
答案是:四元式
[计算题,2.5分] 已给文法 G[S] : S → SaP | Sf | P P → qbP | q 将 G[S] 改造成 LL ( 1 )文法,并给出 LL ( 1 )分析表
答案是:LL ( 1 )文法|分析表
[计算题,2.5分] 设有基本块 T1:=2 T2:=10|T T3:=S-R T4:=S+R A:=T2 * T4 B:A T5:=S+R T6:=T3 * T5 B:=T6假设基本块出口时只有A,B还被引用,请写出优化后的四元序列
答案是:四元式
[计算题,2.5分] 将下面的条件语句表示成逆波兰式和四元式序列: if a>b then x:=a+b*c else x:=b-a
答案是:逆波兰式|四元式序列
[计算题,2.5分] 设有基本块 T1:=2 T2:=10|T1 T3:=S-R T4:=S+R A:=T2 * T4 B:=A T5:=S+R T6:=T3 * T5 B:=T6假设基本块出口时只有A,B还被引用,请写出优化后的四元序列
答案是:四元序列
[计算题,2.5分] 化简文法 G[S] : S → ASe | BCaD | aD | AC A → Cb | DBS C → bC | d B → Ac D → aD
答案是:化简过程
[计算题,2.5分] 已知文法G(E) E→T|E+T T→F|T * F F→(E)|I 给出句型(T * F+i)的短语、素短语
答案是:短语|素短语
[计算题,2.5分] 设 L í {a,b,c}* 是满足下述条件的符号串构成的语言: (1)若出现 a ,则其后至少紧跟两个 c ; (2)若出现 b ,其后至少紧跟一个 c 。 试构造识别 L 的最小化的 DFA ,并给出描述 L 的正
答案是:表达式
[计算题,2.5分] 设布尔表达式的文法为 E → E(1)∨E(2) E → E(1)∧ E(2) E → i 假定它们将用于条件控制语句中,请 改写文法,使之适合进行语法制导翻译和实现回填
答案是:语法制导翻译|实现回填
[计算题,2.5分] 设某语言的for语句的形式为 for i:=E(1) TO E(2) do S 其语义解释为 i:=E(1); LIMIT:=E(2); again:if i<=LIMIT then BEGIN S; i:=i+1;
答案是:产生式
[计算题,2.5分] 试为表达式w+(a+b)*(c+d|(e-10)+8)写出相应的逆波兰表示
答案是:wab+cde10-|+8*+
[计算题,2.5分] 构造正规式1(0 |1)*101的DFA
答案是:DFA
[计算题,2.5分] While a>0 ∨ b<0 do Begin X:=X+1; if a>0 then a:=a-1 else b:=b+1 End; 翻译成四元式序列
答案是:控制结构|其它
[计算题,2.5分] 把下面的语句翻译成四元式序列。 (只给出最后结果,设LABEL当前值为100) while A
答案是:四元式序列
[计算题,2.5分] 对以下基本块 T1:=2 T2:=A-B T3:=A+B T4:=T2*T3 T5:=3*T1 T6:=A-B L:=A+B T7:=T6*L T8:=T5*4 M:=T8+T7 L:=M 假设只有L在基本块出口之后还
答案是:四元式
[计算题,2.5分] 已知文法G(S): S→a|∧|(T) T→T,S|S 给出句型((T,S),a)的短语、直接短语、句柄
答案是:短语|直接短语|句柄
[计算题,2.5分] 给定文法 G[S] : S → Aa|dAb|Bb|dBa A → c B → c 构造文法 G[S] 的 LR ( 1 )分析表
答案是:分析表
[计算题,2.5分] 设文法G(S): S→(L)|a S|a L→L,S|S 计算每个非终结符的FIRST和FOLLOW;
答案是:FIRST|FOLLOW
[填空题,10分] 逆波兰式 ab+c+ d*e- 所表达的表达式为()
答案是:(a+b+c)*d-e
[填空题,10分] 语法分析器的输入是(),其输出是()
答案是:单词符号串|语法单位
简单子树
答案是:只有上下两代的子树
子树
答案是:语法树中任一结点连同所用分支组成的部分
语法树
答案是:推导的图形表示
句柄
答案是:一个句型的最左直接短语
[简答题,10分] 试为表达式 w+(a+b)*(c+d|(e-10)+8) 写出相应的逆波兰表示
答案是:w a b + c d e 10 - | + 8 + * +
[简答题,10分] 考虑文法 G[S]: S → (T) | a+S | a T → T,S | S 消除文法的左递归
答案是:消除文法G[S]的左递归: S→(T) | a+S | a T→ST′ T′→,ST′| ε
[简答题,10分] 简要说明语义分析的基本功能
答案是:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检 查
[填空题,10分] 语法分析是依据语言的()规则进行的,中间代码产生是依据语言的()规 进行的
答案是:语法|语义
[填空题,10分] 从功能上说,程序语言的语句大体可分为()语句和()语句两大类
答案是:执行性|说明性
广义推导
答案是:经0步到多步推导出结果
直接推导
答案是:在推导过程中只使用了一个产生式
文法
答案是:是规则的非空有穷集合
句子
答案是:均对应与字母表中的符号串
[简答题,10分] 设文法 G ( S ): S→S + aF|aF| + aF F→*aF|*a (1)消除左递归和回溯; (2)构造相应的 FIRST 和 Follow 集合
答案是:1) S->aFS'|+aFS' S'->+aFS'|ε F->*aF' F'->F|ε (2) FIRST(S)={a,+} FOLLOW(S)={#} FIRST(S')={+,ε } FOLLOW(S')={#} FIRST(F)={*} FOLLoW(F)=(+,#} FIRST(F')={*,ε} FOLLOW(+,#}
[简答题,10分] 写一个文法使其语言为偶数集,且每个偶数不以0开头
答案是:文法G(S): S→AB|B|A0 A→AD|C B→2|4|6|8 C→1|3|5|7|9|B D→0|C
[简答题,10分] 写出表达式(a+b)|(a-b-(a+b*c)的四元序列
答案是:四元式: ①(+,a,b,T1) ②(-,a,b,T2) ③(|,T1,T2,T3) ④(*,b,c,T4) ⑤(+,a,T4,T5) ⑥(-,T3,T5,T6)
[填空题,10分] 一个典型的编译程序中,不仅包括(),(),(), 代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理
答案是:词法分析|语法分析|中间代码生成
[填空题,10分] 对于文法的每个产生式都配备了一组属性的计算规则,称为()
答案是:语义规则
[填空题,10分] 一个句型中的最左简单短语称为该句型的()
答案是:句柄
形式语言
答案是:字母表上所有的字符按照某种规则所组成的集合
后缀
答案是:指从开头删除
前缀
答案是:指从末尾删除0个或多个符号后得到的符号串
符号串
答案是:符号的有穷序列
[简答题,10分] 102: t3:=5+t2 (2)100: j:=1 101: if j>10 goto NEXT 102: i:=j+j 103: a[i]:=0 2. 设基本块p由如下语句构成: T 0 : =3.14; T 1 :
答案是:三元式: ①(+,a,b) ②(-,a,b) ③(|,①,②) ④(*,b,c) ⑤(+,a,④) ⑥(-,③,⑤)
[简答题,10分] 写出下列表达式的三地址形式的中间表示。 (1) 5+6 *(a + b); (2)for j:=1 to 10 do a[j + j]:=0
答案是:(1)100: t1:=a+b 101: t2:=6*t1 102: t3:=5+t2 (2)100: j:=1 101: if j>10 goto NEXT 102: i:=j+j 103: a[i]:=0
[简答题,10分] 已知文法G(E) E→T|E+T T→F|T *F F→(E)|i (1)给出句型(T *F+i)的最右推导; (2)给出句型(T *F+i)的短语、素短语
答案是:(1) 最右推导: E->T->F->(E)->(E+T)->(E+F)->(E+i) ->(T+i)->(T*F+i) (2) 短语:(T*F+i),T*F+i,T*F,i 素短语:T*F,i
[填空题,10分] 在使用高级语言编程时,首先可通过编译程序发现源程序的全部()错误和 ()的部分错误
答案是:语法|语义
[填空题,10分] 常用的参数传递方式有(),传值和传名
答案是:传地址
[填空题,10分] 自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地 向上进行() ,力求归约到文法的()
答案是:直接归约|开始符号
字符
答案是:字母表中的元素称为符号,或称为字符。可以是字母、数字和其他符号
字母表
答案是:是元素的非空有穷集合
标识符
答案是:以字母打头的字母数字串
形式化的方法
答案是:用一整套带有严格规定的符号体系来描述问题的方法
[简答题,10分] 设文法G(S): S→(L)|a S|a L→L,S|S (1) 消除左递归和回溯; (2) 计算每个非终结符的FIRST和FOLLOW
答案是:(1) S→(L)|aS' S'→S|ε L→SL' L'→SL'|ε (2) FIRST)S)={(,a} FOLLOW(S)={#,,,)} FIRST(S')={,a,ε} FOLLOW(S')={#,,,)} FIRST(L)={(,a} FOLLOW(L)={ )} FIRST(L')={,,ε} FOLLOW(L'〕={ )}
[简答题,10分] 写一个文法,使其语言是奇数集,且每个奇数不以0开头
答案是:文法G(N): N→AB|B A→AC|D B→1|3|5|7|9 D→B|2|4|6|8 C→0|D
[简答题,10分] 按所涉及的程序范围可分为哪几级优化?
答案是:三种级别:局部优化、循环优化、全局优化
[填空题,10分] 自顶向下的语法分析方法的基本思想是:从文法的()开始,根据给定的输 入串并按照文法的产生式一步一步的向下进行(),试图推导出文法的(),使之与给定的输入串()
答案是:开始符号|直接推导|句子|匹配
[填空题,10分] 递归下降法不允许任一非终极符是直接()递归的
答案是:左
[填空题,10分] 设 G 是一个给定的文法,S 是文法的开始符号,如果 S->x( 其中 x∈VT*), 则称 x 是文 法的一个()
答案是:句子
词法分析器
答案是:编译程序中完成词法分析任务的程序段,称为词法分析器。词法分析器负责对源程序进行扫描,从中识别出一个个的单词符号,因此,词法分析器又称为扫描器。
状态转换图
答案是:状态转换图是一个有向图,仅包含有限个结点,每个结点表示一个状态,其中有一个初始结点,至少有一个终态结点,节点间弧的标记可以是输入字符或字符类
预处理
答案是:预处理包括删除无用的空格、跳格、回车和换行等编辑性字符,以及注解部分
扫描器
答案是:此法分析程序负责对源程序进行扫描,从中识别出一个个的单词符号,因此,词法分析程序又称为扫描器
[简答题,10分] 何谓优化?
答案是:优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码
[简答题,10分] 简述 DFA 与 NFA 有何区别
答案是:DFA与NFA的区别表现为两个方面:一是NFA可以若干个开始状态,而DFA仅只一个 开始状态。 另一方面,DFA的映象M是从K×Σ到K,而NFA的映象M是从K×Σ到K的 子集, 即映象M将产生一个状态集合(可能为空集),而不是单个状态
[简答题,10分] 已知文法 G[S] 为: S→dAB A→aA|a B→Bb|ε G[S] 产生的语言是什么?
答案是:G[S]产生的语言是L(G[S])={danbm│n≥1,m≥0}
[填空题,10分] 语法分析最常用的两类方法是()和()分析法
答案是:自上而下|自下而上
[填空题,10分] 产生式是用于定义()的一种书写规则
答案是:语法成分
[填空题,10分] 对编译程序而言,输入数据是(), 输出结果是()_
答案是:源程序|目标程序
目前为: 1/2 页  首页   上页  下页 尾页