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

上传人:沈*** 文档编号:180772007 上传时间:2023-01-07 格式:DOC 页数:6 大小:52KB
返回 下载 相关 举报
哈工大 威海 编译原理 实验二 语法分析_第1页
第1页 / 共6页
哈工大 威海 编译原理 实验二 语法分析_第2页
第2页 / 共6页
哈工大 威海 编译原理 实验二 语法分析_第3页
第3页 / 共6页
点击查看更多>>
资源描述
哈尔滨工业大学(威海)计算机学院编译原理实验报告姓名 院系计算机学院学号 任课教师 指导教师闫健恩实验地点宋健二楼机房实验时间实验名称实验二LR语法分析技术同组人无预习报告(对实验主要内容的认识)得分(1)给出主要数据结构:分析栈、符号表、语法分析树;(2)将扫描器作为一个子程序,每次调用返回一个TOKEN;(3)程序界面:表达式输入、语法分析树的表示结果(文件或者图形方式);实验内容(问题,思路,程序,结果)得分(1)开发环境:vs2010(2)输入:在运行打开的软件下(win32格式),输入相应的代码(即要进行词法分析的字符串)(3)输出:在输入字符串后,按回车键后,既可以得到相应的词法分析的结果(4)在相应的运行程序的文件夹中生成一个txt文件,用来存储生成的Token链表(5)系统功能:1、词法分析:将输入的字符串进行单词级别的分析并且生成且输出Token表2、语法生成器:可以将语法生成相应的状态,在这个实验中共有语法如下:3、CLOSURE生成4、LR项集族的生成6、 Goto表的生成7、 Scaner词法分析器将Token表输出8、语法分析器对Token表的分析,得出结果(2) 开发平台(操作系统、设计语言): 1、操作系统:windows 7 2、设计语言:c+ 3、编译器:vs2010(3) 设计方案;1) 主数据流图;开始读取构造的文法(grammar.txt)构造item.txt 集族构造action表,写入文档进行语法的匹配(自底向上RL(1))匹配时出现错误?YN查找action表继续进行匹配如果代码分析还未完成,继续结束2) 主要数据结构:符号表、TOKEN串表等。/符号表class symTableprivate:char* symName;char* symStyle;int symLength;public:symTable *next;public:symTable();symTable(char* sysName,char* sysStyle,int sysLength);symTable(symTable &s);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 length int number = 0; bool tempofinput150; /buffer of input/输入?char str_vn30; /put all vn into it int size_vn = 0; char str_vt150; /put all vt into it int size_vt = 0; bool first_vn30150; char buffer50;/用来存放生成CLOSURE(I)时需要的first_set 也用来读入用户的输入串_ int bsize = 0; struct thri int beg; int nex; char ch; ; thri trans200; int size_trans = 0; /定义项目集的形式 struct proj int formula_numb; int part; char expc; ; /*项目集*/ proj items200200; int Ccount = 0; int size_item200; /*状态转换表*/ struct action char 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) 对于输入grammar,输出集族(3) 输入集族,可以构造出相应的action表(4) 根据得到的action表生成相应的语法分析策略2、对于词法的分析 简介:主要实现和在实验一中的功能相同,只是将现在的实现包装到一个函数里面,这样就是为了对代码进行重复的快捷的利用,只是需要将得到的程序代码作为输入,词法分析函数就会自动的生成相应的token表和相应的符号表。3、对于item生成 简介:自己通过分析课本上的实验伪代码,以及yacc文法代码生成工具的研究,编写相依的item集族的生成工具,生成的I状态共有105中,具体的实现以及生成的状态在文档中(见于:item.txt)4、对于action生成(action+goto) 简介:通过生成的item表,构建一个action生成工具就可以得到相应的action表格,这个表格可以进行重复的利用(只要写到函数中即可,不需要每次都进行读入内存,然后在进行生成)5、语法分析分析 根据LR的自底向上的方法进行语句与文法(在action中描述)进行匹配,若匹配成功,这该语句正确,分析下一条语句,否者错误提示输出。实验结论得分本次试验我学习到了一下内容:(1)编写了一个文法分析器,参照yacc可以输入文法(按照相应的格式),然后生成一个item项用来存放规范LR(0)项集族。输入的相应的格式在实验内容中已经给出。(相应的生成的item表格在上文中已经给出,并且在工程的文档中也有给处)(2)编写了一个Action表以及Goto表的生成程序(一个程序生成两个表格归并成为一个),并且放到相应的txt中,可以适用于任何其他想要使用这个文法的语法分析器。(相应的生成的Action表格在上文中已经给出,并且在工程的文档中也有给处)(3)综合了第一个实验的词法分析器,并且修正了词法分析器中一些鲁棒性不是很好的地方。(4)所有函数的算法思想以及实现方案,都可以在相应的源码的注释处找到。教师评价总分实际得分
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!