资源描述:
《2010编译原理课程设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理课程设计2010年3月目的通过实际设计和开发,对“编译程序的设计方法和实现技术”更进一步的了解和掌握;培养大型软件的程序设计方法;一次真正的实践机会;设立开发小组;明确分工、协作;遵循基本的软件开发过程:设计、编码、集成和测试内容总体目标设计并实现SNL程序设计语言的编译程序;SNL语言是自定义的一种类Pascal语言,即嵌套式语言四个模块:词法分析模块语法分析模块(递归下降方法)语法分析模块(LL(1)方法)语义分析模块模块之间的关系语义分析模块词法分析模块语法分析模块(递归下降法)语法分析模块(LL(1)方法)要求三个层次基本掌握编译程序的基本构成;了解词法分析、语法分析和
2、语义分析的功能、设计过程;读懂SNL编译程序(词法分析、语法分析和语义分析)的源代码;提高按照书中介绍的方法和过程,参考已有的SNL编译程序的源代码,自己设计并实现词法分析、语法分析和语义分析模块;(C语言)高级在掌握已有的编译原理方法和实现技术基础上,自己设计并实现,特别是采用面向对象的软件设计思想;(Java)时间安排下午1:00-4:00,请牢记,勿迟到!上机时间:第3周至第10周(共8周,3月29日~5月21日)注:时间比较紧张,注意合理分工和利用课后时间课堂纪律&成绩评定原则上每3名同学为一组,协作完成全部程序,检查程序时,组内成员必须全部到场每个程序给一个成绩,成绩分优秀、
3、良好、中等、及格和不及格五档.综合四个程序的成绩作为每组的总成绩.每组成员因为表现不同,成绩会有不同!若点名有3次未到,成绩为不及格在有效时间内请指导老师检查程序指导老师张红申春张晶SNL语言简介SNL(SmallNestedLanguage)是自行定义的教学模型语言,它是一种类似Pascal的“高级”程序设计语言1、字母表2、数据类型3、程序结构4、语句类型5、语义规定6、程序实例1、SNL语言的字母表(P7)字母:{a..zA..Z}数字:{0..9}运算符:{+,-,*,/,<,=}格式符:{(,),[,],{,},.,EOF,;,空格符,回车符,换行符,’,}2、SNL的数据类
4、型整型(integer)0,20,209,。。。字符型(char)‘a’,‘b’,‘A’,。。。数组(array[low..up]oftype)counter:array[1..10]ofintegercounter[5],counter[9],counter[10],…记录(recordtypeidlist;…;typeidlistend)redix:recordintegerx,y;charchendredix.x,redix.y,redix.ch3、SNL的程序结构(P8)Program声明---类型声明、变量声明、过程声明Body---语句序列.---程序结束符4、SNL的语句
5、类型顺序语句;是语句间的分隔符条件/分支语句ifexpthen语句列else语句列fi循环语句whileexpdo语句列endwh过程调用语句call过程名(实参表)5、SNL的语义(P13-14)标识符表示变量名、类型名、记录域名、过程名;程序包含显式声明,标识符必须先声明,然后再使用同层过程,不允许标识符的重复定义标识符的作用域和Pascal语言的嵌套作用域规定相同。过程声明可以嵌套;参数有变参、值参两种;过程调用时,实参的个数和类型必须与形参的个数和类型相符;……6、SNL的程序例子P12-P13用SNL语言编写的冒泡排序程序SNL的程序结构变量声明、过程声明循环语句、分支语句、
6、输入/输出语句数组类型等P55简单的输入输出语句程序第一个任务:SNL的词法分析输入:SNL源程序(字符串,文件)输出:Token序列(Token的数据结构)算法:有限自动机实现方式:可手工,可利用FLEXSNL单词的自动机startdoneIDIntNumAssignNZ-digitdigitotherother+,-,*,/,>
7、<
8、=
9、
10、;
11、(
12、)
13、空格
14、回车
15、换行:=letterletterdigitChar’Char’letterdigit’Come{}SNL语言的保留字(P53)programtypeintegercharvarprocedurebeginendreturn
16、arrayofrecordifthenelsefiwhiledoendwhreadwrite共21个保留字第二个任务:SNL的递归下降语法分析程序递归下降分析的思想检查SNL语言的文法是否满足递归下降分析的条件编写递归子程序输入:Token序列输出:语法树用实例程序验证分析是否正确第三个任务:SNL的LL(1)语法分析程序LL(1)分析的思想构造并存储LL(1)分析表编写LL(1)驱动程序输入:Token序列输出:语法树第四个任务:SNL的语义