编译原理_网工0801_向前龙.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:15 大小:92KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理_网工0801_向前龙.doc

编译原理_网工0801_向前龙.doc

预览

免费试读已结束,剩余 5 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

黄冈师范学院提高型实验报告实验课题编译器的实现(实验类型:□综合性□设计性□应用性)实验课程编译原理实验时间2010年12月19日学生姓名向钱龙专业班级网络200801学号200826340121目录TOC\o"1-3"\h\uHYPERLINK\l_Toc14669一、课设要求PAGEREF_Toc146692HYPERLINK\l_Toc13615二、总体设计思想PAGEREF_Toc136153HYPERLINK\l_Toc2555三、详细算法设计PAGEREF_Toc25553HYPERLINK\l_Toc25967四、流程框图PAGEREF_Toc259674HYPERLINK\l_Toc27645五、函数相关说明PAGEREF_Toc276458HYPERLINK\l_Toc231051.所有函数一览PAGEREF_Toc231058HYPERLINK\l_Toc254992.voidemit(char*res,char*num1,char*op,char*num2)PAGEREF_Toc254998HYPERLINK\l_Toc320743.char*newTemp()PAGEREF_Toc320749HYPERLINK\l_Toc144594.intmerge(intp1,intp2)PAGEREF_Toc144599HYPERLINK\l_Toc127685.voidbackpatch(intp,intt)PAGEREF_Toc1276810HYPERLINK\l_Toc147756.voidfuzhi()PAGEREF_Toc1477510HYPERLINK\l_Toc100637.voidtiaojian(int*nChain)PAGEREF_Toc1006311HYPERLINK\l_Toc275528.voidxunhuan()PAGEREF_Toc2755212HYPERLINK\l_Toc25102六、编译器使用说明PAGEREF_Toc2510214HYPERLINK\l_Toc13462七、心得与体会PAGEREF_Toc1346214课设要求用C语言对下述文法和单词表定义的语言设计编制一个编译器。(1)单词符号及种别表单词符号种别编码单词值main1int2float3double4char5if6else7do8while9l(l|d)*10内部字符串(+|-|ε)d*(.dd*|ε)(e(+|-|ε)dd*|ε)20二进制数值表示=21+22-23*24/25(26)27{28}29,30;31>32>=33<34<=35==36!=37(2)语法结构定义<程序>::=main()<语句块><语句块>::=‘{‘<语句串>’}’//程序用括号括起来<语句串>::=<语句>{;<语句>};<语句>::=<赋值语句>|<条件语句>|<循环语句><赋值语句>::=ID=<表达式>//赋值语句用”=”号<条件语句>::=if<条件><语句块>//条件怎么没有括号,囧(自己加1个)<循环语句>::=do<语句块>while<条件><条件>::=<表达式><关系运算符><表达式>//没有布尔运算,还算简单<表达式>::=<项>{+<项>|-<项>}<项>::=<因子>{*<因子>|/<因子>}<因子>::=ID|num|(<表达式>)num::=(+|-|ε)数字*(.数字数字*|ε)(e(+|-|ε)数字数字*|ε)ID::=字母(字母|d数字)*字母::=a|b|c…|z|A|B|C…|Z数字::=0|1|2…|9<关系运算符>::=<|<=|>|>=|==|!=总体设计思想采用递归下降(自上而下)的语法制导翻译法。详细算法设计在前两次试验的基础上改进。词法分析程序语法分析程序语义分析程序编译器。不断完善,不断改进。渐变的过程。流程框图图SEQ图\*ROMANI主函数示意图图SEQ图\*ROMANII递归下降分析程序示意图是否为main?调用scanner是否为(?调用scanner是否为)?调用scanner调用语句块分析函数staBlock出错处理否否否图SEQ图\*ROMANIII语句块分析示意图是否为{?调用scanner调用语句串分析函数staString调用scanner是否为}