编译原理实验心得.docx

上传人:b****1 文档编号:2295103 上传时间:2022-10-28 格式:DOCX 页数:10 大小:19.55KB
下载 相关 举报
编译原理实验心得.docx_第1页
第1页 / 共10页
编译原理实验心得.docx_第2页
第2页 / 共10页
编译原理实验心得.docx_第3页
第3页 / 共10页
编译原理实验心得.docx_第4页
第4页 / 共10页
编译原理实验心得.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

编译原理实验心得.docx

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

编译原理实验心得.docx

编译原理实验心得

编译原理实验心得

第一章、引论

经过这一章节的学习我学到了如下知识:

Ⅰ语言问世以来,计算机高级语言的到迅速开展。

高级语言给编程带来了极大的方便,但是计算机只能直接执行用机器语言编写的程序,不能直接执行用高级语言编写的程序。

要执行高级语言程序,必须提供该语言的翻译程序。

翻译有编译和解释两种方式。

编译方式是先将源程序翻译成目标程序,然后再执行目标程序,相应的翻译程序称为编译程序。

解释方式是边翻译边执行,相应的翻译程序称为解释程序。

2、编译理论和技术主要研究和讨论编译程序的构造和设计原理。

3、编译程序一般包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格处理程序和出错处理程序等。

4、编译过程可采用分遍形式,与编译过程可由一遍或多遍完成。

5、对于具有自编译性的高级语言,可运行自展技术构造其编译程序,即将源程序分解成核心局部和扩大局部,对核心局部进展屡次扩大之后得到源语言。

6、一个具有自编译性的高级语言在宿主机上的编译程序可以移植到目标机上。

7、LEX是一个有代表性的词法分析程序生成器。

YACC是一种基于LALR〔1〕分析法的语法分析程序生成器。

但凡有助于减少编写翻译程序工作的软件或工具包,统称为翻译程序的编写系统。

8、传统的串行编译程序只适应于SISD结构计算机,具有并行处理功能的并行编译程序如此适于SISD和MISD结构计算机。

第二章、形式语言概论

1、形式语言由Chomsky于1956年提出,其理论的形成和开展推动了计算机考完学技术开展。

形式语言理论是编译原理的重要理论根底。

2、文法是形式语言中十分重要的根本概念。

文法可以定义为一个四元组,文法G=〔VN,VT,P,S〕。

其中,VN是一个非终结符集,VT是一个终结符集,P是一个产生式集,S属于VN是文法的识别符。

3、Chomsky将文法分类为0型、1型、2型、3型文法。

程序设计语言的语法规如此属于3型文法〔正规文法〕。

程序设计的语言和语义局部,一般属于1型文法〔上下文有关文法〕,但实际上都是采用2型文法〔上下文无关文法〕来描述语法。

4、对于一个文法,我们需要研究它的句型、句子和语言。

要识别一个符号串是不是一个文法的合法句子,需要对它进展语法分析。

分析方法有两类,一列是自上而下分析法,另一类是自下而上分析法。

5、为了进展语法分析,需要事先将文法的产生式存储在计算机中,可以为文法建立一个产生式表,把文法的所有产生式都放在这个产生式表中。

为了在分析过程中能迅速地查找到相应的产生式,还可以再建立一个目录表。

第三章、有穷自动机

1、自动机是一种能进展运算并能实行自我控制的装置。

它是描述符号串处理的强有力地工具,是研究扫描器的理论根底。

有穷自动机分为确定有穷自动机〔DFA〕和非确定有穷自动机〔NFA〕。

2、DFA=〔Q,∑,t,q0,F〕,Q是状态集,∑是输入字母表,t:

Q×∑→Q,q0属于Q是开始转台,F是终止状态集。

3、NFADFA=〔Q,∑,t,q0,F〕,t为Q×∑→Q的子集上的函数,Q0是开始状态集。

4、对于NFA可采用子集法和造表法进展确认化,将其转化为等价的DFA。

对DFA化简的根本思想是将状态集分解成假如干个互不相交的子集,使每个子集中的状态都是等价的,而不同子集的状态是可区分的。

5、正规文法与FA有着特殊的关系。

从正规文法可直接构造其自动机;反之,由自动机也可以直接构造其正规文法。

6、正规表达式与FA也有着特殊的关系。

对于字母表∑上的任意一个正规表达式e,一定可以构造一个NFAM,使L〔M〕=L〔e〕;反之,对于一个具有输入字母表∑的NFAM,在∑上也可以构造一个正规表达式e,使L〔e〕=L〔M〕。

7、正规语言可用正规文法描述,也可以用正规表达式描述。

8、DFA在计算机中有两种表示,一种是矩阵表示,另一种是表结构。

第四章、词法分析

1、词法分析是编译过程的第一阶段,是编译过程的根底。

它负责对源程序扫描,从中识别出一个个的单词。

2、单词是程序设计语言的根本语法单位和最小的语义单位。

单词一般分为五类,即关键字〔又称为保存字或根本字〕、标识符、常数、运算符和界限符。

3、源程序经词法分析程序识别的单词背表示成机内符,机内符包括单词类别和单词自身值两局部。

4、词法分析程序课利用状态转换图进展设计。

状态转换图是一个有向图,每个节点表示一个状态,其中有一个初始状态,至少有一个终止状态。

5、词法分析程序还可以根据正规文法或正规表达式来进展设计、

第五章、自上而下语法分析

1、递归下降分析程序与其设计

例、设文法G[S]:

S→〔A〕|aAb

A→eA′|dSA′

A′→dA′|e

子程序P〔S〕:

READ(ch)

ifch=′(′then

begin

READ(ch);P(A);

ifch=′)′thengotoL

elseerror

end

elseifch≠′a′thenerror

elsebegin

READ(ch);P(A);

ifch=′b′thengotoL

elseerror

end

L:

READ(ch);

return

子程序P(A):

ifch=′e′then

begin

READ(ch);gotoL

end

ifch≠′d′thenerror

P(S);

L:

P(A′);

return

子程序P(A′):

L:

ifch=′d′then

begin

read(ch);gotoL

end

elseifch=′d′thengotoL′

elseifch=′)′thengotoL′

elseerror

L′:

return

2、带回溯的自上而下分析算法

INIT:

p:

=1;

k:

=1;

j:

=1;

s[k]:

=(z,0,0,0);

gotoTEST;

TEST:

ifGOALinVTthen

ifGOAL=INPUT[j]then

begin

j:

=j+1;gotoSUCC

end

elsegotoFALL;

i:

=GOAL

gotoLOOK;

LOOK:

ifGRAMMAR[i]=′|′then

ifFATHER≠0thengotoSUCC

elseSTOP

ifGRAMMAR[i]=′$′then

ifFATHER≠0thengotoFALL

elseSTOP

k:

=k+1;

s[k]:

=(GRAMMAR[i],O,P,O,SON);

SON:

=k;

p:

=k;

gotoTEST;

SUCC:

P:

=FATHER;

i:

=i+1;gotoLOOK;

FALL:

P:

FATHER;

SON:

=S[SON].BRO;

K:

=K-1;

gotoATRY;

ATRY:

ifSON=0then

begin

whileGRAMMAR[i]≠′1′do

i:

=i+1;

i:

=i+1;gotoLOOK

end;

i:

=i-1;

P:

=SON;

ifGOALinVNthen

gotoATRY;

j:

=j-1;

gotoFALL;

第六章、自下而上分析和优先分析方法

1、自下而上分析

自下而上分析法是一种“移进-归约〞法。

它用到一个符号栈S,待检查符号串的符号逐个被“移进〞S栈,当栈顶符号串与某个产生式右部相匹配时,这个符号串被替换成〔“归约〞为〕该产生式左部非终结符。

例子。

设文法G[S]:

S→(T)|a|e

T→S|T,S

因为S=>+(T,S),T=>+(a)

所以〔a〕是句型〔〔a〕,S〕相对于T的短语。

再因为

S=>+((T),S),T=>T,S

所以T,S是句型〔〔〔T〕,S〕,S〕是相对于T的直接短语。

2、有关文法的一些关系尚未根本性质

设R施定义在集合∑上的一个关系,如果对任何关系x属于∑,都有xRx

如此称关系R是自反的。

如果对任何x,y属于∑,xRy,都有yRx,如此称关系R是对称的

对任何x,y,z属于∑,如果能由xRy,都有yRx,如此称关系R是对称的。

3、Warshall算法

Warshall算法是用于求关系传递闭包的一种算法。

以下是描述这个算法的BASIC程序:

10fori=1ton

20forj=1ton

30ifM(j,i)=0then80

40fork=1ton

50ifM(i,k)=0then70

60letM(j,k)=1

70nextk

80nextj

90nexti

100end

4、简单优先分析方法

简单优先分析法是一种典型的自下而上分析方法。

它对符号串进展语法分析的过程,实际是一个归约的过程。

在这个归约过程中,它根据文法符号之间的简单优先关系来寻找符号串中课进展归约的字串,此子串称为句柄。

5、两种优先分析方法的比拟

①两种方法都是自下而上语法分析法。

它们对一个符号串进展分析的过程,实际上是对这个符号串进展归约的过程。

在归约的每一步,它们都要寻找句型的一个可归约子串

②两种方法都引入优先关系,并创建了优先关系矩阵。

优先关系以与优先关系矩阵是确定句型的课归约子串的根据

③由于算符优先方法只在终结符之间建立优先关系,在归约过程中,它不对单产生式进展归约,因而比简单优先分析法成效更高。

第七章、自下而上的KR〔K〕分析方法

1、拓广文法

E′→E

E→E+T|T

T→T*F|F

F→(E)|id

假定I={[E′→·E]},那么CLOSURE(I)如此包含下面的项目:

E′→·E

E→·E+T

E→·T

T→·T*F

T→·F

F→·(E)

F→·id

计算CLOSURE的过程如下:

procedureCLOSURE(I);

begin

repeat

for

until

returnI;

end;

2、LR〔0〕项目集规X族

procedureITEM(G′);

begin

C:

={CLOSURE({S′→·S})};

repeat

forC中每个项目集I和I中每个紧接“·〞后的不同文法符号Xdo

ifgoto〔I,X〕非空且不属于Cthen

将goto〔I,X〕加到C

untilC不再增大;

end;

最终得到的C就是拓广文法G′的LR〔0〕项目集规X族。

3、列举

考虑文法G〔S〕:

S→A|B

A→aAb|c

B→aBb|d

其拓广文法G′(S)为

0S′→S

1S→A

2S→B

3A→aAb

4A→c

5B→aBb

6B→d

文法G′(S′)的根本LR〔0〕项目集为

1S′→·S

2S′→S·

3S→·A

4S→A·

5A→·aAb

6A→a·Ab

7A→aA·b

8A→aAb·

9A→·c

10A→c·

11S→·B

12S→B·

13B→·aBb

14B→a·Bb

15B→aB·b

16B→aBb·

17B→·d

18B→d·

4、给定项目集I,X是一个文法符号,计算I的闭包CLOSURE(I)的算法是:

procedireCLOSURE(I)

beginI中的项目都属于CLOSURE〔I〕;

repeat

for

doif[]

untilI不再增大

returnI;

end;

第八章、语法制导翻译法

任何编译程序都可以看作这样一种翻译程序:

它将用某种源程序语言写的程序〔源程序〕转换成等价的用某种目标语言

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

当前位置:首页 > 求职职场 > 简历

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

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