东南大学编译原理试题

合集下载

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。

编译原理考试试题与答案(汇总)

编译原理考试试题与答案(汇总)
其SLR(1)分析表为:
对输入串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编译原理试题

东南大学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. 请简要解释词法分析器的作用和实现方式。

词法分析器的主要作用是将源代码分解为一个个词法单元,如变量名、关键字等。

它的实现方式一般采用有限自动机,通过定义正则表达式描述各个词法单元的模式,然后根据模式匹配的结果生成相应的词法单元。

答案仅为参考,请以实际考试为准。

编译原理练习题参考答案[]

编译原理练习题参考答案[]

一、填空题: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.语法分析最常用的两类方法是自上而下和自下而上分析法。

东南大学编译原理试卷

东南大学编译原理试卷
9. Please construct the DAG for the following basic block. We assume that only variable P be used later, please optimize the block and rewrite the block in optimized code form.(10%)
1. Please construct context-free grammars with -free productions
for the following language (10%).
{| (a,b,c,d)* and the numbers of a’s and b’s and c’s occurred in
if (a[i,j] != a[j,i])
{
loop=1;
m=i;
n=j;
}
else j=j+1;
if (loop==0) i=i+1;
}
共6页
第5页
Notes: Here we assume that the declaration of array A is array [1..10,1..10], each data element of array A would use 4 storage unit, and the start address of array A’s storage area is addrA.
Surname
Please obey the rules of examination. If you violate the rules, your answer sheets will be invalid

东南大学编译原理试题

东南大学编译原理试题

东南大学编译原理试题东南大学一九九三年攻读硕士学位研究生入学考试试题试题编号: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< p="">________________________________________________________________ _____东南大学一九九五年攻读硕士学位研究生入学考试试题试题编号: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<="" p="">if 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)< p="">成转移四元式序列(即四元式中仅包含(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<="" p="">if 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<="" or="" p="">注: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; </f)<></d+e∨┐f<>。

编译原理试题及答案(期末复习版)

编译原理试题及答案(期末复习版)

<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题1.将编译程序分成若干个“遍”是为了_b__。

a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握__d__。

a.源程序b.目标语言c.编译方法d.以上三项都是3.变量应当c_。

a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4.编译程序绝大多数时间花在_d___上。

a.出错处理b.词法分析c.目标代码生成d.管理表格5.词法分析器的输出结果是_c___。

a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值d.单词自身值6.正规式MI和M2等价是指__c__。

a.MI和M2的状态数相等b.Ml和M2的有向弧条数相等。

C.M1和M2所识别的语言集相等 d.Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—c。

a.语法规则b.词法规则c.语义规则d.等价变换规则8.后缀式ab+cd+/可用表达式__b_来表示。

a.a+b/c+d b.(a+b)/(c+d)c.a+b/(c+d)d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。

2.已知文法G[E]:E→ET+|T T→TF*|F F→F^|a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b)*a(a|b)构造一个确定的有限自动机。

4.设文法G(S):S→(L)|a S|aL→L,S|S(1)消除左递归和回溯;(2)计算每个非终结符的FIRST和FOLLOW;(3)构造预测分析表。

编译原理考试试题

编译原理考试试题

《编译原理》考试试题(所有答案必须写在答题纸上)一、(5 X 6分)回答下列问题:1 •什么是S-属性文法什么是L-属性文法它们之间有什么关系2•什么是句柄什么是素短语3•划分程序的基本块时,确定基本块的入口语句的条件是什么4•运行时的DISPLAY表的内容是什么它的作用是什么5.对下列四元式序列生成目标代码:A:=B*CD:=E+FG:=A+DH:=G*2其中,H是基本块出口的活跃变量,R0和R1是可用寄存器二、(8分)设={0 , 1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA三、(6分)写一个文法使其语言为L(G)={ a n b m a m b n I m,n > 1}。

四、(8分)对于文法G(E):E T|E+TT F|T*FF (E)|i1.写出句型(T*F+i)的最右推导并画出语法树。

2.写出上述句型的短语,直接短语、句柄和素短语。

五、(12分)设文法G(S):S SiA | A AA B| BB )A*|(1 •构造各非终结符的 FIRSTVT 和LASTVT 集合;2 •构造优先关系表和优先函数。

六、(9分)设某语言的do-while 语句的语法形式为针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:(1) 写出适合语法制导翻译的产生式; (2) 写出每个产生式对应的语义动作。

七、(8 分)将语句 if (A<X) (B>0) then while C>0 do C:=C+D;式。

八、(10分)设有基本块如下:T1:=S+R T2:= 3 T3:= 12/T2 T4:=S/R A:=T1-T4 T5:=S+R B:=T5 T6:=T5*T3S do S ⑴ While E其语义解释为:翻译成四元直假B:=T6(1)画出DAGS;⑵ 设A,B是出基本块后的活跃变量,请给出优化后的四元式序列九、(9分)设已构造出文法G(S):⑴ S BB (2) B aB (3) B b的LR分析表如下假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。

编译原理习题及答案1~3

编译原理习题及答案1~3

图2-13 习题2.6的NFA
用子集法将图2-13所示的NFA确定化,如图2-14所示
由图2-14可看出非终态2和4的下一状态相同,终态6和8 的下一状态相同,即得到最简状态为
{0} {1} {2,4} {3} {5} {6,8} {7}
按顺序重新命名为0、1、2、3、4、5、6,则 得到最简DFA,如图2-15所示。
(2) 将编译过程分成若干“遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
A.源程序
B.目标语言
C.编译方法
D.A~C项
(4) 编译程序绝大多数时间花在 上。
A.出错处理
2.9构造一个DFA,它接收 Σ ={a,b}上所有含偶数 个a的字符串。 解:Σ ={a,b}上所有含偶数个a的字符串可表示为 (b|ab*a)*
2.10 下列程序段以B表示循环体,A表示初始化,I表 示增量,T表示测试:
(4) 状态转换图(见图2-1)接受的字集为 _______。 A.以0开头的二进制数组成的集合 B.以0结尾的二进制数组成的集合 C.含奇数个0的二进制数组成的集合 D.含偶数个0的二进制数组成的集合
图2-1 习题2.1的DFA M
(5) 对于任一给定的NFA M, 一个DFA M′,使 L(M)= L(M′)。
S
a
b
0
2
1
1

2
2
2
2
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
将图2-3所示的DFA M′最小化。首先,将M′的状态分 成终态组{1,2}与非终态组{0}。其次,考察{1,2}。由于 {1,2}a={1,2}b={2} {1,2},因此不再将其划分了,也即整 个划分只有两组:{0}和{1,2}。令状态1代表{1,2},即把原 来到达2的弧都导向1,并删除状态2。最后,得到如图2-4 所示的化简了的DFA M′。

编译原理考试试题与答案(汇总)

编译原理考试试题与答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号,正确的划√,错误的划×)(每个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.下面说法正确的是:A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法2.文法G[A]:A→b A→AB B→Ab B→a是( ):A 二型文法B 正规文法3.下面说法正确的是( ):A lex是一个词法分析器B yacc是一个语法分析器的生成器4.一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在( ):A 移进--归约冲突B 归约--归约冲突5.7.5 PL/0语言编译程序使用递归子程序法进行语法分析,他的文法必须满足( ):A LL(1)文法B SLR(1) 文法二、问答题问答第1题(6分)试对 repeat x:=b until b>a or (b<a and b=d) 的四元式序列给出第四区段应回填的指令地址,并指出真假出口链和链头及回填的次序。

应回填的值回填的次序真链头 E.true=(1) x:= b 真出口链( )(2) if b>a goto ( ) ( ) 真出口链( )(3) goto ( ) ( )(4) if b<a goto ( ) ( ) 假链头 E.false=(5) goto ( ) ( ) 假出口链( )(6) if b=d goto ( ) ( )(7) goto ( ) ( )(8) ...问答第2题(10分)某语言的拓广文法G′为:(0) S′→S(1) S → Db|B(2) D → d|ε(3) B → Ba|ε证明G不是LR(0)文法而是SLR(1)文法,请给出SLR(1)分析表。

问答第3题(5分)给出文法G[S]的LR(1)项目集规范族中I0项目集的全体项目。

G[S]为:S →S;V|VV →VaA|AA →b(S)| εI0:问答第4题(5分)文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。

G[M]: 1) S →VdB2) V →e3) V →ε 4) B →a5) B →Bda 6) B →ε状态ACTION GOTOd e a # S B V0 r3 S3 1 21 acc2 S43 r24 r6 S5 r6 65 r4 r46 S7 r17 S88 r5 r5问答第5题(7分)(1) 给出下列PL/0示意程序中当程序执行到D过程调用A过程后(即执行A过程体时)的栈式存储分配布局和用Display显示表时A过程最新活动记录的内容。

2023大学_编译原理试题及参考答案

2023大学_编译原理试题及参考答案

2023编译原理试题及参考答案编译原理试题一、是非题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个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:SxSx|y所识别的语言是_____。

A.( ) xyxB.( ) (xyx)__C.( ) xnyxn(n0)D.( ) x__yx__4.如果文法G是无二义的,则它的任何句子_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

A.( )源程序B.( ) 目标语言C.( ) 编译方法D.( ) 以上三项都是6.四元式之间的联系是通过_____实现的。

A.( ) 指示器B.( ) 临时变量C.( ) 符号表D.( ) 程序变量7.表达式(┐AB)(CD)的逆波兰表示为_____。

A. ( ) ┐ABCDB.( ) A┐BCDC.( ) AB┐CDD.( ) A┐BCD8. 优化可生成_____的目标代码。

A.( ) 运行时间较短B.( ) 占用存储空间较小C.( ) 运行时间短但占用内存空间大D.( ) 运行时间短且占用存储空间小9.下列______优化方法不是针对循环优化进行的。

A. ( ) 强度削弱B.( ) 删除归纳变量C.( ) 删除多余运算D.( ) 代码外提10.编译程序使用_____区别标识符的作用域。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)第一章1、将编译程序分成若干个“遍”是为了b.使程序的结构更加清晰2、构造编译程序应掌握a.源程序b.目标语言c.编译方法3、变量应当c.既持有左值又持有右值4、编译程序绝大多数时间花在上。

d.管理表格5、不可能是目标代码。

d.中间代码6、使用可以定义一个程序的意义。

a.语义规则7、词法分析器的输入是b.源程序8、中间代码生成时所遵循的是-c.语义规则9、编译程序是对d.高级语言的翻译10、语法分析应遵循c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到b.表格管理c.出错处理2、编译程序工作时,通常有阶段。

a.词法分析三、填空题b.语法分析c.中间代码生成e.目标代码生成1、解释程序和编译程序的区别在于是否生成目标程序2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。

3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。

4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题1、文法G:S→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)5、如果文法G是无二义的,则它的任何句子αa.最左推导和最右推导对应的语法树必定相同b.最左推导和最右推导对应的语法树可能不同c.最左推导和最右推导必定相同d.可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是a.短语b.句柄c.句型d.句子7、文法G:E→E+T|TT→T某P|PP→(E)|I则句型P+T+i的句柄和最左素短语为a.P+T和ib.P和P+Tc.i和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的自增赋值形式.。

相关文档
最新文档