资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
编译编译技技术术 课课程程设计设计 实验报实验报告告实验名称:编译器程序实验名称:编译器程序姓名: 学号:班级:年 月 日一、一、课设要求课设要求模仿上学期给定的程序,根据下面具体的内容,用 C+语言对下述文法和单词表定义的语言设计编制一个编译器。设计报告格式撰写报告(1)单词符号及种别表单词符号种别编码单词值main1int 2float3double4char5if 6else 7do8while9l(l|d)*10内部字符串 ( +|-| ) d*(.dd* | )( e ( +|-| ) dd*|) 20二进制数值表示=21+22- 23* 24/ 25(26)272829,30;3132=33 :=:= main() :=:= /程序用括号括起来程序用括号括起来:=;:=|:=ID= /赋值语句用赋值语句用”=”=”号号:=if :=do:=do whilewhile := :=:= +|- :=:= *|/ :=ID|num|()num:=num:= ( ( +|-|+|-| ) ) 数字数字* *(.(.数字数字数字数字* * | | )()( e e ( ( +|-|+|-| ) ) 数字数字数字数字* *|)|)ID:=ID:=字母字母( (字母字母|d|d 数字数字) )* *字母字母:=a|b|c|z|A|B|C|Z:=a|b|c|z|A|B|C|Z数字数字:=0|1|2|9:=0|1|2|9 :=:= |=|=|!=|=|=|!=二、二、总体设计思想总体设计思想采用递归下降(自上而下)的语法制导翻译法。三、三、详细算法设计详细算法设计词法分析程序 语法分析程序 语义分析程序 编译器。不断完善,不断改进。渐变的过程。在此给出算法思想。四、四、流程框图流程框图图 I 主函数示意图是否为 main?调用 scanner是否为(?调用 scanner是否为)?调用 scanner调用语句块分析函数 staBlock出错处理否否否是否为 ?调用 scanner调用语句串分析函数 staString调用 scanner是否为 ?出错处理否否图 II 递归下降分析程序示意图图 III 语句块分析示意图调用语句分析函数 sta回溯,调用 backpatch是否为 ; ?调用 scanner调用语句分析函数 sta否出错处理图 IV 语句串分析示意图调用赋值语句分析函数 fuzhi是否为 字符串?是否为 if ?调用条件语句分析函数 tiaojian是否为 do ?调用循环语句分析函数 xunhuan图 V 语句分析示意图五、五、函数相关说明函数相关说明1. 所有函数一览所有函数一览void scanner(); /扫描void lrparser(); void staBlock(int *nChain); /语句块void staString(int *nChain); /语句串void sta(int *nChain); /语句void fuzhi(); /赋值语句void tiaojian(int *nChain); /条件语句void xunhuan(); /循环语句char* E(); /Expresiion 表达式char* T(); /Term 项char* F(); /Factor 因子char *newTemp(); /自动生成临时变量void backpatch(int p,int t); /回填int merge(int p1,int p2); /合并 p1 和 p2void emit(char *res,char *num1,char *op,char *num2); /生成四元式六、六、程序运行结果程序运行结果图 VI 赋值语句的分析图 VII 条件语句的分析图 VIII 循环语句的分析图 IX 综合七、七、编译器使用说明编译器使用说明程序提示用户输入字符串“Please input your source string:” ,用户输入字符串并以“#”号结束。回车后,程序显示运行结果。八、八、心得与体会心得与体会九、九、源程序清单源程序清单
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号