东南大学编译原理试题
《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.一个优先表一定存在相应的优先函数。
( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13.递归下降分析法是一种自下而上分析法。
( )14.并不是每个文法都能改写成LL(1)文法。
( )15.每个基本块只有一个入口和一个出口。
( )16.一个LL(1)文法一定是无二义的。
( )17.逆波兰法表示的表达试亦称前缀式。
( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19.正规文法产生的语言都可以用上下文无关文法来描述。
( )20.一个优先表一定存在相应的优先函数。
( )21.3型文法一定是2型文法。
( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
( )二、填空题:1.( 最右推导 )称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。
4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。
5.语法分析器的输入是(),其输出是()。
6.扫描器的任务是从()中识别出一个个()。
编译原理考试试题与答案(汇总)

对输入串ab#给出分析过程为:
一、是非题:
1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( )
2.一个句型的直接短语是唯一的。 ( )
3.已经证明文法的二义性是可判定的。 ( )
4.每个基本块可用一个DAG表示。 ( )
5.每个过程的活动记录的体积在编译时可静态确定。 ( )
1.编译程序是对高级语言程序的解释执行。(× )
2.一个有限状态自动机中,有且仅有一个唯一的终态。(×)
3.一个算符优先文法可能不存在算符优先函数与之对应。(√ )
4.语法分析时必须先消除文法中的左递归。(×)
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√)
6.逆波兰表示法表示表达式时无须使用括号。(√ )
2.考虑文法G[S]:
S → (T) | a+S | a
T → T,S | S
消除文法的左递归及提取公共左因子。
解:消除文法G[S]的左递归:
S→(T) | a+S | a
T→ST′
T′→,ST′| ε
提取公共左因子:
S→(T) | aS′
S′→+S | ε
T→ST′
T′→,ST′| ε
3.试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。
8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)
10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。
11.一个名字的属性包括( 类型)和(作用域 )。
12.常用的参数传递方式有(传地址),(传值),(传名)
东南大学1997编译原理试题

东南大学1997编译原理试题一:文法G1:E→ET+|TT→TF*|FF→FP↑|PP→E|i1.试证明符号串TET+*i↑是G1的一个句型(要求画出语法树).2.写出该句型的所有短语,简单短句和句柄.二:1.给出下图FA的正规式.a b──→ ──→ ②→○ ① a↑↓ε←── ←── ③ε b2.已知正规文法G2:S→aS|AA→bBB→aB|ε试构造一确定有限自动机DFA(要求化简),使得它接受的语言正是该文法产生的语言,要求画出状态图.三:1.试写出一个上下文无关文法G3,它能产生配对的圆括号串(例如,(),(()),()(())等,甚至包含0对括号).2.使用文法G3给出输入串(())()#的自上而下分析过程.四:已知文法G4:S→aAb|Sc|εA→aAb|ε1.给出G4文法的LR(0)项目集规范族;2.构造SLR分析表;3.G4文法所定义的语言;4.已知有如下文法及相应的LR分析表,试给出语句01001#的LR分析过程(填写下表).S→AAAA→1AA→0LR分析表:───┬──┬──┬──┰──┬──状态│ 1│ 0│ #┃ S│ A───┼──┼──┼──╂──┼──0 │ S3 │ S4 │ ┃ 1│ 21 │││acc ┃│───┼──┼──┼──╂──┼──2 │ S3 │ S4 │┃│ 5───┼──┼──┼──╂──┼──3 │ S3 │ S4 │┃│ 6───┼──┼──┼──╂──┼──4 │ r3 │ r3 │ r3 ┃│───┼──┼──┼──╂──┼──5 │ S3 │ S4 │┃│ 7───┼──┼──┼──╂──┼──6 │ r2 │ r2 │ r2 ┃│───┼──┼──┼──╂──┼──7 │││ r1 ┃│───┴──┴──┴──┸──┴──分析过程:──────┬──────┬──────状态栈│符号栈│ 输入串──────┼──────┼──────││││││││││││││──────┴──────┴──────五: 1.翻译下面语句成四元式中间代码序列和后缀式(逆波兰式);while x+y>a doif a<10 then a:=a+1 else x:=x-1;2.翻译布尔表达式(a>b) or (c=d) and not (e成转移四元式序列(即四元式中仅包含(zθ,-,-,-)和(j,-,-,-)两类语句,其中θ为关系运算符.)六: 1.有如下Fortran说明语句,试借助符号表登记等价环链EQ和相对数OFFSET,即填写下表的EQ栏和OFFSET栏.设每个整型量占1子编址.integer a,b,c(10,10),d(10)equivalence (a,d(8),c(5,5))equivalence (b,c(5,8))符号表┌───┬─────┬───┬───┐│ name │ ... │ EQ │OFFSET│1│ a │ ... │ ││├───┼─────┼───┼───┤2│ b │ ... │ │ │├───┼─────┼───┼───┤3│ c │ ... │ │ │├───┼─────┼───┼───┤4│ d │ ... │ │ │└───┴─────┴───┴───┘2.有如下pascal语言的程序轮廓,当运行该程序且第一次递归调用Q过程(即在过程Q中又调用了Q)时,数据区建立情况.假定各数据区首址用SP(i)(i=0,1,……)表示,试给出P,Q数据区的display表.┌ main│┌ P││┌ Q│││ Call Q││└││ Call Q│└│┌ R││ Call P│└│┌ S││ Call R│└│ Call S└七:已知如下流图,试给出回边与循环.↓┌─→①←┐│/ \ /│ ↓↓/\ ②③\ \ /↑\↓↓/┌→④──┐│ │ ↓│ │┌→⑤│ ↓/ │└─⑥←─┘东南大学1998编译原理试题一:已知文法G1:S→aB|εB→b C|bDC→cB|cD→d1.试构造一个最小DFA,画出状态转换图.2.由该DFA给出它所识别的语言(用正规式表示).二:已知正规式α=ab*c*d,1.试构造一个DFAM,其接受的语言为此α(画出图);2.由该DFAM写出对应的正规文法(古线性).三:文法G3:S→A[B]A→[B]|AaB→a1.求出各非终结符N的Firstvt(N)和Lastvt(N),构造包括语句括号'#'在内的算符优先表;2.给出语句#[a][a]#的算符优先分析过程,即填写如下格式的表:步骤│ 栈内│ 输入串│ 动作────┼───┼────┼─────0 │# │[a][a]# │... │││四:已知文法G4:T→T*F|FF→(T)|i1.试给出语句(i*i)#的自上而下分析过程(填下表);2.画出对应的语法树,指出每一步归纳的句柄.步骤│ 栈内│ 输入│ 动作────┼───┼────┼─────0 │#T │ (i*i)# │... │││五:已知文法G5:0. E'→E1. E→E+T2. E→T3. T→i列出LR(0)项目集规范族,求出各非终结符N的Follow集合,构造SLR分析表.六:翻译如下语句成四元式序列(由语法制导生成).while a>b and aif a=5 then b:=b+1 elserepeata:=a+1until a>=d;七:按语法制导翻译下段程序成四元式序列(不要优化),设数组A:array[1..10,1..10] of int;每个下标变量占1字编址,数组按行存放,Z为函数名.beginA[i,j]:=A[i,j]+2;B:=Z(A[i,j])*5end八:将如下一段四元式序列进行块内优化和循环优化(强度减弱及删除基本归纳变量),写出优化后的四元式序列.(要求先划分基本块)(1) i:=1(2) if i>100 goto (10)(3) T1:=20*i(4) M:=J+T1(5) T2:=20*i(6) N:=K+T2(7) O:=M+N(8) i:=i+1(9) goto (2)(10) ...九:已知如下一段程序,试给出运行时整个数据区结构.假定num初值为2,每个数据区的活动记录包含内容如下图所示,数据区从k单元开始编址.┌─────┐ progr am factoral;│函数返回值│ var num,fact:int;├─────┤ function f(n:int):int│ 变量单元│ if n>0 then f:=n*f(n-1)├─────┤ else f:=1;│display 表│ begin├─────┤ read(num);│ 形参单元│ fact:=f(num)├─────┤ end│ 返回地址│├─────┤│基SP │└─────┘东南大学1999编译原理试题一:已知正规文法中的左线性文法G1:S→Sa|Sb|c试构造无ε产生式的等价右线性文法,并构造相应的确定有限自动机DFA,画出状态转换图即可.二:已知正规文法(X为开始符号)G2: X→0Y|1Z|0Y→0X|1Y|1Z→1X1.该文法产生语言是什么?请用正规式表示.2.构造最简的确定有限自动机DFA,并画出状态转换图.三:已知上下文无关文法(E为开始符号)G3: E→ET+|TT→TF*|FF→E|i1.消除文法左递归,并给出改写后的文法产生式;2.给出文法改写以后的各非终结符X的First(X)与Follow(X)集合,并由此判定它是否是LL(1)文法(按下表填).V(N) │ First(X) │ Follow(X)───┼─────┼───────X ││───┼─────┼───────...││───┼─────┼───────││四:已知表达式文法(已拓广)G4: E'→EE→E+E|i1.试构造文法G4的LR(0)项目集规范族;2.若'+'服从右结合率,请给出LR分析表.五:已知文法(Z为开始符号)G5: Z→bMbM→(Ma)|a1.试构造算符优先分析表(即填下表);│ a │ b │( │ ) │# │──┼──┼──┼──┼──┼──┼a ││││││──┼──┼──┼──┼──┼──┼b ││││││──┼──┼──┼──┼──┼──┼( ││││││──┼──┼──┼──┼──┼──┼) ││││││──┼──┼──┼──┼──┼──┼# ││││││──┼──┼──┼──┼──┼──┼2.若某相邻的终结符a,b间存在a<=b两种关系,那么在进行算符优先分析做归约动作时,在寻找栈顶的素短语符号串时要察看它与哪个产生式右部的符号串匹配. 例如栈顶串...aAbα(a,b↔VT,A↔(VA∪ε),a<=b,α↔V*)为已知可归约,而现有产生式X→aAbα,则取素短语aAbα,若只有产生式Y→Abα,那么就取Abα进行归约.试按此规定的算法给出语句b((aa)a)b的算符优先分析过程.六:翻译成中间代码.1.将如下程序段翻译成后缀式(逆波兰式),填在一维数组POST[i]中,设i初值=1. t:=15;b:=20;while t<>b doif t>b then t:=t-belse b:=b-t;2.翻译布尔表达式成转移四元式序列,并指出待填真假链序号.(a>b+1) and not (c+2注:f(x)为布尔函数.七:有如下一个计算m*2^n的C语言程序,试给出运行时整个栈或数据区的结构.数据区的活动记录结构如图所示.┌──────┐┌─────┐│ 函数f返回值││返回结果值│├──────┤├─────┤│ 局部变量区││局部变量区│├──────┤├─────┤│ 全程变量区││形参单元区│├──────┤├─────┤│ 主程序main ││ 返回地址││ 数据区│├─────┤└──────┘│ 基SP │├─────┤│函数数据区│└─────┘int m;f(n)int n;{ int c;if (n==0) c=m;else c=f(n-1)*2;return (c);}main(){ int n=2;m=5;printf("%d\n",f(n));}八:已知如下程序段a:=1;while a<=10 dobeginif a<>b thenA[a,b]:=A[a,b]+2;a:=a+1;end;1.按语法制导生成四元式中间代码序列;2.将中间代码序列划分成基本块,画出程序流图,并指出循环结点集;3.执行循环中代码外提,强度减弱优化和基本块内删除公共子表达式优化,最后画出包含优化后的中间代码的程序流图.注:数组A: array[1..10,1..10] of int;按行存放,每个下标变量占1字编址,首地址为addrA上海交通大学1998年编译原理试题一、生成语言l={albmclanbn l>=0,m>=1,n>=2 }的文法是什么?它是chomsky那一型文法?二、文法G1:P aPQR abRRQ QRBQ bbbR bccR cc它是chomsky哪一型文法?请证aaabbbccc是G1的一个句子。
《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号. (√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是_____。
A.() 单词的种别编码B.() 单词在符号表中的位置C.( )单词的种别编码和自身值D.( )单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.()M1和M2的有向边条数相等C.()M1和M2所识别的语言集相等D.()M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.()(xyx)*C.( ) xnyxn(n≥0) D.( )x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.()最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( )最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态.(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( )单词在符号表中的位置C.( )单词的种别编码和自身值D.()单词自身值2.正规式M 1 和M 2 等价是指_____。
A.() M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( )M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____.A.()xyx B.()(xyx)*C.( ) xnyxn(n≥0) D.()x*yx* 4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.() 最左推导和最右推导对应的语法树可能不同C.()最左推导和最右推导必定相同D.()可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______.A.( )源程序B.()目标语言C.()编译方法D.( )以上三项都是6.四元式之间的联系是通过_____实现的。
编译原理考试试题和答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理期末考试题(含答案)

编译原理期末考试题(含答案)1. 请简要解释编译原理的定义和作用。
编译原理是研究将高级语言源程序转化为等价的目标程序的一门学科。
它的主要作用是将高级语言的源代码翻译为计算机能够执行的目标代码,从而实现程序的运行。
2. 请列举并解释编译过程的各个阶段。
- 词法分析:将源代码划分为一个个词法单元,如变量、关键字等。
- 语法分析:根据语法规则,将词法单元组合为语法树,检查语法结构是否正确。
- 语义分析:对语法树进行语义检查,如类型匹配、作用域等。
- 中间代码生成:将语法树转化为中间代码表示形式,方便后续优化。
- 代码优化:对中间代码进行优化,提高程序执行效率。
- 目标代码生成:将优化后的中间代码转化为目标机器代码。
3. 请解释符号表在编译过程中的作用。
符号表是编译器在编译过程中用来管理变量、函数、类型等标识符的数据结构。
它的主要作用是记录标识符的相应属性,如类型、作用域等,以便在后续的语法、语义分析以及代码生成过程中进行查找、检查等操作。
4. 请简要解释LL(1)文法的定义和特点。
LL(1)文法是一种上下文无关文法,它具有以下特点:- 对于给定的非终结符,它的产生式右部的首符号不相同。
- 对于给定的产生式右部的首符号,它的产生式右部不相同。
- 通过向前查看一个符号,就能确定所选用的产生式。
5. 请简要解释词法分析器的作用和实现方式。
词法分析器的主要作用是将源代码分解为一个个词法单元,如变量名、关键字等。
它的实现方式一般采用有限自动机,通过定义正则表达式描述各个词法单元的模式,然后根据模式匹配的结果生成相应的词法单元。
答案仅为参考,请以实际考试为准。
编译原理练习题参考答案[]
![编译原理练习题参考答案[]](https://img.taocdn.com/s3/m/d95132c4a6c30c2258019e17.png)
一、填空题:1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理.1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序. 1-03.编译方式与解释方式的根本区别在于是否生成目标代码.1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序. 1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序.1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段.如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段, 汇编阶段和运行阶段.1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
其中,词法分析器用于识别单词。
1-09.编译方式与解释方式的根本区别为是否生成目标代码。
》2-01.所谓最右推导是指:任何一步αβ都是对α中最右非终结符进行替换的。
2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。
2-03.产生式是用于定义语法成分的一种书写规则。
2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈V T*} 。
2-05.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型。
2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V T*),则称x是文法的一个句子。
3-01.扫描器的任务是从源程序中识别出一个个单词符号。
4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学一九九三年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:(15分)判断下列命题的真假,并简述理由:1.文法G的一个句子对应于多个推导,则G是二义的.2.LL(1)分析必须对原有文法提取左因子和消除左递归.3.算符优先分析法采用"移近-归约"技术,其归约过程是规范的.4.文法S→aA;A→Ab;A→b是LR(0)文法(S为文法的开始符号).5.一个BASIC解释程序和编译程序的不同在于,解释程序由语法制导翻译成目标代码并立即执行之,而编译程序需产生中间代码及优化.二:(15分)设计一个最小状态有穷自动机,识别由下列子串组成的任意字符串. GO,GOTO,TOO,ON例如:GOTOONGOTOOGOON是合法字符串.三:(15分)构造一个LL(1)文法G,识别语言L:L={ω|ω为{0,1}上不包括两个相邻的1的非空串}并证明你的结论.四:(20分)设有一台单累加器计算机,并汇编语言含有通常的汇编指令LOAD,STORE,ADD和MUL.1.写一个递归下降分析程序,将如下文法所定义的赋值语句翻译成汇编语言:A→i:=EE→E+E|E*E|(E)|i2.利用加,乘法满足交换率这一性质,改进你的分析程序,以期产生比较高效的目标代码.五:(15分)C为大家熟知的程序语言.1.C的参数传递采用传值的方式,而且允许函数定义和调用时的参数个数不一致(如printf).请指出其函数调用语句:f(arg1,arg2,...,argn)翻译成的中间代码序列,并简述其含义.2.C语言中的变量具有不同的作用范围,试述C应采用的存储分配策略.六:(20分)设有一个子程序的四元式序列为:(1) I:=1(2) if I>20 GOTO (16)(3) T1:=2*J(4) T2:=20*I(5) T3:=T1+T2(6) T4:=addr(A)-22(7) T5:=2*I(8) T6:=T5*20(9) T7:=2*J(10) T8:=T6+T7(11) T9:=addr(A)-22(12) T10:=T9[T8](13) T4[T3]:=T10+J(14) I:=I+1(15) goto (2)(16) ret1.分划基本块.2.对代码施行各种可能的优化,并写出优化过程中采用了何种优化策略._______________________________________________________________________________ 东南大学一九九四年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:由文法G1构造LR(1)部分分析表:1.列出4个项目集I0,I1,I2,I3;(如下图)2.填写LR(1)分析表的状态0,1,2的action和goto表的内容.(如下图)G1: (0) S→T(1) T→T(T)(2) T→ε┌──────┐┌──┐┌──┐┌──┐│I0:S→·T,# │T │I1: │ (│I2: │ T│I3: │││ -→││-→ ││-→ ││└──────┘└──┘└──┘└──┘┌──┬────────┬───┐││action │ goto ││状态├──┬──┬──┼───┤││ (│ )│ #│ T │├──┼──┼──┼──┼───┤│ 0│││││├──┼──┼──┼──┼───┤│ 1│││││├──┼──┼──┼──┼───┤│ 2│││││├──┼──┴──┴──┼───┤│││││... │ ... │ ...│││││└──┴────────┴───┘二:已知文法G2,请用类pascal语言写出它的递归下降分析程序.G2: A→[BB→X]|BAX→Xa|Xb|a|b三:已知文法G3,要求:1.写出各非终极符的首终极符集合和尾终极符集合;2.填写opt表:│+ │* │@ │ ↑ │i │# │──┼──┼──┼──┼──┼──┼──┤+ │││││││──┼──┼──┼──┼──┼──┼──┤* │││││││──┼──┼──┼──┼──┼──┼──┤@ │││││││──┼──┼──┼──┼──┼──┼──┤↑│││││││──┼──┼──┼──┼──┼──┼──┤i │││││││──┼──┼──┼──┼──┼──┼──┤# │││││││──┼──┼──┼──┼──┼──┼──┤│││││││G3: E→E+T|T|@TT→T*F|FF→p↑F|Pp→i四:请写出产生下列语言的文法.1. L1={a^ib^j|i>j>=1}2. L2={ω1|ω1↔{0,1}*&ω1中包含0,1个数相等的任意串}3. L3={ω2|ω2↔{a,b}*&ω2中a之后必定跟b}4. L4={ω3+ω3|ω3↔{0,1}*}五:简要回答问题.1.对编译程序而言,模块,遍,子程序这三个概念的主要区别?2.静态存储分配与动态存储分配的主要区别?3.何谓自适应线性表?六:翻译如下布尔表达式成四元式序列,结果留待填的真假链的四元式序号.A∧B-C<D+E∨┐F_____________________________________________________________________东南大学一九九五年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:按算法构造文法G1:S→#M#M→(L|aL→M,a)的算符优先矩阵.(即填写下列矩阵)│ a │, │( │) │# │──┼──┼──┼──┼──┼──┼a ││││││──┼──┼──┼──┼──┼──┼, ││││││──┼──┼──┼──┼──┼──┼( ││││││──┼──┼──┼──┼──┼──┼) ││││││──┼──┼──┼──┼──┼──┼# ││││││──┼──┼──┼──┼──┼──┼二:将下列cfg文法修改成正规文法.S→ABA→M|N|PB→aB|aM→bM|bN→cN|cP→αP|ε三:已知文法G2:(1) S'→S(2) S→AAA(3) S→1A(4) S→01.列出LR(0)项目集族;2.构造SLR分析表;3.试给处语句01100#的LR分析过程.四:1.构造由下列三型文法G3所对应的FA.2.将构造的FA确定化和最小化.3.写出该DFA所识别的语言.G3: S→aA|bS|dCA→dEC→aD|bC|bD→bE|bE→aD|bE|b五:设有源语句A[I+1,J+2]:=A[B[K+2],5]1.列出计算两个数组的下标地址(按行存放)A[I+1,J+2]的地址D1=?B[K+2]的地址D2=?2.按语法制导翻译该语句成四元式序列.(设数组首地址分别为a,b;数组按行存放,每个元素占一字编址.数组说明:A:array[1..10,-5..5],B:array[-5..5]) 六:求文法G4:A→BCc|gDBB→bcDE|εC→Dab|caD→dD|εE→gAf|c的各非终结符的随符集.七:1.简述由基本块寻找循环结点的算法.2.对于如下一段程序,若参数传递分别采用:(a)传名 (b)传结果 (c)传地址试问程序执行结果,Y值是什么?proc Q(B,C)beginB:=B+2;B:=B*Cend;beginY:=2;Q(Y,2*Y);print(Y)end;3.文法G5:E→P↑E|PP→P*Q|QQ→Q+R|RR→(E)|aa→整常数试给出下列表达式计值结果(语法制导).3+2*5↑2*2+32+(2↑2↑3)*2+3_____________________________________________________________________ 东南大学一九九六年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:1.试写一正规文法,使其定义的语言是不以0打头的偶整数集合.其中数字可以用简名表示,比如α1→0|2|4|6|8,并把α1看作是终结符.2.试写一上下文无关文法,它能产生下列语言:L={ω|ω↔{a,b}*,且ω中a的个数是b的两倍,例如aab等}二:请写出由下列文法所确定的语言.1. G1: S→10S01S→aAA→bAA→a2. G2: S→aSSS→a三:已知NFA的状态转换图如下,试对它确定化并化简,并写出该FA接受的语言.∩b a→S──────→Ad││c↓ a b ↓b<C──→D──→E>b│b│←──│b│↓ a │b└─→T ←──┘四:已知文法G4:S'→SS→ASS→bA→SAA→a1.试求closure({(S'→·S,#)})和GO(closure({(S'→·S,#)}),S)2.文法是LR(1)吗?为什么?五:试将下面语句按语法制导翻译成四元式序列.while (a<c) and (b<d) doif a=1 then c:=c+1else while a<=d do a:=a+2;六:1.试对如下四元式序列划分成基本块,并化出程序流图;2.写出源语句.(1) I:=1(2) if I>M goto (19)(3) J:=1(4) if J>N goto (17)(5) T1:=I*N(6) T2:=T1+J(7) T3:=addr(A)-C(8) T4:=I*2(9) T5:=J+2(10) T6:=T4*N(11) T7:=T6+T5(12) T8:=addr(A)-C(13) T9:=T8[T7](14) T3[T2]:=T9(15) J:=J+1(16) goto (4)(17) I:=I+1(18) goto (2)(19) ...七:1.求文法G7的各非终结符的终结首符集First和随符集Follow.2.判定该文法是LL(1)吗?G7: A→BCc|gDBB→bCDE|εC→DaB|caD→dD|εE→gAf|c_____________________________________________________________________东南大学一九九七年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:文法G1:E→ET+|TT→TF*|FF→FP↑|PP→E|i1.试证明符号串TET+*i↑是G1的一个句型(要求画出语法树).2.写出该句型的所有短语,简单短句和句柄.二:1.给出下图FA的正规式.a b──→──→ ②→◎①a↑↓ε←──←── ③ε b2.已知正规文法G2:S→aS|AA→bBB→aB|ε试构造一确定有限自动机DFA(要求化简),使得它接受的语言正是该文法产生的语言,要求画出状态图.三:1.试写出一个上下文无关文法G3,它能产生配对的圆括号串(例如,(),(()),()(())等,甚至包含0对括号).2.使用文法G3给出输入串(())()#的自上而下分析过程.四:已知文法G4:S→aAb|Sc|εA→aAb|ε1.给出G4文法的LR(0)项目集规范族;2.构造SLR分析表;3.G4文法所定义的语言;4.已知有如下文法及相应的LR分析表,试给出语句01001#的LR分析过程(填写下表).S→AAAA→1AA→0LR分析表:───┬──┬──┬──┰──┬──状态│ 1│ 0│ #┃ S│ A───┼──┼──┼──╂──┼──0 │ S3 │ S4 │┃ 1│ 2───┼──┼──┼──╂──┼──1 │││acc ┃│───┼──┼──┼──╂──┼──2 │ S3 │ S4 │┃│ 5───┼──┼──┼──╂──┼──3 │ S3 │ S4 │┃│ 6───┼──┼──┼──╂──┼──4 │ r3 │ r3 │ r3 ┃│───┼──┼──┼──╂──┼──5 │ S3 │ S4 │┃│ 7───┼──┼──┼──╂──┼──6 │ r2 │ r2 │ r2 ┃│───┼──┼──┼──╂──┼──7 │││ r1 ┃│───┴──┴──┴──┸──┴──分析过程:──────┬──────┬──────状态栈│符号栈│输入串──────┼──────┼──────││││││││││││││──────┴──────┴──────五:1.翻译下面语句成四元式中间代码序列和后缀式(逆波兰式);while x+y>a doif a<10 then a:=a+1 else x:=x-1;2.翻译布尔表达式(a>b) or (c=d) and not (e<f)成转移四元式序列(即四元式中仅包含(zθ,-,-,-)和(j,-,-,-)两类语句,其中θ为关系运算符.)六:1.有如下Fortran说明语句,试借助符号表登记等价环链EQ和相对数OFFSET,即填写下表的EQ栏和OFFSET栏.设每个整型量占1子编址.integer a,b,c(10,10),d(10)equivalence (a,d(8),c(5,5))equivalence (b,c(5,8))符号表┌───┬──────┬───┬───┐│ name │ ... │ EQ │OFFSET│├───┼──────┼───┼───┤1│ a │ ... │││├───┼──────┼───┼───┤2│ b │ ... │││├───┼──────┼───┼───┤3│ c │ ... │││├───┼──────┼───┼───┤4│ d │ ... │││└───┴──────┴───┴───┘2.有如下pascal语言的程序轮廓,当运行该程序且第一次递归调用Q过程(即在过程Q中又调用了Q)时,数据区建立情况.假定各数据区首址用SP(i)(i=0,1,……)表示,试给出P,Q数据区的display表.┌ main│┌ P││┌ Q│││ Call Q││└││ Call Q│└│┌ R││ Call P│└│┌ S││ Call R│└│ Call S└七:已知如下流图,试给出回边与循环.↓┌─→①←┐│/ \ /│ ↓↓/\ ②③\ \ /↑\↓↓/┌→④──┐││↓││┌→⑤│↓/ │└─⑥←─┘_____________________________________________________________________ 东南大学一九九八年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:已知文法G1:S→aB|εB→bC|bDC→cB|cD→d1.试构造一个最小DFA,画出状态转换图.2.由该DFA给出它所识别的语言(用正规式表示).二:已知正规式α=ab*c*d,1.试构造一个DFAM,其接受的语言为此α(画出图);2.由该DFAM写出对应的正规文法(古线性).三:文法G3:S→A[B]A→[B]|AaB→a1.求出各非终结符N的Firstvt(N)和Lastvt(N),构造包括语句括号'#'在内的算符优先表;2.给出语句#[a][a]#的算符优先分析过程,即填写如下格式的表:步骤│栈内│ 输入串│动作────┼────┼────┼─────0 │#│[a][a]# │... │││四:已知文法G4:T→T*F|FF→(T)|i1.试给出语句(i*i)#的自上而下分析过程(填下表);2.画出对应的语法树,指出每一步归纳的句柄.步骤│栈内│输入│动作────┼────┼────┼─────0 │#T│ (i*i)# │... │││五:已知文法G5:0. E'→E1. E→E+T2. E→T3. T→i列出LR(0)项目集规范族,求出各非终结符N的Follow集合,构造SLR分析表. 六:翻译如下语句成四元式序列(由语法制导生成).while a>b and a<d doif a=5 then b:=b+1 elserepeata:=a+1until a>=d;七:按语法制导翻译下段程序成四元式序列(不要优化),设数组A:array[1..10,1..10] of int;每个下标变量占1字编址,数组按行存放,Z为函数名.beginA[i,j]:=A[i,j]+2;B:=Z(A[i,j])*5end八:将如下一段四元式序列进行块内优化和循环优化(强度减弱及删除基本归纳变量),写出优化后的四元式序列.(要求先划分基本块)(1) i:=1(2) if i>100 goto (10)(3) T1:=20*i(4) M:=J+T1(5) T2:=20*i(6) N:=K+T2(7) O:=M+N(8) i:=i+1(9) goto (2)(10) ...九:已知如下一段程序,试给出运行时整个数据区结构.假定num初值为2,每个数据区的活动记录包含内容如下图所示,数据区从k单元开始编址.┌─────┐ program factoral;│函数返回值│ var num,fact:int;├─────┤ function f(n:int):int│ 变量单元│ if n>0 then f:=n*f(n-1)├─────┤ else f:=1;│display 表│ begin├─────┤ read(num);│ 形参单元│ fact:=f(num)├─────┤ end│ 返回地址│├─────┤│基SP │└─────┘_____________________________________________________________________东南大学一九九九年攻读硕士学位研究生入学考试试题试题编号:553试题名称:编译原理一:已知正规文法中的左线性文法G1:S→Sa|Sb|c试构造无ε产生式的等价右线性文法,并构造相应的确定有限自动机DFA,画出状态转换图即可.二:已知正规文法(X为开始符号)G2: X→0Y|1Z|0Y→0X|1Y|1Z→1X1.该文法产生语言是什么?请用正规式表示.2.构造最简的确定有限自动机DFA,并画出状态转换图.三:已知上下文无关文法(E为开始符号)G3: E→ET+|TT→TF*|FF→E|i1.消除文法左递归,并给出改写后的文法产生式;2.给出文法改写以后的各非终结符X的First(X)与Follow(X)集合,并由此判定它是否是LL(1)文法(按下表填).V(N) │ First(X) │ Follow(X)────┼──────┼───────X ││... ││││四:已知表达式文法(已拓广)G4: E'→EE→E+E|i1.试构造文法G4的LR(0)项目集规范族;2.若'+'服从右结合率,请给出LR分析表.五:已知文法(Z为开始符号)G5: Z→bMbM→(Ma)|a1.试构造算符优先分析表(即填下表);│ a │ b │( │) │# │──┼──┼──┼──┼──┼──┼a ││││││──┼──┼──┼──┼──┼──┼b ││││││──┼──┼──┼──┼──┼──┼( ││││││──┼──┼──┼──┼──┼──┼) ││││││──┼──┼──┼──┼──┼──┼# ││││││──┼──┼──┼──┼──┼──┼2.若某相邻的终结符a,b间存在a<=b两种关系,那么在进行算符优先分析做归约动作时,在寻找栈顶的素短语符号串时要察看它与哪个产生式右部的符号串匹配. 例如栈顶串...aAbα(a,b↔VT,A↔(VA∪ε),a<=b,α↔V*)为已知可归约,而现有产生式X→aAbα,则取素短语aAbα,若只有产生式Y→Abα,那么就取Abα进行归约.试按此规定的算法给出语句b((aa)a)b的算符优先分析过程.六:翻译成中间代码.1.将如下程序段翻译成后缀式(逆波兰式),填在一维数组POST[i]中,设i初值=1. t:=15;b:=20;while t<>b doif t>b then t:=t-belse b:=b-t;2.翻译布尔表达式成转移四元式序列,并指出待填真假链序号.(a>b+1) and not (c+2<d) or f(x)注:f(x)为布尔函数.七:有如下一个计算m*2^n的C语言程序,试给出运行时整个栈或数据区的结构.数据区的活动记录结构如图所示.┌──────┐┌─────┐│函数f返回值││返回结果值│├──────┤├─────┤│ 局部变量区││局部变量区│├──────┤├─────┤│ 全程变量区││形参单元区│├──────┤├─────┤│主程序m ain ││ 返回地址││ 数据区│├─────┤└──────┘│基SP │├─────┤│函数数据区│└─────┘int m;f(n)int n;{ int c;if (n==0) c=m;else c=f(n-1)*2;return (c);}main(){ int n=2;m=5;printf("%d\n",f(n));}八:已知如下程序段a:=1;while a<=10 dobeginif a<>b thenA[a,b]:=A[a,b]+2;a:=a+1;end;1.按语法制导生成四元式中间代码序列;2.将中间代码序列划分成基本块,画出程序流图,并指出循环结点集;3.执行循环中代码外提,强度减弱优化和基本块内删除公共子表达式优化,最后画出包含优化后的中间代码的程序流图.注:数组A: array[1..10,1..10] of int;按行存放,每个下标变量占1字编址,首地址为addrA.友情赠送--东南大学计算机系编译原理期末考试试题两套!_____________________________________________________________________东南大学试题纸课程: 编译原理 1997-1998学年第一学期一:1.试给出产生L1语言的相应预测分析文法.L1={a^ib^j|j>i>0}2.设文法G1: S→aA A→bA|a试给出文法G1所定义的语言,并用正规式表示.二:1.设文法G2如下,试给出G2文法中各非终结符的First与Follow,即填写下表. G2: A→BCc|gDBB→bCDE|εC→DaB|caD→dD|εE→gAF|c│ First │ Follow────┼──────┼───────A ││B ││C ││D ││E ││────┴──────┴───────2.构造G2文法的预测分析表.│ a│ b│ c│ d│ f│ g│ #────┼──┼──┼──┼──┼──┼──┼───A │││││││B │││││││C │││││││D │││││││E │││││││────┴──┴──┴──┴──┴──┴──┴───三:设正规文法如下,1.构造相应的NFA,画出状态转换图.2.将NFA确定化与最小化,画出最小DFA状态转换图.S→aA|bS|dCA→dEC→aD|bC|bD→bE|bE→aD|bE|b四:构造文法G4:S→#M#M→(M,a)|a的算符优先分析表(按a,,,(,),#顺序列出);并给出语句((a,a),a)#的算符优先分析过程.五:1.构造已拓广文法G5的LR(0)项目集规范族;G50) S'→S(1) S→BB(2) B→a B(3) B→b2.构造G5文法的SLR分析表;3.该文法是LR(0)吗?为什么?六:1.令F(x,y)为一函数过程,试写出过程调用语句:F(F(A+B,C)+D,E)的四元式中间代码序列.2.设数组A:array[1..10,-5..5],B:array[-5..5],数组按行存放,每个元素占1字编址,其首地址分别为1000和2000.试翻译赋值语句A[I+1,J+2]:=A[B[K+2],5]成四元式序列.3.计算A[5,2]和B的内存地址.七:设有如下pascal程序,在运行时数据区随调用语句而建立,当过程(程序)结束时撤销数据区.试写出最后一次调用fib时刻的整个数据区结构.假定在活动记录中不设全局display与形参个数这二项,其它按书上规定.整个数据区从k单元开始分配.所谓最后一次调用fib试制从那时刻之后只有撤销数据区动作.program fibonacci;var m:integer;function fib(n:int):int;if n=0 then fib:=0else if n=1 then fib:=1else fib:=fib(n-2)+fib(n-1);beginm:=3;write (fib(m))end八:试对如下四元式序列进行强度减弱优化.要求先画出程序流图,对循环体作强度减弱优化.I:=1read J,KL:A:=K*IB:=J*IC:=A*Bwrite CI:=I+1if I<100 goto Lhalt_____________________________________________________________________东南大学试题纸课程: 编译原理 1998-1999学年第一学期一:构造正规式 (-|ε)(a|b)*ab 相应的DFA.先构造NFA,确定化,最小化,最后画出最小DFA状态转换图.二:已知状态转换图如下,试给出相应的右线性文法和相应正规表达式Re.b ∩a c┌────→A←────┐→S b└────→B←┐a└────────────┘三:设文法G3A'→AA→a|aAc|bBcB→aA|bB1.消除左递归和/或提取左因子,写出改写后的文法G3';2.给出改写后的文法G3'的First(x)与Follow(x),x为非终结符;3.构造G3'的LL(1)分析表.四:已知文法G4S→a|(T)T→T,S|S1.给出文法G4的算符优先表.2.将该优先表用逐次加1法转换成优先函数.│ a │( │) │, │# │──┼──┼──┼──┼──┼──┼a ││││││──┼──┼──┼──┼──┼──┼( ││││││──┼──┼──┼──┼──┼──┼) ││││││──┼──┼──┼──┼──┼──┼, ││││││──┼──┼──┼──┼──┼──┼# ││││││──┼──┼──┼──┼──┼──┼│ a │( │) │, │# │──┼──┼──┼──┼──┼──┼f ││││││──┼──┼──┼──┼──┼──┼g ││││││──┼──┼──┼──┼──┼──┼五:已知文法G5T→T(T)T→ε1.构造G5文法的LR(0)项目集规范族(要求先拓广);2.构造G5文法的SLR分析表;3.给出句子(())#的LR分析过程.六:将布尔表达式A>B+1∧┐(D∨E)1.按逻辑演算中求布尔值译成四元式序列;2.翻译成转移四元式序列;七:1.将如下程序段译成四元式中间代码序列,设每个下表变量占4字编址,数组首地址为a.i:=0;repeatif i>2 then A[i]:=A[i]*2;i:=i+1until i>10;2.将译成的中间代码划分成基本块,画出程序流图,并指出循环结点.八:对如下pascal程序试给出运行时整个数据区,并标出各数据区建立的先后顺序.设m=3,每个数据区的活动记录包含:Top→┌─────┐│函数返回值│├─────┤│ 变量单元│├─────┤│disp lay 表│├─────┤│ 形参单元│├─────┤│ 返回地址│├─────┤│基SP │Sp→ └─────┘program fibonacci;var m:int;function fib(n:int):int;var a,b:int;beginif n=0 then fib:=0else if n=1 then fib:=1elsebegina:=fib(n-1);b:=fib(n-2) ;fib:=a+bendendbeginm:=3;write (fib(m))end九:1.已知数组A:array[-5..5,2..8] of integer;设每个下标变量占4字节,首地址a=1000,按行存放,计算A[0,5]的内存地址.2.设基本归纳变量x:=x+Cy:=C1x+C2试将归纳变量y化为自增赋值形式.若C=2,C1=3,C2=5,试写出y的自增赋值形式.。