- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实验.doc
华北科技学院计算机学院综合性实验
实 验 报 告
课程名称 编译原理
实验学期 2015 至 2016 学年 第 二 学期
学生所在院部 计算机学院
年级 2013 专业班级 计科B
学生姓名 学号 201307014
任课教师 王养廷
实验成绩
计算机学院制
开课实验室:软件开发实验室 procedure constdeclaration;
begin if sym = ident then// 常量声明过程开始遇到的第一个符号必然应为标识符
begin getsym;
if sym in [eql, becomes] then//如果是等号或赋值号
begin if sym = becomes//如果是赋值号(常量生明中应该是等号) then error(1); getsym;// 获取下一个token, 等号或赋值号后应接上数字
if sym = number then//如果的确是数字
begin enter(constant);// 把这个常量登陆到符号表 getsym//获取下一个token,为后面作准备
end
else error(2)// 如果等号后接的不是数字,抛出2号错误
end else error(3)// 如果常量标识符后接的不是等号或赋值号,抛出3号错误
end else error(4)// 如果常量声明过程遇到的第一个符号不为标识符,抛出4号错误
end {constdeclaration};
(* 变量声明过程vardeclaration *)
procedure vardeclaration;
begin if sym = ident then// 变量声明过程vardeclaration
begin enter(varible); 将标识符登陆到符号表中// getsym
end
else error(4)// 如果变量声明过程遇到的第一个符号不是标识符,抛出4号错误
end {vardeclaration};
(二)过程说明
说明入口参数,返回值和过程的功能
1、入口参数:
过程体入口时的处理
code[table[tx0].adr].a:=cx;(cx为过程入口地址,填写在code中)
with table[tx0] do?
begin?
adr:=cx; (过程的入口填写在table表的过程名中)
size:=dx; (过程需要的空间填写在table中)
end;
cxo:=cx; (保留过程在code中的入口地址在输出目标代码时用)?
gen(int,0,dx);(生成过程入口指令)
2、返回值:
(* 通过静态链求出数据区基地址的函数base *)
(* 参数说明:l:要求的数据区所在层与当前层的层差 *)
(* 返回值:要求的数据区基址 *)
function base(l: integer): integer;
var
b1: integer;
begin
b1 := b; (* find base 1 level down *) (* 首先从当前层开始 *)
while l 0 do (* 如果l大于0,循环通过静态链往前找需要的数据区基址 *)
begin
b1 := s[b1]; (* 用当前层数据区基址中的内容(正好是静态链SL数据,为上一层的基址)的作为新的当前层,即向上找了一层 *)
l := l - 1 (* 向上了一层,l减一 *)
end;
base := b1 (* 把找到的要求的数据区基址返回 *)
end(* base *);
(三)程序静态结构图
(四)PL0文法描述
在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法。文法的描述多用BNF(巴克斯范式),而另一个重要的概念:正则表达式,也
您可能关注的文档
最近下载
- (YUM)百胜验厂审核详细要求清单.pdf VIP
- 四上数学口算竖式脱式应用题每日一练60天(60页).pdf VIP
- 《云南彝良地区地质构造特征探讨.docx VIP
- 三上数学口算竖式脱式应用题每日一练60天(60页).pdf VIP
- 2025年新青岛版数学三年级上册全册课件.pptx
- 《旅游客源地与目的地概况》教案 第1课 了解世界旅游业(一).pdf VIP
- 人教版劳动教育四年级上册全册教学设计.pdf VIP
- 2022年国家人体生物监测工作手册.pdf VIP
- 电子课件自主学习修订版第一单元开启自主学习的旅程.pptx VIP
- JBT 4333.2-2013 厢式压滤机和板框压滤机 第2部分:技术条件.pdf VIP
文档评论(0)