ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:52KB ,
资源ID:7602613      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7602613.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈工大 威海 编译原理 实验二 语法分析.doc)为本站会员(j35w19)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

哈工大 威海 编译原理 实验二 语法分析.doc

1、哈尔滨工业大学(威海)计算机学院编译原理实验报告姓名 院系 计算机学院 学号 任课教师 指导教师 闫健恩实验地点 宋健二楼机房 实验时间实验名称 实验二 LR 语法分析技术同组人 无预习报告(对实验主要内容的认识) 得分(1)给出主要数据结构:分析栈、符号表、语法分析树;(2)将扫描器作为一个子程序,每次调用返回一个 TOKEN;(3)程序界面:表达式输入、语法分析树的表示结果(文件或者图形方式);实验内容(问题,思路,程序,结果) 得分(1)开发环境:vs2010(2)输入:在运行打开的软件下(win32 格式),输入相应的代码(即要进行词法分析的字符串)(3)输出:在输入字符串后,按回车键

2、后,既可以得到相应的词法分析的结果(4)在相应的运行程序的文件夹中生成一个 txt 文件,用来存储生成的 Token链表(5)系统功能:1、词法分析:将输入的字符串进行单词级别的分析并且生成且输出 Token 表2、语法生成器:可以将语法生成相应的状态,在这个实验中共有语法如下:3、CLOSURE 生成4、LR 项集族的生成6、 Goto 表的生成7、 Scaner 词法分析器将 Token 表输出8、语法分析器对 Token 表的分析,得出结果(2) 开发平台(操作系统、设计语言):1、操作系统:windows 72、设计语言:c+3、编译器:vs2010(3) 设计方案;1) 主数据流图;

3、开始读取构造的文法(grammar.txt)构造 item.txt 集族构造 action 表,写入文档进行语法的匹配(自底向上 RL(1))匹配时出现错误?查找 action 表继续进行匹配如果代码分析还未完成,继续结束YN2) 主要数据结构:符号表、TOKEN 串表等。/符号表class symTableprivate:char* symName;char* symStyle;int symLength;public: symTable *next;public:symTable();symTable(char* sysName,char* sysStyle,int sysLength);

4、symTable(symTable char* getName();char* getStyle();int getLength();void symAdd(symTable* symFirst);void print();char G3030; /use a matrix to store grammar G/存放 文法,用来分析作为输入int length30; /length use to store each formulas lengthint number = 0;bool tempofinput150; /buffer of input/输入?char str_vn30; /pu

5、t all vn into itint size_vn = 0; char str_vt150; /put all vt into itint size_vt = 0;bool first_vn30150;char buffer50;/用来存放生成 CLOSURE(I)时需要的 first_set 也用来读入用户的输入串_ int bsize = 0;struct thriint beg;int nex;char ch;thri trans200;int size_trans = 0;/定义项目集的形式 struct projint formula_numb;int part;char exp

6、c;/*项目集*/proj items200200;int Ccount = 0;int size_item200;/*状态转换表*/struct actionchar ch;int nxt_sta;action action_table200200;int size_act_table200;ifstream G_ifile;ifstream input_ifile;ofstream items_ofile;ofstream act_ofile;(4) 具体设计过程(包括主控程序、各个功能模块的具体实现)。1、主控程序简介:主控制流程主要包括下面的几部分:(1) 词法分析器的子函数修改(2)

7、 对于输入 grammar,输出集族(3) 输入集族,可以构造出相应的 action 表(4) 根据得到的 action 表生成相应的语法分析策略2、对于词法的分析简介:主要实现和在实验一中的功能相同,只是将现在的实现包装到一个函数里面,这样就是为了对代码进行重复的快捷的利用,只是需要将得到的程序代码作为输入,词法分析函数就会自动的生成相应的 token 表和相应的符号表。3、对于 item 生成简介:自己通过分析课本上的实验伪代码,以及 yacc 文法代码生成工具的研究,编写相依的 item 集族的生成工具,生成的 I 状态共有 105 中,具体的实现以及生成的状态在文档中(见于:item.

8、txt)4、对于 action 生成(action+goto)简介:通过生成的 item 表,构建一个 action 生成工具就可以得到相应的 action 表格,这个表格可以进行重复的利用(只要写到函数中即可,不需要每次都进行读入内存,然后在进行生成)5、语法分析分析根据 LR 的自底向上的方法进行语句与文法(在 action 中描述)进行匹配,若匹配成功,这该语句正确,分析下一条语句,否者错误提示输出。实验结论 得分本次试验我学习到了一下内容:(1)编写了一个文法分析器,参照 yacc 可以输入文法(按照相应的格式),然后生成一个 item 项用来存放规范 LR(0)项集族。输入的相应的格式在实验内容中已经给出。(相应的生成的 item 表格在上文中已经给出,并且在工程的文档中也有给处)(2)编写了一个 Action 表以及 Goto 表的生成程序(一个程序生成两个表格归并成为一个),并且放到相应的 txt 中,可以适用于任何其他想要使用这个文法的语法分析器。(相应的生成的 Action 表格在上文中已经给出,并且在工程的文档中也有给处)(3)综合了第一个实验的词法分析器,并且修正了词法分析器中一些鲁棒性不是很好的地方。(4)所有函数的算法思想以及实现方案,都可以在相应的源码的注释处找到。教师评价 总分 实际得分

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报