编译原理答案.docx

上传人:b****8 文档编号:9775369 上传时间:2023-02-06 格式:DOCX 页数:14 大小:163.97KB
下载 相关 举报
编译原理答案.docx_第1页
第1页 / 共14页
编译原理答案.docx_第2页
第2页 / 共14页
编译原理答案.docx_第3页
第3页 / 共14页
编译原理答案.docx_第4页
第4页 / 共14页
编译原理答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

编译原理答案.docx

《编译原理答案.docx》由会员分享,可在线阅读,更多相关《编译原理答案.docx(14页珍藏版)》请在冰豆网上搜索。

编译原理答案.docx

编译原理答案

 

编译原理答案(总11页)

一、填空题

1. 汇编程序将            翻译成               ;编译程序将          翻译成               。

2. 编译程序工作工程可以划分为           、            、               、       和                  等5个基本阶段,同时还会伴有              和          。

3. 对编译程序而言,输入数据是           ,输出数据是             。

4. 已知文法G[E]:

E—>T|E+T|E-F, T->F|T*F|T/F,,F—>(E)|I(“,”是间隔符号,不是文法中的符号)。

该文法的开始符号(识别字符)是     ,终结符号集合VT是        ,非终结符号结合VN是           ,句型T+T*F+i的短语有                     。

该文法消除直接左递归,改写后的文法为E->            ,T->             ,F->        .

5. Chomsky定以来寺中形式语言的文法分别为:

           文法(又称        文法)、           文法(又称        文法)、           文法(又称        文法)、           文法(又称        文法)。

6. 编译过程中扫描器所完成的任务是从             中识别出一个个具有          。

7. 确定的有穷自动机是一个         ,通常表示为             。

8. LL(k)分析中,第一个L的含义是            ,第二个L的含义是          ,“k”的含义是               。

9. LL

(1)分析中,第一个L的含义是            ,第二个L的含义是          ,“1”的含义是               。

(0)分析中,“L”的含义是            ,“R”的含义是          ,“0”的含义是               。

(1)分析中,“L”的含义是            ,“R”的含义是          ,“1”的含义是               。

(1)分析中,“L”的含义是            ,“R”的含义是          ,“1”的含义是               。

13.算术表达式:

a*(-b+c)的逆波兰式表示为:

                     。

14.算术表达式:

a+b*(c+d/e)的逆波兰式表示为:

                     。

15.在编译程序中安排中间代码生成的目的是                和                。

16.语法制导的翻译程序能同时进行           分析和              分析。

17.根据所涉及的程序范围,优化可分为        、          、             三种。

二、简单题

1.  有人认为编译程序的词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成五个组成部分是缺一不可的,这种看法正确吗说明理由。

2.  多边扫描的程序是高质量的编译程序,优于单遍扫描的编译程序”,对吗为什么

3.  LR分析器与优先分析器在识别被归约串时的主要异同时什么

三、给出生成下述语言的上下文无关的文法

{1n0m1m0n|n,m>=0}

{WaWr|W属于{0|1}*,Wr表示W的逆}

四、给出生成下列语言的三型文法:

{an|n>=0}

{anbm|n,m>0}

{anbmck|n,m,k>=0}

五、构造正规式1(0|1)*101相应的最小DFA。

六、构造正规式b(a|b)*bab相应的最小DFA。

七、已知文法G[S]:

S->aH;H->aMd|d;M->Ab|ε;A->aM|e.

1. 求每个非终结符号的FIRST集和FOLLOW集;

2. 判定该文法是否为LL

(1)文法,如是,构造LL

(1)预测分析表;

3. 若是LL

(1)文法,请给出输入串aaabd#的预测分析过程,并说明该输入是G[S]的句子。

八、已知文法G[B]:

B->BoT|T;T->TaF|F;F->nF|(B)|t|f。

1. 计算G[B]的FIRSTVT和LASTVT;

2. 构造G[B]的算符优先关系表并说明G[B]是否为算符有限文法;

3. 若是算符优先文法,请给出输入ntofat#的分析过程,并说明该输入是G[B]的句子。

九、文法G[S]:

S->AB;A->aBa|ε;B->bAb|ε.

1.引入产生式S’->S,对文法进行改造为G[S’],计算G[S’]的First和Follow集,由此判断该文法是否是SLR

(1)文法;

2.构造G[S’]的项目集族和识别活前缀的DFA;

3.若是SLR

(1)文法,请构造它的分析表;

4.给出输入baab#的SLR

(1)分析过程。

十、对下图的流图:

1. 求出流图个节点的n的必经节点集D(n);

2. 求出流图的回边;

3. 求出流图中的循环。

 

 

十一、将下面的程序段划分为基本块并作出其程序流图。

ReadA,B

F:

=1

C:

=A*A

D:

=B*B

IfC

E=A*A

F=F+1

E:

=E+f

WriteE

Halt

L1:

         E:

=B*B

             F:

=F+2

             WriteE

             IfE>100gotoL2

Halt

L2:

         F:

=F-1

             GotoL1

十二、有下面基本块:

S0:

=2

S1:

=3/S0

S2:

=T-C

S3:

=T+C

R:

=S0/S3

H:

=R

S4:

=3/S1

S5:

=T+C

S6:

=S4/S5

H:

=S6*S2

1. 应用DAG对其进行优化,写出优化后的基本块中四元式;

2. 假定只有R、H在基本块出口式活跃的,写出优化后的四元式序列

十三、翻译下列关于LEX一点介绍的英文。

2.LexSource.

ThegeneralformatofLexsourceis:

{definitions}

%%

{rules}

%%

{usersubroutines}

wherethedefinitionsandtheusersubroutinesareoftenomitted.Thesecond%%isoptional,butthefirstisrequiredtomarkthebeginningoftherules.TheabsoluteminimumLexprogramisthus

%%

(nodefinitions,norules)whichtranslatesintoaprogramwhichcopiestheinputtotheoutputunchanged.

IntheoutlineofLexprogramsshownabove,therulesrepresenttheuser’scontroldecisions;theyareatable,inwhichtheleftcolumncontainsregularexpressions(seesection3)andtherightcolumncontainsactions,programfragmentstobeexecutedwhentheexpressionsarerecognized.Thusanindividualrulemightappear

integer    printf("foundkeywordINT");

tolookforthestringintegerintheinputstreamandprintthemessage‘‘foundkeywordINT’’wheneveritappears.InthisexamplethehostprocedurallanguageisCandtheClibraryfunctionprintfisusedtoprintthestring.Theendoftheexpressionisindicatedbythefirstblankortabcharacter.IftheactionismerelyasingleCexpression,itcanjustbegivenontherightsideoftheline;ifitiscompound,ortakesmorethanaline,itshouldbeenclosedinbraces.Asaslightlymoreusefulexample,supposeitisdesiredtochangeanumberofwordsfromBritishtoAmericanspelling.Lexrulessuchas

colour        printf("color");

mechanise  printf("mechanize");

petrol       printf("gas");

wouldbeastart.Theserulesarenotquiteenough,sincethewordpetroleumwouldbecomegaseum;awayofdealingwiththiswillbedescribedlater.

十四、翻译下列有关yacc的一些英文介绍。

Introduction

 

YACCisshortforYetAnotherCompilerCompiler. Apunonthenumberofcompiler,orparser,constructiontoolsthatwerebeingcreatedatthetime. Itisatoolthat,givenaBNF(Backus-NaurForm)stylespecificationofagrammar,cangenerateacorrespondingparser. ItisworthnotingthatYACCwillnotaccepteverygrammarpresentedtoit. Farfromit. Howevertheclassofgrammarsthatitdoesacceptisgenerallypowerfulenoughformostprogrammingneeds.

YACCwasoriginallywrittenbyS.C.JohnsononaUNIXplatform. ItiscloselytiedinwithLex. Alexicalanalysergeneratingtool. SincethentherehavebeenmanyflavoursofYACCimplemented. PerhapsthemostnotablebeingBISONandBYACC.

 YACCgenerateswhataretermedLRparsers. Thismeansthattheyscantheinputfromlefttoright,theLbit,andproducearightmostderivationfromthebottomup,theRbit. LRparsersarealsocalledbottom-upparsers. TheyaresomewhatdifferenttoLLparsers. SimilartoLRparsersthesealsoscantheinputfromlefttoright,butthistimeconstructaleftmostderivationinstead. LLparsersarealsocalledtopdownparsers. Theyhavethedistinctadvantagethattheycangenerallybeimplementedbyhand. Thereareanumberoftechniquesfordoingthisincludingpredictiveparsingandrecursivedescentparsing. TherearenowalsoanumberoftoolswhichcanconstructLLparsersautomatically. Havingsaidallthis,itisgenerallyatimeconsumingtasktocodeaparserbyhand,andanLRparserconstructiontechniqueisinherentlymorepowerfulthananLLone.

Forbothtypesofparser,eitherLRorLL,thereisgenerallyanextrapieceofinformationwhichspecifieshowmanylookaheadtokenstheparserusestodecidewhatactiontoperform. ForinstanceanLR

(1)parserusesonetokenoflookahead. ThisanimportantpointbecauseYACCgeneratesaparserwhichusesonetokenoflookaheadaswell. Thatistheparsermustdecide,giventhesymbolsthatithasalreadyseen,andthecurrentlookaheadtokenwhatitneedstodonext.

答案

编译原理A卷参考答案及评分参考2008年12月,朱明放

一、1.汇编语言的程序,机器语言的程序;高级语言的程序,汇编语言或机器语言的程序

2.源程序,目标程序。

{+,-,*,/,i,(,)},{E,T,F},短语:

T+T*F+i,T+T*F,T,T*F,i,

4.从左到右的扫描,分析过程采用最左推导,需要向右查看一个符号便可决定如何推导。

5.从左到右的扫描,分析过程采用最右推导的逆过程-最左规约,向后查看0个符号决定分析动作。

6.ab!

c+*

7.局部优化,循环优化,全局优化

二、错。

在这5个部分中,词法分析,语法分析,语义分析和目标代码生成是必须的,代码优化是为了提高目标代码的质量而引入的,不是必须的,没有代码优化编译程序同样生成目标代码。

三.产生式的集合P:

S→0S0|aSa|a。

四、→aS|ε。

2.S→aS|aA|ab,A→bA|ε。

五、解:

步骤上先NFA,确定化,最小化。

对于本题确定化后即最小了。

0

X

1

2

3

4

5

Y

1

ε

1

ε

1

0

1

NFA

1

X

A

B

C

Y

1

0

1

0

1

DFA

1

0

0

六、解:

(S’)={a,b,ε},First(S)={a,b,ε},First(A)={a,ε},First(B)={b,ε};

Follow(S’)={#},Follow(S)={#},Follow(A)={#,b},Follow(B)={a,#}.

2.构造活前缀的DFA如下,项目集为每个节点内的项目。

 项目集0,2,3,5中存在移近-规约冲突。

在I0和I5中,因为Follow(A)={b,#}与Select(A->.aBa)交集为空;I2和I3中select(B->.bAb)交Select(B->.)为空,这样所用的移近规约冲突解决了,因此是SLR

(1)文法。

3.构造分析表如下:

4.对aaabd#的预测分析过程如下:

七、解:

D

(1)={1},D

(2)={1,2},D(3)={1,2,3},D(4)={1,2,3,4},D(5)={1,2,3,5},D(6)={1,2,3,6},D(7)={1,2,7},D(8)={1,2,7,8}

回边:

7→2;

循环:

{2,3,4,5,6,7}

八、1基本块的DAG图如下。

优化后四元式序列为:

S0:

=2

S4:

=2

S1:

=

S2:

=T-C

S3=T+C

S5:

=S3

R=2/S3

S6:

=R

H:

=S6*S2

2.优化后的四元式序列为:

S2:

=T-C

S3=T+C

R=2/S3

H:

=R*S2

九、略。

能翻译点大意就得分。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1