如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
--《编译原理》课程设计报告专业:计算机科学与技术学生姓名:张金荣指导教师:孔繁茹完成时间:Time\@"yyyy年M月d日"2024年10月3日2011—2012学年第一学期目录TOC\o"1-2"\h\zHYPERLINK\l"_Toc105219925"第1节课程设计目的1HYPERLINK\l"_Toc105219926"第2节课程设计要求1HYPERLINK\l"_Toc105219928"第3节课程设计内容2HYPERLINK\l"_Toc105219930"第4节状态转换图4HYPERLINK\l"_Toc105219931"第5节实现工具4HYPERLINK\l"_Toc105219932"第6节实现函数4HYPERLINK\l"_Toc105219934"第7节测试结果5HYPERLINK\l"_Toc105219946"第8节实验源代码6HYPERLINK\l"_Toc105219947"第9节参考文献9HYPERLINK\l"_Toc105219948"致谢感谢孔繁茹老师在课程设计中的大力支持及给予的无私帮助设计目的=1\*GB3\*MERGEFORMAT①理解词法分析器的基本功能。词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号(token),把作为字符串的源程序改造成单词符号串的中间程序。因此,词法分析是编译的基础。=2\*GB3\*MERGEFORMAT②理解词法规则的描述方法。程序设计语言一般可以用标识符、关键字、运算符、分隔符、常量、字符串和注释符来描述=4\*GB3\*MERGEFORMAT④理解状态转换图及其实现。一个状态转换图可用于识别(或接受)一定的字符。大多数程序语言的单词符号都可以用转换图予以识别。转换图非常易于用程序实现,最简单的办法是让每个状态结对应一小段程序。=4\*GB3\*MERGEFORMAT④能够编写简单的词法分析器。2.课程设计的要求手工构造一个简单的词法分析程序,能够识别标识符、整数、关键字、算符、界符。=1\*GB3\*MERGEFORMAT①画出识别单词的状态转换图。(若状态转换图过于复杂,可以只画出主要部分;若依旧复杂,可只识别标识符和整数)=2\*GB3\*MERGEFORMAT②根据状态转换图手工构造词法分析程序。从以下方法中选一:词法分析器作为独立的一遍。词法分析结果输出到屏幕上或存入文件。词法分析器作为一个子程序被语法分析器调用。每次调用返回一个单词同时将单词及属性存入符号表=3\*GB3\*MERGEFORMAT③实现状态转换图。从以下方法中选一:直接转向法表驱动法四、选做实验☻使用缓冲技术3.课程设计内容程序语言的单词符号一般可分为下列五种。(1)关键字是由程序语言定义的具有固定意义的标志符。本程序定义char,short,int,unsigned,long,float,double,struct,union,void,enum,const,typedef,auto,static,break,case,continue,default,do,else,for,if,return,switch,while,sizeof,printf,FILE,fopen,NULL,fclose,exit,read,closef,printf为关键字。(2)标识符用来表示各种名字,如变量名、数组名、过程名等等。(3)常数常数的类型一般有整型、实型、布尔型、文字型等等。例如,100,3.14159。(4)运算符如+、-、*、/、>=、<=、==等等(5)界符如[、]、{、}、(、)、;、,、.等等。具体实现过程:用c++编写词法分析程序,从文件中读入预分析的源程序经词法分析将结果写入指定文件中。在设计中预分析文件保存在test.txt中,输出结果保存在result.txt中。本程序实现了将词法分析器作为独立的一遍,词法分析结果存入文件。用直接转向法实现状态转换图。☻使用缓冲技术。本程序能够识别简单的运算符,界符,常数,标示符和关键字。其中关键字由程序所给的关键字表kt(keytable)内容指定。如有未涉及的关键字还可以通过修改程序中表内容扩展。对未定义的字符(不属于界符,运算符和常数)输出并显示为“其他字符”。文中特别定义了注释符号,换行符号和空格。在程序设计工程中一开始未注意将当前指针后退一位的情况,在输出程序结果时发现一些字符缺漏。通过查资料