编译原理实验报告-句法分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

编译原理课程实验报告实验2:句法分析姓名李晨阳院系软件学院学号1123730105任课教师陈鄞指导教师实验地点软件学院三楼机房实验时间实验课表现出勤、表现得分实验报告得分实验总分操作结果得分一、需求分析得分要求:采用至少一种句法分析技术(LL(1)、SLR(1)、LR(1)或LALR(1))对类高级语言中的基本语句(至少包括函数定义、变量说明、赋值、循环、分支等语句)进行句法分析。阐述句法分析系统所要完成的功能。句法分析器从词法分析器获得一个由词法单元组成的串,并验证这个串可以由源语言的文法生成。对于良构的程序,语法分析器会构造一棵语法分析树,并传递给编译器其他部分,进一步处理。二、文法设计得分要求:给出如下语言成分的文法描述。E→TE’E’→+TE’|εT→FT’T’→*FT’|εF→i|(E)预测分析表i+*()#E→TE’TE’E’→TE’→ε→εT→FT’→FT’T’→ε→FT’→ε→εF→i→(E)三、系统设计得分要求:分为系统概要设计和系统详细设计。(1)系统概要设计:给出必要的系统宏观层面设计图,如系统框架图、数据流图、功能模块结构图等以及相应的文字说明。开始接收用户输入字符串,初始化预测分析表p[][],初始化分析桟fenxi[]取出栈顶符号fenxi[count1]判断fenxi[count1]是否属于Vt[]Fenxi[count1]与inputchar是否构成产生式否是Fenxi[count1]是否等于’#’是产生式右部是否为ε出错否结束栈顶符号p[count1]出栈是产生式右部逆序入栈否是Fenxi[count1]=inputchar否Fenxi[count1]=inputchar是出错否否Fenxi[count1]出栈,inputchar从输入串中除去是读入下一字符(2)系统详细设计:对如下工作进行展开描述核心数据结构的设计初始化分析桟publicvoidsetFenxi(){//初始化分析栈fenxi=newString[20];fenxi[0]=#;fenxi[1]=E;}初始化分析表publicvoidsetP(){//初始化预测分析表for(inti=0;i5;i++){for(intj=0;j6;j++){P[i][j]=error;}}P[0][0]=-TE';P[0][3]=-TE';P[1][1]=-+TE';P[1][4]=-ε;P[1][5]=-ε;P[2][0]=-FT';P[2][3]=-FT';P[3][1]=-ε;P[3][2]=-*FT';P[3][4]=-ε;P[3][5]=-ε;P[4][0]=-i;P[4][3]=-(E);}主要功能函数说明publicbooleanjudge()预测分析过程函数,判断所输入字符串是否符合规定文法并打印分析过程程序核心部分的程序流程图开始接收用户输入字符串,初始化预测分析表p[][],初始化分析桟fenxi[]取出栈顶符号fenxi[count1]判断fenxi[count1]是否属于Vt[]Fenxi[count1]与inputchar是否构成产生式否是Fenxi[count1]是否等于’#’是产生式右部是否为ε出错否结束栈顶符号p[count1]出栈是产生式右部逆序入栈否是Fenxi[count1]=inputchar否Fenxi[count1]=inputchar是出错否否Fenxi[count1]出栈,inputchar从输入串中除去是读入下一字符四、系统实现及结果分析得分要求:对如下内容展开描述。(1)系统实现过程中遇到的问题;(2)输出该句法分析器的分析表;(3)针对一测试程序输出其句法分析结果;(4)输出针对此测试程序对应的语法错误报告;(5)对实验结果进行分析。注:其中的测试样例需先用已编写的词法分析程序进行处理。‘测试:i+i*i+(i+i)#测试i((i+指导教师评语:日期:

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功