编译原理课程设计--c语言编译器实现

编译原理课程设计--c语言编译器实现

ID:30116669

大小:238.00 KB

页数:21页

时间:2018-12-27

编译原理课程设计--c语言编译器实现_第1页
编译原理课程设计--c语言编译器实现_第2页
编译原理课程设计--c语言编译器实现_第3页
编译原理课程设计--c语言编译器实现_第4页
编译原理课程设计--c语言编译器实现_第5页
资源描述:

《编译原理课程设计--c语言编译器实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、甘肃政法学院编译原理课程设计题目C语言编译器实现计算机科学学院计算机科学与技术专业10级计本班学号:201081010137姓名:杨青虎指导教师:李霞完成时间:2013年6月目录一、原理11、简介12、单词符号及种别表示13、语法结构定义如下:2二、运行环境3三、算法设计思想31、词法分析主要算法32、语法分析主要算法33、语义分析主要算法4四、程序流程图5五、运行测试结果8六、心得体会9七、源代码9C语言编译器实现一、原理1、简介编译程序的工作过程一般可以分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立

2、的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。表格管理出错处理单词符号语法单元中间代码中间代码目标代码语法分析器语义分析与中间代码生成器优化器目标代码生成器词法分析器2、单词符号及种别表示1单词符号种别编码main1int2float3double4char5if6else7do8while9l(l

3、d)*10dd*20=21+22-23*24/25(26)27{28}29,30;31>32>=33<34<=35==36!=37‘’1000ERROR-13、语法结构定义如下:<

4、程序>::=main()<语句块><语句块>::=‘{‘<语句串>’}’<语句串>::=<语句>{;<语句>};19<语句>::=<赋值语句>

5、<条件语句>

6、<循环语句><赋值语句>::=ID=<表达式><条件语句>::=if<条件><语句块><循环语句>::=do<语句块>while<条件><条件>::=<表达式><关系运算符><表达式><表达式>::=<项>{+<项>

7、-<项>}<项>::=<因子>{*<因子>

8、/<因子>}<因子>::=ID

9、num

10、(<表达式>)<关系运算符>::=<

11、<=

12、>

13、>=

14、==

15、!二、运行环境Windows系统VisualC+

16、+6.0三、算法设计思想1、词法分析主要算法这部分对源文件进行分析,允许/**/注释。从源文件依次读取字符,对字符进行分析,组成字符串、数字、关系符等固定含义的token符,并把它们添加到token链中,如果遇到非法字符报错并退出程序。2、语法分析主要算法这部分对Token链进行分析,利用自底向上的分析方法,构建SLR(1)分析表的过程是手工完成的。语法分析的同时构建语法树,移进时创建叶子,规约时创建节点。3、语义分析主要算法这部分对语法树从左到右进行遍历,节点记录了规约式的编号,遍历到节点时就进行相应处理。语义分析主要检查变量、函数是否被定义或重定义,同时产生

17、四元式。函数一览表voidscanner();19voidlrparser();voidstaBlock(int*nChain);voidstaString(int*nChain);voidsta(int*nChain);voidfuzhi();voidtiaojian(int*nChain);voidxunhuan();char*E();char*T();char*F();char*newTemp();voidbackpatch(intp,intt);intmerge(intp1,intp2);voidemit(char*res,char*num1,char*

18、op,char*num2);四元组结构体定义:struct{charresult[10];chararg1[10];charopera[10];chararg2[10];}fourCom[20];四、程序流程图19初始化调用scanner读下一个单词符号调用irparser循环输出四元式fourcom[]结束图1主函数流程图是否main否是调用scanner是否是(否调用scanner是是否是)否是调用scanner出错处理调用语句块分析函数stablock19图2递归下降分析分析程序流程图是否是{否是调用scanner调用语句串分析函数stastring调用s

19、canner出错处理是否是}否图3语句块分析流程图调用语句分析函数sta回溯,调用backpatch是否是;否调用scanner是出错处理调用语句分析函数sta图4语句串分析流程图19是否是字符串调用赋值语句分析函数fuzhi是否是否是if否是调用条件语句分析函数tiaojian是否是do否是调用循环语句分析函数xunhuan图5语句分析流程图五、运行测试结果19正确程序结果错误程序结果:报错!(1)错误程序结果:报错!(2)六、心得体会这次的课程设计,最大的收获就是清楚了编译的整个过程,在学习编译原理这门课程之时,在做设计的过程中和词法分析、语法分析、语义分析

20、联系起来,非常清晰的理解

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。