欢迎来到天天文库
浏览记录
ID:48806697
大小:380.00 KB
页数:44页
时间:2020-01-27
《编译原理总复习.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一章引论编译程序把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序,是一种翻译程序。高级语言书写的程序编译程序低级语言程序源程序目标程序C语言Pascal语言Fortran语言编译之后是否可以执行?表格管理词法分析语法分析语义分析中间代码生成代码优化目标代码生成出错处理源程序目标程序编译过程beginx:=9;ifx>0thenx:=2*x+1/3end3begin1x4:=295;3if1x4>203then1x4:=224*1x4+214/233end5#语法分析对于文法:G[E]:E->E+T
2、TT->T*
3、F
4、FF->i
5、(E)分析句子i+i*i是否符合文法。输入串i+i*i#的分析过程i+*()#EE→TE’E→TE’E'E'→+TE’E'→εE'→εTT→FT’T→FT’T'T'→εT'→*FT'T'→εT'→εFF→iF→(E)+匹配+i*i##E’T+7E’→+TE’+i*i##E’6T’→ε+i*i##E’T’5i匹配i+i*i##E’T’i4F→ii+i*i##E’T’F3T→FT’i+i*i##E’T2E→TE’i+i*i##E1所用产生式剩余输入串分析栈步骤beginx:=9;ifx>0thenx:=2*x+1/3endac:=d;e
6、c>dfc:=d*c+d/db其中终结符对应关系:beginaendbIDcNUMdifethenf文法G:(1)<程序>::=begin<语句串>end(2)<语句串>::=<语句><末语句>(3)<末语句>::=;<语句><末语句>
7、&(4)<语句>::=<赋值语句>
8、(5)<赋值语句>::=ID:=<表达式>(6)<表达式>::=<项><末项>(7)<末项>::=+<项><末项>
9、-<项><末项>
10、<<项><末项>
11、><项><末项>
12、&(8)<项>::=<因子><末因子>(9)<末因子>::=*<因子><末因子>
13、/<因子><末因
14、子>
15、&(10)<因子>::=ID
16、NUM
17、(表达式)(11)::=if<表达式>then<语句>beginaendbIDcNUMdifethenfA->aBbB->CDD->;CD
18、&C->E
19、FE->c:=GG->HII->+HI
20、-HI
21、>HI
22、23、&H->JKK->*JK24、/J25、26、&J->c27、d28、(G)F->eGfCac:=d;ec>dfc:=d*c+d/dbA->aBbB->CDD->;CD29、&C->E30、FE->c:=GG->HII->+HI31、-HI32、>HI33、34、&H->JKK->*JK35、/J36、37、&J->c38、d39、(G)40、F->eGfCac:=d;ec>dfc:=d*c+d/dbA->aBbB->CDD->;CD41、&C->E42、FE->c:=G{p:=loopup(c.name);ifp<>nilthenemit(:=,p,-,G.place)elseerror;}G->HII->+HI43、-HI44、>HI45、46、&H->JKK->*JK47、/J48、49、&J->c50、d51、(G)F->eGfC编译程序和解释程序编译程序与解释程序区别运行解释程序计算结果源程序初始数据编译程序源程序目标代码初始数据计算结果存储组织和时间第三章文法和语言文法:G[S]:S->ABA->aA52、aB->53、bB54、b以有限的规则描述无限的句子集合。语言文法描述的语言是该文法一切句子的集合。G[S]:S->ABA->aA55、aB->bB56、bL(G)={ambn57、m,n≥1}文法的类型通过对产生式施加不同的限制,Chomsky将文法分为四种类型:0型文法:每个产生式左部至少有一个为非终结符。1型文法:产生式右部长于左部,仅仅S→ε除外(上下文有关文法)2型文法:每一个产生式左部是一个非终结符。(上下文无关文法),描述程序设计语言。3型文法:产生式形如A→aB或A→a(正规文法)或产生式形如A→Ba或A→a每个3型文法都是2型文法,每个2型文法都是1型文法,58、每个1型文法都是0型文法。句型分析及其语法树语法树描述上下文无关文法的句型推导的直观工具。利用语法树可以判断某文法是否可以推导出某句型或句子。最左推导、最右推导短语、句柄、直接短语二义性文法文法的化简:多余规则,有害规则第四章词法分析词法分析的任务主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。词法分析程序与语法分析程序的接口方式1.把词法分析工作单独作为一趟2.把词法分析工作作为子程序beginx:=9;ifx>0thenx:=2*x+1/3end二元式3begin1x4:=295;3if1x4>203then1x59、4:=224*1x4+214/233end5#按照词法规则构造正规式(正规文法);正规式NFA(正规文法NFA);NF
23、&H->JKK->*JK
24、/J
25、
26、&J->c
27、d
28、(G)F->eGfCac:=d;ec>dfc:=d*c+d/dbA->aBbB->CDD->;CD
29、&C->E
30、FE->c:=GG->HII->+HI
31、-HI
32、>HI
33、34、&H->JKK->*JK35、/J36、37、&J->c38、d39、(G)40、F->eGfCac:=d;ec>dfc:=d*c+d/dbA->aBbB->CDD->;CD41、&C->E42、FE->c:=G{p:=loopup(c.name);ifp<>nilthenemit(:=,p,-,G.place)elseerror;}G->HII->+HI43、-HI44、>HI45、46、&H->JKK->*JK47、/J48、49、&J->c50、d51、(G)F->eGfC编译程序和解释程序编译程序与解释程序区别运行解释程序计算结果源程序初始数据编译程序源程序目标代码初始数据计算结果存储组织和时间第三章文法和语言文法:G[S]:S->ABA->aA52、aB->53、bB54、b以有限的规则描述无限的句子集合。语言文法描述的语言是该文法一切句子的集合。G[S]:S->ABA->aA55、aB->bB56、bL(G)={ambn57、m,n≥1}文法的类型通过对产生式施加不同的限制,Chomsky将文法分为四种类型:0型文法:每个产生式左部至少有一个为非终结符。1型文法:产生式右部长于左部,仅仅S→ε除外(上下文有关文法)2型文法:每一个产生式左部是一个非终结符。(上下文无关文法),描述程序设计语言。3型文法:产生式形如A→aB或A→a(正规文法)或产生式形如A→Ba或A→a每个3型文法都是2型文法,每个2型文法都是1型文法,58、每个1型文法都是0型文法。句型分析及其语法树语法树描述上下文无关文法的句型推导的直观工具。利用语法树可以判断某文法是否可以推导出某句型或句子。最左推导、最右推导短语、句柄、直接短语二义性文法文法的化简:多余规则,有害规则第四章词法分析词法分析的任务主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。词法分析程序与语法分析程序的接口方式1.把词法分析工作单独作为一趟2.把词法分析工作作为子程序beginx:=9;ifx>0thenx:=2*x+1/3end二元式3begin1x4:=295;3if1x4>203then1x59、4:=224*1x4+214/233end5#按照词法规则构造正规式(正规文法);正规式NFA(正规文法NFA);NF
34、&H->JKK->*JK
35、/J
36、
37、&J->c
38、d
39、(G)
40、F->eGfCac:=d;ec>dfc:=d*c+d/dbA->aBbB->CDD->;CD
41、&C->E
42、FE->c:=G{p:=loopup(c.name);ifp<>nilthenemit(:=,p,-,G.place)elseerror;}G->HII->+HI
43、-HI
44、>HI
45、46、&H->JKK->*JK47、/J48、49、&J->c50、d51、(G)F->eGfC编译程序和解释程序编译程序与解释程序区别运行解释程序计算结果源程序初始数据编译程序源程序目标代码初始数据计算结果存储组织和时间第三章文法和语言文法:G[S]:S->ABA->aA52、aB->53、bB54、b以有限的规则描述无限的句子集合。语言文法描述的语言是该文法一切句子的集合。G[S]:S->ABA->aA55、aB->bB56、bL(G)={ambn57、m,n≥1}文法的类型通过对产生式施加不同的限制,Chomsky将文法分为四种类型:0型文法:每个产生式左部至少有一个为非终结符。1型文法:产生式右部长于左部,仅仅S→ε除外(上下文有关文法)2型文法:每一个产生式左部是一个非终结符。(上下文无关文法),描述程序设计语言。3型文法:产生式形如A→aB或A→a(正规文法)或产生式形如A→Ba或A→a每个3型文法都是2型文法,每个2型文法都是1型文法,58、每个1型文法都是0型文法。句型分析及其语法树语法树描述上下文无关文法的句型推导的直观工具。利用语法树可以判断某文法是否可以推导出某句型或句子。最左推导、最右推导短语、句柄、直接短语二义性文法文法的化简:多余规则,有害规则第四章词法分析词法分析的任务主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。词法分析程序与语法分析程序的接口方式1.把词法分析工作单独作为一趟2.把词法分析工作作为子程序beginx:=9;ifx>0thenx:=2*x+1/3end二元式3begin1x4:=295;3if1x4>203then1x59、4:=224*1x4+214/233end5#按照词法规则构造正规式(正规文法);正规式NFA(正规文法NFA);NF
46、&H->JKK->*JK
47、/J
48、
49、&J->c
50、d
51、(G)F->eGfC编译程序和解释程序编译程序与解释程序区别运行解释程序计算结果源程序初始数据编译程序源程序目标代码初始数据计算结果存储组织和时间第三章文法和语言文法:G[S]:S->ABA->aA
52、aB->
53、bB
54、b以有限的规则描述无限的句子集合。语言文法描述的语言是该文法一切句子的集合。G[S]:S->ABA->aA
55、aB->bB
56、bL(G)={ambn
57、m,n≥1}文法的类型通过对产生式施加不同的限制,Chomsky将文法分为四种类型:0型文法:每个产生式左部至少有一个为非终结符。1型文法:产生式右部长于左部,仅仅S→ε除外(上下文有关文法)2型文法:每一个产生式左部是一个非终结符。(上下文无关文法),描述程序设计语言。3型文法:产生式形如A→aB或A→a(正规文法)或产生式形如A→Ba或A→a每个3型文法都是2型文法,每个2型文法都是1型文法,
58、每个1型文法都是0型文法。句型分析及其语法树语法树描述上下文无关文法的句型推导的直观工具。利用语法树可以判断某文法是否可以推导出某句型或句子。最左推导、最右推导短语、句柄、直接短语二义性文法文法的化简:多余规则,有害规则第四章词法分析词法分析的任务主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。词法分析程序与语法分析程序的接口方式1.把词法分析工作单独作为一趟2.把词法分析工作作为子程序beginx:=9;ifx>0thenx:=2*x+1/3end二元式3begin1x4:=295;3if1x4>203then1x
59、4:=224*1x4+214/233end5#按照词法规则构造正规式(正规文法);正规式NFA(正规文法NFA);NF
此文档下载收益归作者所有