编译原理实验心得Word文件下载.docx
- 文档编号:15212654
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:10
- 大小:19.55KB
编译原理实验心得Word文件下载.docx
《编译原理实验心得Word文件下载.docx》由会员分享,可在线阅读,更多相关《编译原理实验心得Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
要识别一个符号串是不是一个文法的合法句子,需要对它进展语法分析。
分析方法有两类,一列是自上而下分析法,另一类是自下而上分析法。
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
ifch=′b′thengotoL
L:
READ(ch);
return
子程序P(A):
ifch=′e′then
begin
gotoL
ifch≠′d′thenerror
P(S);
P(A′);
return
子程序P(A′):
L:
ifch=′d′then
begin
read(ch);
elseifch=′d′thengotoL′
elseifch=′)′thengotoL′
L′:
2、带回溯的自上而下分析算法
INIT:
p:
=1;
k:
j:
s[k]:
=(z,0,0,0);
gotoTEST;
TEST:
ifGOALinVTthen
ifGOAL=INPUT[j]then
=j+1;
gotoSUCC
end
elsegotoFALL;
i:
=GOAL
gotoLOOK;
LOOK:
ifGRAMMAR[i]=′|′then
ifFATHER≠0thengotoSUCC
elseSTOP
ifGRAMMAR[i]=′$′then
ifFATHER≠0thengotoFALL
=k+1;
=(GRAMMAR[i],O,P,O,SON);
SON:
=k;
SUCC:
P:
=FATHER;
=i+1;
FALL:
FATHER;
=S[SON].BRO;
K:
=K-1;
gotoATRY;
ATRY:
ifSON=0then
whileGRAMMAR[i]≠′1′do
gotoLOOK
end;
=i-1;
=SON;
ifGOALinVNthen
gotoATRY;
=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
T
T→·
T*F
F
F→·
(E)
id
计算CLOSURE的过程如下:
procedureCLOSURE(I);
repeat
for
until
returnI;
2、LR〔0〕项目集规X族
procedureITEM(G′);
C:
={CLOSURE({S′→·
S})};
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·
16B→aBb·
17B→·
d
18B→d·
4、给定项目集I,X是一个文法符号,计算I的闭包CLOSURE(I)的算法是:
procedireCLOSURE(I)
beginI中的项目都属于CLOSURE〔I〕;
doif[]
untilI不再增大
returnI;
第八章、语法制导翻译法
任何编译程序都可以看作这样一种翻译程序:
它将用某种源程序语言写的程序〔源程序〕转换成等价的用某种目标语言
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 心得