编译原理实验.ppt

编译原理实验.ppt

ID:48806698

大小:205.50 KB

页数:44页

时间:2020-01-27

编译原理实验.ppt_第1页
编译原理实验.ppt_第2页
编译原理实验.ppt_第3页
编译原理实验.ppt_第4页
编译原理实验.ppt_第5页
资源描述:

《编译原理实验.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译实验一.概述1.源语言:求n!的极小语言(文法见后)<程序>→<分程序><分程序>→begin<说明语句表>;<执行语句表>end<说明语句表>→<说明语句>│<说明语句表>;<说明语句><说明语句>→<变量说明>│<函数说明><变量说明>→integer<变量><变量>→<标识符><标识符>→<字母>│<标识符><字母>│<标识符><数字><字母>→a│b│c│d│e│f│g│h│i│j│k│l│m│n│o│p│q│r│s│t│u│v│w│x│y│z<数字>→0│1│2│3│4│5│6│7│8│9<函数说明>→integ

2、erfunction<标识符>(<参数>);<函数体><参数>→<变量><函数体>→begin<说明语句表>;<执行语句表>end<执行语句表>→<执行语句>│<执行语句表>;<执行语句><执行语句>→<读语句>│<写语句>│<赋值语句>│<条件语句><读语句>→read(<变量>)<写语句>→write(<变量>)<赋值语句>→<变量>:=<算术表达式><算术表达式>→<算术表达式>-<项>│<项><项>→<项>*<因子>│<因子><因子>→<变量>│<常数>│<函数调用><常数>→<无符号整数><无符号整数>→<数字>│<

3、无符号整数><数字><条件语句>→if<条件表达式>then<执行语句>else<执行语句><条件表达式>→<算术表达式><关系运算符><算术表达式><关系运算符>→<│<=│>│>=│=│<>2.工具语言:Pascal、C或其它3.语法分析采用递归下降分析法4.目标代码:P码5.编译程序的结构源程序字符串.pas词法分析器语法分析器语义分析、中间代码生成器代码优化器目标代码生成器二元式序列.dyd二元式序列.dys中间代码序列.qud中间代码序列.qdo符号表管理程序出错处理程序编译程序的结构P码二.各阶段的输入输

4、出1.词法分析词法分析器源程序.pas二元式(文本文件.dyd)2.语法分析语法分析器.dyd.dys同时,产生文本文件.var、.pro3.语义分析语义分析器.dys.qud(文本文件)同时,产生二进制文件.ooj、varfil、profil4.优化优化段.qud.ooj.qdo(文本文件)同时,产生二进制文件.coj5.目标代码生成目标代码生成器.qdo.coj.obj(P码)同时,产生二进制文件pf(目标指令)三.数据结构1.二元式文件.dyd(1)二元式形式:单词符号种别长度为16长

5、度为2一个空格单词符号种别单词符号种别单词符号种别1234567891011121314151617181920212223integerbeginendelsefunctionreadwrite标识符常数=<><=>=<>-*:=();单词符号与种别对照表ifthen(2)每行后加一“...EOLN24”(3)文件结尾加“...EOF25”2.错误信息文件.err(1)错误信息格式***LINE:行号错误性质(2)注意:进入每一阶段,首先打开.err,如果无错误,则.err为空。3..dys同

6、.dyd4.变量名表变量名vname:char(16)所属过程vproc:char(16)分类vkind:0..1(0—变量、1—形参)变量类型vtype:types变量层次vlev:int变量在变量表中的位置vadr:int(相对第一个变量而言)types=(ints)5.过程名表过程名pname:char(16)过程类型ptype:types过程层次plev:int第一个变量在变量表中的位置fadr:int最后一个变量在变量表中的位置ladr:int6.四元式表(oprd,op1,op2,result)oprd——整数码

7、op1——第一操作数op2——第二操作数result——结果op1、op2、result可用“值/地址”表示7.目标代码——P码参见目标代码(P码)指令表四.实现提示1.多数文件均和源文件同名,仅扩展名不同。2.词法分析时,注意行尾和文件尾。3.词法分析的实现方法——利用状态转换图04123567开始空白字母/数字字母非字母数字数字非数字=-***数字89()101112<>=13141516>其它=171819:其它=其它2021;其它****4.(有过程说明时)设一个总的变量名表,查、填表时注意嵌套。5.语法错分类:(1)

8、缺少符号错;(2)符号匹配错;(3)符号无定义或重复定义。6.递归下降分析时,必须先消除左递归。7.递归下降分析时,跟踪符号的位置当进入某过程时,其第一个符号必须已经读出;退出该过程时,必须读出该语法成分的右界符。例:G(E)E→E+T│TT→T*F│FF→(E)│i消除左递

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。