文档介绍:课程设计报告
课程设计名称: 编译技术
系: 三系
学生姓名:
班级: 09软件(1)
学号: 20090307134
成绩:
指导教师:
开课时间: 2011-2012 学年二学期
目录
---------------------------------------------------------------- 1
---------------------------------------------------------------- 1
---------------------------------------------------------------- 1
---------------------------------------------------------------- 1
---------------------------------------------------------------- 2
---------------------------------------------------------------- 2
---------------------------------------------------- 3
---------------------------------------------------------------- 15
正文
设计题目
小型程序设计语言编译器的设计与实现
自定义一种简单的小型高机程序设计语言,采用任意一种编程语言和编程工具设计并实现其编译器,展示编译系统中词法分析和语法分析(LR分析方法)的全过程。
1、对单词的构词规则有明确的定义;
2、编写的词法分析程序能够正确识别源程序中的单词符号;
3、识别出的单词以<种别码,值>的二元式形式保存在符号表中并输出;
4、构造出程序设计语言各语法单位的SLR分析表;(其他分析表亦可)
5、能够对输入的源程序做出正确的语法分析并输出清晰的结果;
6、高级语言的规模不易过大,注重编译器内核的设计,对于界面无要求;
7、课程设计报告中应对所自定义高级语言进行简单描述,对编译器的设计进行简单的需求分析,给出设计说明和程序结构框架,阐明设计思路、用到的原理和方法。
8、不可更改课程设计报告中已有的字体和格式,课程设计报告中新加入内容,汉字采用宋体五号字,英文字符和数字采用Times New Roman五号字。
序号
内容
时间(天)
1
布置题目、查找资料
1
2
概要设计
1
3
详细设计
3
4
调试分析
1
5
测试结果
6
总结和完成设计报告
1
合计
1、考核方法:通过现场考勤、检查源程序和批改课程设计报告相结合的方式考察学生的动手能力,独立分析解决问题的能力和创新精神,并根据学生的学习态度综合考评。
2、成绩评定:成绩分优、良、中、及格和不及格五等。
开始做的时候很纠结不知道如何开始,然后就按照书上的内容进行编程。但书上的程序太大了,而给自己做的时间有太少了。所以就选择参照书上的内容自己动手,词法分析的思路基本上和书上的一样对每个词进行分析编号。但是由于书上内容复杂,所以我只做了赋值语句的顺序处理部分。而且和书上的赋值语句相比我有加了减法和除法的功能。并且在读取阶段,书上是按行读取(读到”\n”为一个readline),而我选择了按语句进行读取(读到”;”为一个readline)。因为有时候一行之间会有好几个语句。我可以把一行上的多个语句分开来,当然书上也可以只不过这一步她是在程序语句处理里面完成的。而我只有赋值语句。并且还要实现顺序结构所以就按照自己的思路做下去了。
然后是语法分析,由于词法分析和书上的有出路。所以一开始我就没打算用书上的思路去做。就按照自己的思路来解决,首先是对词法分析里的存储单词的数组进行拷贝和修改(添加了#号使其能区分出赋值语句)、然后正式的语法分析时,我是直接对拷贝后的数组进行分析的,中间出了不少错误,更关键的是语法分析时在顺序上出现了错误,这一点我无法用语言说清楚,解决顺序上的错误时我加入了add1()这个函数,同时这个函数也实现了将终结符改为非终结符的功能(也就是所谓的临时变量)。然后就是一个语句分析完后进行下一个语句的分析。这个就是个衔接问题,改动数组的坐标就能完成,大概的思路就是这样,中间调试时错误百出,对语法分析