- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈工大威海编译原理实验报告.doc
《编译原理》
实验报告
班级:
学号:
姓名:
实验一 词法扫描器设计
一 实验目的
通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。Windows 7,Microsoft Visual C++ 6.0
设计方案:
主流程图:
主要子程序的流程框图:
判断 是否注释子模块①:
N
Y
模块①
判断是否是字符子模块②:
N
Y
Y
N
Y
模块②
判断是否为数字或者运算符子模块③:
N
Y Y
Y
N
模块③
实验结果:
Test.txt内容:
Token.txt文件内容:
四 实验总结:
通过词法分析实验,首先我认识到词法分析就是将字符序列转换为单词(Token)序列的过程。词法分析器一般以函数的形式存在,供语法分析器调用。词法分析阶段是编译过程的第一个阶段,这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。符号表
1、编译过程中编译程序不断汇集和反复查证出现在源程序中各种名字的属性和特征信息等有关信息。
这些信息通常记录在一张或几张符号表中。
2、符号表的每一项有两部分:
一部分是名字(标识符);一部分是名字属性(标识符的有关信息)。
3、编译过程中,每当扫描器(词法分析器)识别出一个名字后,编译程序就查阅符号表,看其是否在符号表中。
如果它是一个新名字就将它填进表里。
它的有关信息将在词法分析和语法-语义分析过程中陆续填入表中。
4、符号表是边填边用。id? Letter temp
int10? Num int10 | Num
OP? +| - |* |/ || | = | ( | ) | ; | ‘ | == | = |= | !=
Keyword?if | then | else | while | do
Letter?a|b|c|d|e|f|g|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|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
Num?0|1|2|3|4|5|6|7|8|9 |ε
temp? Letter temp | Num temp |ε
实验二 LR语法分析器设计
一 实验目的
通过设计调试法分析程序,实现;加深对课堂教学的理解;提高分析方法的实践能力。;
int b;
int c;
a=2;
b=1;
if (ab)
c=a+b;
else
c=a-b;
三 实验要求
(一) 程序设计要求
()给出主要数据结构:分析栈、符号表;
()将扫描器作为一个子程序,每次调用返回一个TOKEN;()程序界面:表达式输入、的表示结果(文件或者图形方式);
(1)(2)(3)设计方案:功能模块结构图、主要函数的流程图;(4)()Windows 7,Microsoft Visual C++ 6.0(Dos),C++
三:设计方案:(包括第四步的数据结构)
首先构造数据结构,分析栈,分析表,符号表等如下:
分析栈
struct FenXiZhan
{
char name[50];
char *type;
int value;
}FenXiZhan[1000];
分析表()
Table[31][20]
{108,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,4,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1000,0,0,0,0,0,0,0,0,0},
{0,0,109,0,0,0,0,0,0,0,0,113,0,0,0,3,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,201,0,0,0,0,0,0,0,0,0},
{0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
文档评论(0)