您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 编译原理课程设计报告_编译器
1/12《编译技术》课程设计实验报告实验名称:编译器程序姓名:学号:班级:年月日2/12一、课设要求模仿上学期给定的程序,根据下面具体的内容,用C++语言对下述文法和单词表定义的语言设计编制一个编译器。设计报告格式撰写报告(1)单词符号及种别表单词符号种别编码单词值main1int2float3double4char5if6else7do8while9l(l|d)*10内部字符串(+|-|ε)d*(.dd*|ε)(e(+|-|ε)dd*|ε)20二进制数值表示=21+22-23*24/25(26)27{28}29,30;3132=3334=35==36!=37(2)语法结构定义程序::=main()语句块3/12语句块::=‘{‘语句串’}’//程序用括号括起来语句串::=语句{;语句};语句::=赋值语句|条件语句|循环语句赋值语句::=ID=表达式//赋值语句用”=”号条件语句::=if条件语句块循环语句::=do语句块while条件条件::=表达式关系运算符表达式表达式::=项{+项|-项}项::=因子{*因子|/因子}因子::=ID|num|(表达式)num::=(+|-|ε)数字*(.数字数字*|ε)(e(+|-|ε)数字数字*|ε)ID::=字母(字母|d数字)*字母::=a|b|c…|z|A|B|C…|Z数字::=0|1|2…|9关系运算符::=|=||=|==|!=4/12二、总体设计思想采用递归下降(自上而下)的语法制导翻译法。三、详细算法设计词法分析程序语法分析程序语义分析程序编译器。不断完善,不断改进。渐变的过程。在此给出算法思想。四、流程框图图I主函数示意图5/12是否为main?调用scanner是否为(?调用scanner是否为)?调用scanner调用语句块分析函数staBlock出错处理否否否是否为{?调用scanner调用语句串分析函数staString调用scanner是否为}?出错处理否否图II递归下降分析程序示意图图III语句块分析示意图6/12调用语句分析函数sta回溯,调用backpatch是否为;?调用scanner调用语句分析函数sta否出错处理图IV语句串分析示意图7/12调用赋值语句分析函数fuzhi是否为字符串?是否为if?调用条件语句分析函数tiaojian是否为do?调用循环语句分析函数xunhuan图V语句分析示意图8/12五、函数相关说明1.所有函数一览voidscanner();//扫描voidlrparser();voidstaBlock(int*nChain);//语句块voidstaString(int*nChain);//语句串voidsta(int*nChain);//语句voidfuzhi();//赋值语句voidtiaojian(int*nChain);//条件语句voidxunhuan();//循环语句char*E();//Expresiion表达式char*T();//Term项char*F();//Factor因子char*newTemp();//自动生成临时变量voidbackpatch(intp,intt);//回填intmerge(intp1,intp2);//合并p1和p2voidemit(char*res,char*num1,char*op,char*num2);//生成四元式9/12六、程序运行结果图VI赋值语句的分析图VII条件语句的分析10/12图VIII循环语句的分析11/12图IX综合七、编译器使用说明程序提示用户输入字符串“Pleaseinputyoursourcestring:”,用户输入字符串并以“#”号结束。回车后,程序显示运行结果。12/12八、心得与体会九、源程序清单
本文标题:编译原理课程设计报告_编译器
链接地址:https://www.777doc.com/doc-2141206 .html