- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
编译原理实验报告
实验名称:
实验一编写词法剖析程序
实验种类:
考证型实验
指导教师:
何中胜
专业班级:
13软件四
姓
名:
丁越
学
号:
电子邮箱:
实验地址:秋白楼B720
实验成绩:
日期:2016年3月18日
一、实验目的
经过设计、调试词法剖析程序,实现从源程序中分出各样单词的方法;熟习词法剖析
程序所用的工具自动机,进一步理解自动机理论。掌握文法变换成自动机的技术及有穷自动机实现的方法。确
定词法剖析器的输出形式及表记符与重点字的划分方法。加深对讲堂教课的理解;提升词法剖析方法的实践能
力。经过本实验,应达到以下目标:
1、掌握从源程序言件中读取有效字符的方法和产生源程序的内部表示文件的方法。
2、掌握词法剖析的实现方法。
3、上机调试编出的词法剖析程序。
二、实验过程
以编写PASCAL子集的词法剖析程序为例
理论部分
1)主程序设计考虑
主程序的说明部分为各样表格和变量安排空间。
数组k为重点字表,每个数组元素寄存一个重点字。采纳定长的方式,较短的重点字
后边补空格。
P数组寄存分界符。为了简单起见,分界符、算术运算符和关系运算符都放在p表中
(编程时,还应成立算术运算符表和关系运算符表,而且各有类号),归并成一类。
id和ci数组分别寄存表记符和常数。
instring数组为输入源程序的单词缓存。
outtoken记录为输出内部表示缓存。
还有一些为造表填表设置的变量。
主程序开始后,先以人工方式输入重点字,造k表;再输入分界符等造p表。
主程序的工作部分设计成便于调试的循环构造。每个循环办理一个单词;接收键盘上
送来的一个单词;调用词法剖析过程;输出每个单词的内部码。
⑵词法剖析过程考虑
将词法剖析程序设计成独立一遍扫描源程序的构造。其流程图见图1-1。
图1-1
该过程取名为lexical
以字符k表示重点字;i
4,5)。
,它依据输入单词的第一个字符(有时还需读第二个字符),判断单词类,产生类号:
表示表记符;c表示常数;p表示分界符;s表示运算符(编程时类号分别为1,2,3,
关于表记符和常数,需分别与表记符表和常数表中已登记的元素对比较,如表中已有
该元素,则记录其在表中的地点,如未出现过,将表记符按次序填入数组
id
中,将常数
变成二进制形式存入数组中
ci
中,并记录其在表中的地点。
lexical
过程中嵌有两个小过程:一个名为
getchar
,其功能为从
instring
中按次序拿出一个字符,并将
其指针
pint
加1;另一个名为
error
,当出现错误时,调用这个过程,
输犯错误编号。
实践部分
全部辨别出的单词都用两个字节的等长表示,称为内部码。第一个字节为
t,第二个字节为i。t为单词的
种类。重点字的
t=1;分界符的t=2;算术运算符的
t=3;关系运算符的
t=4;无符号数的t=5;表记符的t=6
。
i为该单词在各自表中的指针或内部码值。表1-1
为重点字表;表1-2
为分界符表;表1-3为算术运算符的
i
值;表1-4为关系运算符的
i值。
重点字表
指针l
重点字
0
BEGIN
1
DO
2
ELSE
3
EN
4
IF
5
THEN
6
VAR
7
WHILE
表1-1
分界符表
指针l
分界符
0
,
1
;
2
。
3
:=
4
(
5
)
6
:
7
"
表1-2
算术运算符
指针l
算术运算符
10H
+
11H
-
20H
*
21H
/
表1-3
关系运算符
指针l
关系运算符
00H
<
01H
<=
02H
=
03H
>
04H
>=
05H
<>
表1-4
常数表和表记符表是在编译过程中成立起来的。
其i
值是依据它们在源程序中出现的次序确立的。
此外可
以依据Pascal语言子集中出现其余单词状况进行自行改正以上表格。
最后编写程序进行词法剖析,判断目标在哪个表中并进行显示。
三、实验结果
测试数据
数据共分为3组,分别以下:
第一组数据
vari,j,k:integer;
begin
i:=5;
j:=6;
k:=i+j;
write("k=",k);
End.
第二组数据
vari,sum:integer;
begin
sum:=0;
fori:=1to10do
begin
sum:=sum+i;
end;
writeln("sum=",sum);
End.
第三组数据
varweight,price:real;
begin
write("pleaseinputweight:");
readln(weight);
ifweight<10
then
price=5;
else
price=5+(weight-10)*;
writeln("price=",price);
您可能关注的文档
- 绩效考核评分标准.doc
- 绩效评定和持续改进管理制度.doc
- 编译原理习题.doc
- 编译原理实验报告.doc
- 编译原理实验教案.doc
- 编译原理练习题参考.doc
- 编辑记者2021个人工作总结.doc
- 缤纷冬日未成年人系列活动总结.doc
- 罐车驾驶安全责任书.doc
- 翠竹幼儿园安全隐患问题清单.doc
- DL_T 5538-2017电力系统安全稳定控制工程建设预算项目划分导则.pdf
- JC_T 2704-2022聚酯纤维装饰吸声板.pdf
- JB 8200-1999煤矿防爆特殊型电源装置用铅酸蓄电池.pdf
- DB37_T 2254-2012有机食品 黄瓜生产技术规程.pdf
- LYT 1649-2005保鲜黑木耳.pdf
- DB37_T 2903.110-2017鲁菜 锅烧肉.pdf
- NY_T 754-2021CN绿色食品 蛋及蛋制品.pdf
- DB37_T 1667-2010环境友好型产品生产技术要求 本色文化用纸.pdf
- JC_T 2363-2016烧结保温砖和保温砌块成套生产设备通用技术条件.pdf
- DB37_T 3062-2017莱芜黑山羊饲养管理技术规范.pdf
1亿VIP精品文档
相关文档
最近下载
- 福建师范大学333教育综合考研真题精选.docx VIP
- 5,高中英语选修二词汇默写_英译汉_按课文顺序.pdf
- 2023年特种设备安全管理人员安全考核考试题库及答案.pdf VIP
- 水利工程年度安全生产年度目标及实施计划.doc
- 《汽车人机工程学(校企合作)》课程教学大纲(本科).pdf
- TSG 03-2015 特种设备事故和调查处理导则.pdf
- JGJ 231T-2021 建筑施工承插型盘扣件钢管支架安全技术规程.pdf VIP
- 2023届高考语文复习指导:高考文学类文本阅读试题分析及23高考复习备考对策.docx
- 37 中新初一入学分班考试数学真题.docx
- 起重吊装及吊物捆绑方法安全教育.pptx
文档评论(0)