东南大学编译原理试卷
- 格式:doc
- 大小:63.00 KB
- 文档页数:6
99年编悔原理一.已知疋规文法中的左线件文法Gt: STSaLSbLc试枸诜无E产生式的等价佑纯性艾法・井构造相应的确定有限自动机dm 耐I]状态I 换图叩可.二、已知正规文法G2:X->0Y| IZ|OY->OX| IY|IZ-> IX⑴该文法产生的语宫恳什么•讷用正规式我示(2)枸造最简的确定有限自动机M比并画出状态转换图三、已知上下文无关文法G3: E9ET+ITTTT和」FFTE|i(1)消除文法左递归,并给;II改写后文法产生式(2)给出文法「鹤话的个非终结符的first TH follow集,并山此判師它見否1丄⑴文法四、已知表达式(已拓广)G4: ETEE->E i-E|i(!)试构进文法G4的LR(I)项『1集观范换(2)若忖咖从右结合率.WfftJh LR 5)折农五、已知文法G5:Z->bMbM-^(Ma) | a(1)试枸造算符优先分折我(2)若某相邻的终结符讣间廉亦a<=b曲伸关系,那么在进行外符优先分忻倣规约动作时,在寻找栈顶的素短语符号冷时翌杳吾它与哪个产生式右部符号小匹配.例如栈顶申・・.・aAba, (a b JffiT V T, A J®于(VN5)・ a<*b, aw V* )为已知可规约•而现右产生式X J aAba.M取素短语冰ba进行规约:苦只有产生武YT Aba.W么就取Aba进行规约.试按此规定的体法给:IH5^b((na)a)b//的%符优先分折过阳.沢、初译成中间代码I、将如下程作段酬邙成麻紛匕JiWL维数细po卯1屮・设讪血为1t:=!6;b:«20;while tob doelseb:«b -t;2、译布尔茨达式成四元式JT 列,并猜出待烦頁假傩序号.(a>b 卜 1) and not (c-»2<d) or f(x)注:f(x)为布尔函数七.有一个如下计算mF 的C 语宫程存,试给出运行时誥个栈式数据结构•数抵区的活 动记录结枸如右用.(数抿区从k 单元开始缩址•除返回他址不轨外.其余都耍橫.)八、乜知如下程序段a:«l;while a<=IO dobeginif aob then A(a, bJc^AJa, b] » 2;a:=a+1end; 1、 按语法和导生成四元式中间代码序列2、 将中何代码序迥划倔水块.画川程用流图,并J&tBM 环结点集3、 执行循环中代码外捉、啸度减弱优化和基木块内侧除公共了茨达武优化,泉后画;||包含 优化后的中何代码的稈序流图・注:数细按行疗放,侮个下标变駅占一字編址,甘地址为叙kkA int m;«n)int n;(int c;if(n= =0) c=m; elsec= f(n-l)*2; rettim(c))tnaii1()(int n°2;m=5;函妆返回值 局部变別区 主用用m 亦的数抿区函数数用区。
《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。
东 北 大 学秦 皇 岛 分 校课程名称: 编译原理 试卷: (B )答案 考试形式: 闭卷授课专业: 计算机科学与技术 考试日期: 年 月 日 试卷:共 2 页 题号 一 二 三 四 总分得分 阅卷人一、填空题(每空2分,共30分)1、编译程序的整个过程可以从逻辑上划分为词法分析、 语法分析 、语义分析、中间代码生成、 代码优化 和目标代码生成等几个阶段,另外还有两个重要的工 作是 理 和出错处理。
表格管2、规范规约中的可归约串是 句柄 ,算符优先分析中的可归约串是 最左素短语 。
3、语法分析方法主要可分为 自顶向下 和 自底向上 两大类。
4、LR (0)文法的项目集中不会出现 移进-归约 冲突和 归约-归约 冲突。
5、数据空间的动态存储分配方式可分为 栈式 和 堆式 两种。
6、编译程序是指能将 源语言 程序翻译成 目标语言 程序的程序。
7、确定有穷自动机DFA 是 NFA 的一个特例。
8、表达式 (a+b)*c 的逆波兰表示为 ab+c* 。
二、选择题(每题2分,共20分)1、LR 语法分析栈中存放的状态是识别 B 的DFA 状态。
A 、前缀B 、可归前缀C 、项目D 、句柄 2、 D 不可能是目标代码。
A 、汇编指令代码B 、可重定位指令代码C 、绝对机器指令代码D 、中间代码 3、一个控制流程图就是具有 C 的有向图A 、唯一入口结点B 、唯一出口结点C 、唯一首结点D 、唯一尾结点 4、设有文法G[S]:S →b|bBB →bS ,则该文法所描述的语言是C 。
A 、L (G )={b i |i ≥0}B 、L (G )={b 2i |i ≥0}C 、L (G )={b 2i+1|i ≥0}D 、L (G )={b 2i+1|i ≥1}5、把汇编语言程序翻译成机器可执行的目标程序的工作是由 B 完成的。
A 、编译器B 、汇编器C 、解释器D 、预处理器 6、在目标代码生成阶段,符号表用于 D 。
编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理:A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 链式文法5. 语义分析的目的是:A. 检查源代码的语法是否正确B. 检查源代码的语义是否正确C. 将源代码转换为目标代码D. 优化源代码6. 代码生成阶段,编译器将抽象语法树转换成:A. 目标代码B. 源代码C. 汇编代码D. 机器代码7. 编译优化中,常量折叠是一种:A. 局部优化B. 全局优化C. 过程间优化D. 模块内优化8. 编译器的前端主要负责:A. 源代码的输入B. 目标代码的生成C. 源代码的解析和翻译D. 运行时错误检测9. 编译器的后端主要负责:A. 词法分析B. 语法分析C. 代码优化D. 目标代码的生成和链接10. 以下哪个是编译原理中常用的数据结构?A. 栈B. 队列C. 链表D. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。
2. 描述语法分析中自顶向下分析和自底向上分析的区别。
3. 解释编译优化的重要性,并给出一个优化的例子。
三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。
2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。
编译原理复习材料选择题1. 文法S→0S | S1 | 0的语言是( )。
A. { 0 m1m| m >=0 }B. { 0 m1m| m >=1 }C. { 0 m1n | m>=1,n>=0 }D. { 0 m1n | m>=0,n>=1 }2. 描述程序语言所采用的Ⅲ型文法是( )。
A. 短语文法B.正规文法C.上下文无关文法D.上下文有关文法3. 状态转换图实现的简单方法是使每个状态结对应( )。
A.一个终结符B.一个非终结符C.一段小程序D.一个函数4. 规范归约的关键问题是寻找( )。
A. 最左素短语B.句柄C.直接短语D.短语5. 一个算符文法的任何产生式的右部都不含有两个相继的( )。
A.终结符B.非终结符C.终结符和非终结符D.空字6. 算符优先分析法的关键在于规定( )。
A.算符优先顺序和结合性质B.算符优先顺序C.结合性质D.终结符和非终结符之间关系7. 优先函数的优点是( )。
A.形象直观B.便于进行比较运算C.语法分析速度快D.语法分析方法简单8. 文法符号的属性通常分为( )两类。
A. 共用属性和私有属性B.固有属性和可变属性C.语法属性和语义属性D.综合属性和继承属性9. 在程序流图中,组成循环的结点序列应满足( )A. 它们是强连通的B.它们中间有唯一的入口结点C.它们中间有一条回边D.它们是强连通的且有唯一的入口结点10. 在利用寄存器R生成T1:=C/B的目标代码同时,还应记录信息( )。
A. C/B在T1中B. T1在C/B中C. R含有T1, T1在R中D. R含有C/B, C/B在R中1.D2.B3.C4.B5.B6.A7.B8.D9.D 10.C1. 编译方式与解释方式的根本区别在于( )A.是否生成目标代码B.是否生成中间代码C.是否生成汇编代码D.是否生成优化代码2. 编译程序生成的目标程序( )A.一定是机器语言的程序B.不一定是机器语言的程序C.一定不是机器语言的程序D.一定是汇编语言的程序3. 设字母表∑={0,1,x,y}, 则∑上的正规式ε所对应的正规集为( )A.εB. {ε0,1,x,y }C. {ε}D.Φ4. *假设G是一个文法,S是文法的开始符号,如果S===> x,则称x是( )A.短语B.句柄C.句子D.句型5. 一个算符文法的任何产生式的右部都不含有两个相继的( )A.终结符B.非终结符C.终结符和非终结符D.ε字6. 设有文法G[A]:A →Ax|Ay|Aa|Ac|a|b|c,下列哪些是该文法的句子( )(1) aby (2) aycyx (3) aaa (4) bcxyA.(1) (2) (3)B. (1) (2) (4)C.(2) (3) (4)D.全部7. LR分析器的核心部分是( )A.带先进后出存贮器的DFAB.一张动作表C.一张GOTO表D.一张分析表8. 在程序流图中,组成循环的结点序列应满足( )A.它们是强连通的且有唯一的入B.它们中间有唯一的入口结点口结点C.它们中间有一条回边D.它们是强连通的9. 表达式a≤b+c∧a>d∨a+b≠e的后缀式式为( )。
东南大学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的一个句子。
东南大学编译原理试卷S o ut he a s t Uni v e r si ty E xa mi na ti o n P a per (i n-t e r m) Course Name Principles of Compiling Examination Term Score Related Major Computer &SoftwareExamination Form Close test Test Duration120 MinsThere are 5 problems in this paper. Y ou can write the answers inEnglish or Chinese on the attached paper sheets.1.Please construct context-free grammars with ε-free productionsfor the following languages (20%).(1){i|i∈N(Natural number), and i is a palindrome, and (i mod 5)=0}(2){ω| ω∈(a,b,c,d)* and the numbers of a’s ,b’s and c’s occurred inω are even, and ωstarts with a or c , ends with d }2.Please construct a DFA with minimum states for the followingregular expression. (20%)(((a|b)*a)*(a|b))*(a|b)3.Please eliminate the left recursions (if there are)and extractmaximum common left factors (if there are) from the followingcontext free grammar, and then decide the resulted grammar iswhether a LL(1) grammar by constructing the related LL(1) parsing table.(20%) Please obey the rules of examination. If you violate the rules, your answer sheets will be invalid共 2 页第 1 页S→iEtS|iEtSeS|aE→E and F|FF→ F or G|GG→b4.Please construct a LR(1) parsing table for the followingambiguous grammar with the additional conditions that all θi (i=1,2) has the properties of right associative law, andθ2has lower precedence than θ1.(20%)E→E θ1 E| E θ2 E |(E)|i5.Please show that if a grammar G is a LL(1) grammar, then Gmust be a LR(1) grammar (20%):共 2 页第 2 页。
南工大编译原理期末试卷2019篇一:一、简答题1.什么就是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。
2.请写出文法的形式定义?请问:一个文法g抽象地则表示为四元组 g=(vn,vt,p,s)–其中vn表示非终结符号– vt则表示破灭符号,vn∪vt=v(字母表),vn∩vt=φ– s是开始符号,– p就是产生式,形例如:α→β(α∈v+且至少所含一个非破灭符号,β∈v*)3.语法分析阶段的功能是什么?请问:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(基准:程序、语句、表达式)。
确定整个输入串是否构成语法上正确的程序。
4.局部优化存有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—撷取传播优化技术3—删除无用代码优化技术4—对程序展开代数并集转换(减少运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术概述——对程序展开代数并集转换(代数精简)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编程过程分后哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。
每个阶段把源程序从一种则表示转换变成另一种则表示。
6. 什么是文法?请问:文法就是描述语言的语法结构的形式规则。
就是一种工具,它可以用作严苛定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。
7. 语义分析阶段的功能就是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义展开审查。
8.代码优化须遵循哪些原则?请问:等价原则:不发生改变运转结果有效原则:优化后时间更短,占用空间更少不划算原则:应用领域较低的代价获得较好的优化效果9.词法分析阶段的功能是什么?请问:逐个读入源程序字符并按照构词规则切分成一系列单词任务:初始化源程序,输入单词符号—滤掉空格,跳过注释、换行符—跟踪下划线标志,表示源程序失效的行列边线—宏展开,……10.什么就是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等有关信息。
S o u t h e a s t U n i v e r s i t y E x a m i n a t i o n P a p e r(A) Course Name Principles of Compiling Examination Term08-09-2 Score
Related Major Computer Science &
Technology
Examination Form Close test Test Duration 150 Mins
There are 8 problems in this paper. You can write the answers in
English or Chinese on the attached paper sheets.
1.Please construct context-free grammars with ε-free productions
for the following language (10%).
{ω| ω∈(a,b,c)* and the numbers of a’s and b’s and c’s occurred in
ω are even, and ωstarts with b , ends with a or c}
2.Please construct a DFA with minimum states for the following
regular expression. (10%)
(a|(a|(a|b*))*)*(a|b*)
3.Please eliminate the left recursions (if there are)and extract
maximum common left factors (if there are) from the following
context free grammar, and then decide the resulted grammar is
whether a LL(1) grammar by constructing the related LL(1)
parsing table.(15%)
P→b S d Please obey the rules of examination. If you violate the rules, your answer sheets will be invalid
共 6 页第1 页
S→S ; A|A
A→B|C
B→a
C→D|D e A
D→E B
E→i F t
F→F o G|G
G→b
4.Please show that the following operator grammar is whether an
operator precedence grammar by constructing the related parsing table. (10%)
E→E a F|F
F→F o T|T
T→(E)|n T|b
5.Please construct a LR(1) parsing table for the following
ambiguous grammar with the additional conditions that *, ⊗and⊕have the properties of left associative law, and* has higher precedence than ⊗, ⊗has higher precedence than
共 6 页第2 页
⊕.(15%)
E→E⊕E|E⊗E|E*|(E)|a|b
6.Please construct an annotated parse tree for the input string
123.123 where the syntax-directed definition is as following (10%): Productions Semantic Rules
S→L(1).L(2) S.val=L(1).val+L(2).val/4L(2).len
S→L S.val=L.val
L→L(1)B L.val=L(1).val*4+B.val, L.len=L(1).len+1
L→B L.val=B.val, L.len=1
B→0 B.val=0
B→1 B.val=1
B→2 B.val=2
B→3 B.val=3
7. We assume that the storage organization and the form of activation record used in C language program run-time stack storage allocation are as following. Please construct the run-time stack map when it gets the maximum size at the second time for the following C program (10%).
共 6 页第3 页
Storage Organization of C Language
The C program is as the following:
#include <stdio.h>
int x,y;
int main()
{
x=6;
y=f(x);
}
int f(int n)
{
if (n<=1)
return 1;
else if(n==2)
return 2;
else
{
int t1,t2,t3,t;
t1=f(n-1);
t2=f(n-2);
共 6 页第4 页
t3=f(n-3);
t=t1+t2;
t=t+t3;
return t
}
}
Notes: 1) Here we assume that the caller’s sp of Main function is the start address of global variable data area, and the returned address in the activation record of a function (including Main function) is filled by the operating system automatically, you might not care it.
2) The initial value of variable X is 6, the start address of stack used in the program is K.
3) The stack map may get its maximum size for several times, here we ask you draw the stack map at maximum size for the second time.
8. Please translate the following program fragment into three address code sequence, divide the TAC sequence into basic blocks, construct the flow graph and find out all back edges in the flow graph. (20%) i=1;
while (i<=10) {
j=1;
while (j<=10) {
c[i,j]=0;
j=j+1
}
i=i+1;
}
i=1;
while (i<=10) {
j=1;
while (j<=10) {
k=1;
while (k<=10) {
共 6 页第5 页
if (a[i,k]!=0 && b[k,j]!=0)
c[i,j]=c[i,j]+a[i,k]*b[k,j];
k=k+1;
}
j=j+1;
}
i=i+1;
}
Notes: Here we assume that the declarations of array A,B,C are array [1..10,1..10], each data element of array A,B,C would use 4 storage unit, and the start address of array A’s storage area is addrA, the start address of array B’s storage area is addrB, the start address of array C’s storage area is addrC.
共 6 页第6 页。