编译原理课程设计---小型程序设计语言编译器的设计与实现

上传人:aa****6 文档编号:38366308 上传时间:2018-05-01 格式:DOC 页数:33 大小:3.52MB
返回 下载 相关 举报
编译原理课程设计---小型程序设计语言编译器的设计与实现_第1页
第1页 / 共33页
编译原理课程设计---小型程序设计语言编译器的设计与实现_第2页
第2页 / 共33页
编译原理课程设计---小型程序设计语言编译器的设计与实现_第3页
第3页 / 共33页
编译原理课程设计---小型程序设计语言编译器的设计与实现_第4页
第4页 / 共33页
编译原理课程设计---小型程序设计语言编译器的设计与实现_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《编译原理课程设计---小型程序设计语言编译器的设计与实现》由会员分享,可在线阅读,更多相关《编译原理课程设计---小型程序设计语言编译器的设计与实现(33页珍藏版)》请在金锄头文库上搜索。

1、 课课 程程 设设 计计 报报 告告课程设计名称:课程设计名称: 编译技术编译技术 系系 : 三三 系系 学生姓名:学生姓名: 王王 辉辉 班班 级:级: 09 软件(软件(1)班)班 学学 号:号: 成成 绩:绩: 指导教师:指导教师: 石石 鲁鲁 生生 开课时间:开课时间: 2011-2012 学年学年 2 学期学期1目录目录一设计题目.1二主要内容.1三具体要求.1四进度安排.2五成绩评定.2六设计思路.31.词法分析.3(1)单词符号及种别表.32.SLR 的分析表:.41). 算术表达式的 SLR(1)分析表:.42). 布尔表达式的 SLR 分析表: .43). 程序语句的 SLR

2、 分析表: .6七源程序及运行结果.71)源代码:.72)运行截图.28八心得体会.31编译原理课程设计报告- 0 -一设计题目一设计题目小型程序设计语言编译器的设计与实现二主要内容二主要内容自定义一种简单的小型高机程序设计语言,采用任意一种编程语言和编程工具设计并实现其编译器,展示编译系统中词法分析和语法分析的全过程。三具体要求三具体要求1、对单词的构词规则有明确的定义;2、编写的词法分析程序能够正确识别源程序中的单词符号;3、识别出的单词以的二元式形式保存在符号表中并输出;4、构造出程序设计语言各语法单位的 SLR 分析表;(其他分析表亦可)5、能够对输入的源程序做出正确的语法分析并输出清

3、晰的结果;6、高级语言的规模不易过大,注重编译器内核的设计,对于界面无要求;7、课程设计报告中应对所自定义高级语言进行简单描述,对编译器的设计进行简单的需求分析,给出设计说明和程序结构框架,编译原理课程设计报告- 1 -阐明设计思路、用到的原理和方法。8、不可更改课程设计报告中已有的字体和格式,课程设计报告中新加入内容,汉字采用宋体五号字,英文字符和数字采用 Times New Roman 五号字。9、课程设计报告中的运行结果应以程序运行截图程序运行截图形式出现。10、程序源代码以邮件名称:“班级学号姓名”发送至指定邮箱:四进度安排四进度安排序号内 容时间(天)1布置题目、查找资料12概要设计

4、13详细设计34调试分析15测试结果0.56总结和完成设计报告1合 计7.5五成绩评定五成绩评定1.考核方法:通过现场考勤、检查源程序和批改课程设计报告相结合的方式考察学生的动手能力,独立分析解决问题的能力和创新精神,并根据学生的学习态度综合考评。2.成绩评定:成绩分优、良、中、及格和不及格五等。编译原理课程设计报告- 2 -六设计思路六设计思路1.1.词法分析词法分析(1 1)单词符号及种别表)单词符号及种别表符号种别编码说明 sy_if0保留字 if sy_then1保留字 then sy_else2保留字 else sy_while3保留字 whlie sy_begin4保留字 begi

5、n sy_do5保留字 do sy_end6保留字 end a7赋值语句 semicolon8 “;” e9布尔表达式 jinghao10“#” S11语句 L12复合语句 tempsy15临时变量 EA18B and EO19B or plus34“+” times36“*” becomes38“:=” op_and39“and” op_or40“or” op_not41“not” rop42关系运算符 lparent48“(” rparent49“) ” ident56变量 intconst57整常量编译原理课程设计报告- 3 -2.SLR 的分析表:的分析表:1). 算术表达式的算术表达

6、式的 SLR(1)分析表:分析表:算数表达式文法 GE如下:E-E+E|E*E|(E)|i将文法 GE拓广为文法 GE:(0) SE(1)EE+E(2)EE*E(3)E(E)(4)Ei由此得到算数表达式的 SLR(1)分析表如下:ACTIONGOTO 状态i+*()#E0s3s211s4s5acc2s3s263r4r4r4r44s3s275s3s286s4s5s97r1s5r1r18r2r2r2r29r3r3r3r32). 布尔表达式的布尔表达式的 SLR 分析表:分析表:布尔表达式的文法如下:B-BB|BB|B|I rop i|i为了便于语法分析时加工处理,我们将上述文法改为文法 GS:编译

7、原理课程设计报告- 4 -BBAB|B0B|B|(B)|I rop i|iBABB0 B将文法 GS拓广为文法 GS:(0)SB(1)B i(2)B I rop i(3)B (B)(4)B NOT B(5)A B AND(6)B AB(7)O B OR(8)B OB由此得到布尔表达式的 SLR(1)分析表如下:ACTION GOTO状态irop()NOTANDOR#BAO0s1s4s513781s2r1r1r1r12s33r2r2r2r24s1s4s511785s1s4s56786r4s9s10r47s1s4s514788s1s4s515789r5r5r510r7r7r711s12s9s101

8、2r3r3r3r313s9s10acc14r6s9s10r615r8s9s10r8编译原理课程设计报告- 5 -3). 程序语句的程序语句的 SLR 分析表:分析表:程序语句的文法 GS如下Sif e then S else S|while e do S|begin L end|aLS;L|S由于在编译程序设计与视线中,我们是将赋值语句与算数表达式归为一类处理的,故在此将赋值语句仅看作是程序语句文法中一个终结符 a,将布尔表达式 B 也看作为终结符 e。将文法 GS拓广为文法 GS:(0)S S(1)S if e then S else S(2)S while e do S(3)S begin

9、 L end(4)S a(5)L S(6)L S;L编译原理课程设计报告- 6 -由此得到程序语句的 SLR(1)分析表如下:ACTION GOTO状 态ifthenelsewhilebegindoenda;e#SL0s2s3s4s511acc2s63s74s2s3s4s5985r4r4r4r46s107s118s129r5s1310s2s3s4s51411s2s3s4s51512r3r3r3r313s2s3s4s591614s1715r2r2r2r216r617s2s3s4s51818r1r1r1r1七源程序及运行结果七源程序及运行结果1)源代码:)源代码:#include #include

10、 #include #define ACC -2 /*/ #define sy_if0 #define sy_then1 #define sy_else2 #define sy_while3 #define sy_begin4编译原理课程设计报告- 7 -#define sy_do5 #define sy_end6 #define a7 #define semicolon8 #define e9 #define jinghao10 #define S11 #define L12 #define tempsy15 #define EA18 #define EO19 #define plus34

11、#define times36 #define becomes38 #define op_and39 #define op_or40 #define op_not41 #define rop42 #define lparent48 #define rparent49 #define ident56 #define intconst57 /*/ charch=0; intcount=0; static char spelling10=“ “; static char line81=“ “; char*pline; staticchar ntab110010; structntab int tc; int fc; ntab2200; int label=0; struct rwords char sp10; int sy; ; struct rwords reswor

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号