简单的C语言编辑器课程设计

简单的C语言编辑器课程设计

ID:38926878

大小:219.00 KB

页数:12页

时间:2019-06-21

简单的C语言编辑器课程设计_第1页
简单的C语言编辑器课程设计_第2页
简单的C语言编辑器课程设计_第3页
简单的C语言编辑器课程设计_第4页
简单的C语言编辑器课程设计_第5页
资源描述:

《简单的C语言编辑器课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》课程设计----简单的C语言编译器扬州大学编译原理课程设计报告题目简单的编译器班级计科0802班学号081202427姓名张俊指导教师姜卯生成绩扬州大学信息工程学院2011年6月10日-11-《编译原理》课程设计----简单的C语言编译器一、课程设计题目实现一个简单的编译器二、课程设计目的通过编译原理课程设计,加深对课堂中所讲授的内容的理解,设计一个具有词法分析、语法、语义分析、错误处理的综合程序。进一步掌握编译程序常用实现的方法和技术,使学生初步具有研究、设计、编制和调试编译程序的能力。三、课程设计要求1.实现一个C语言子集或Pascal语言

2、子集的编译器,工具任选。2.要求实现的功能:翻译+,-,*,/四则运算表达式及布尔表达式,翻译包含if语句,while语句及do-while语句及相互间的嵌套。四、课程设计语言及选用工具选用语言:Java工具Eclipse五、课程设计方法设计过程中用到的数据结构://关键字数组publicstaticListkeyWord=newArrayList();//自定义符号串数组publicstaticEryuanshi[]valueAndClass=newEryuanshi[100];//目标代码数组publicst

3、aticListsiyuanshi=newArrayList();//目标代码类,存放四元式的另外一种形式classSiyuanshi{Stringop;Stringstr1;Stringstr2;}//二元式类,存放词法分析后的标志符,关键字及其类号classEryuanshi{Stringword;intclassID;-11-《编译原理》课程设计----简单的C语言编译器}StackstateStack=newStack();//状态栈StacksymSt

4、ack=newStack();//符号栈StacksemanticStack=newStack();//语义栈编译器主要分为两个模块:(1)词法分析程序:主要功能是从文件逐个单词读取源程序,进行次词法分析,并输出源程序的二元式列表,二元式列表保存在keyWord对象数组中。关键字、自定义标识符和数字对应的类号列表+3

5、

6、15int27-4=16float28*5(17char29/6)18if30<7[19else31<=8]20while32==9{21do33!=10}22main34>11:23!35>

7、=12;24数字2&13,25自定义标识符1&&14void26-11-《编译原理》课程设计----简单的C语言编译器主要函数:1、wordAnalys(Strings):对源代码进行词法分析,在其中调用lookup()函数。2、lookup(Strings):对词法分析函数中分析出的各字符串在关键字和符号表中查找。-11-《编译原理》课程设计----简单的C语言编译器(2)语法分析及生成目标代码程序:采用LR表分析程序,LR表具有ACTION和GOTO两部分。主要采用两个LR分析表:算术表达式LR表和布尔表达LR表。根据查询LR表,判断所要采取的动作。若

8、得到值temp=-1,则表达式识别错误,若temp=0,则表达式识别成功,若0=100,则采取用对应表达式归约。算术表达式文法:0)S®E1)E®E+E2)E®E--E3)E®E*E4)E®E/E5)E®(E)6)E®i根据算术表达式文法构造算术表达式LR分析表:int[][]E_LR=newint[][]{{-1,-1,2,-1,3,-1,1},{4,5,-1,-1,-1,0,-1},{-1,-1,2,-1,3,-1,6},{104,104,-1,104,-1,104,-1},{-1,-1,2,-1,3,-

9、1,7},{-1,-1,2,-1,3,-1,8},{4,5,-1,9,-1,-1,-1},{101,5,-1,101,-1,101,-1},{102,102,-1,102,-1,102,-1},{103,103,-1,103,-1,103,-1}};布尔表达式文法:0)E®i1)E®iri2)E®(E)3)E®!E4)A®E&&5)E®AE6)O®E

10、

11、7)E®OE布尔表达式LR分析表:-11-《编译原理》课程设计----简单的C语言编译器int[][]EB_LR=newint[][]{{1,1,4,-1,5,-1,-1,-1,13,7,8},{-1,2,

12、-1,101,-1,101,101,101,-1,-1,-1},{

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

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

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