编译原理词法分析器实践报告.docx

上传人:scccc 文档编号:13813673 上传时间:2022-01-24 格式:DOCX 页数:14 大小:81.18KB
返回 下载 相关 举报
编译原理词法分析器实践报告.docx_第1页
第1页 / 共14页
编译原理词法分析器实践报告.docx_第2页
第2页 / 共14页
编译原理词法分析器实践报告.docx_第3页
第3页 / 共14页
编译原理词法分析器实践报告.docx_第4页
第4页 / 共14页
编译原理词法分析器实践报告.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《编译原理词法分析器实践报告.docx》由会员分享,可在线阅读,更多相关《编译原理词法分析器实践报告.docx(14页珍藏版)》请在三一文库上搜索。

1、哈尔滨理工大学软件学院编译原理项目实践报告题目:词法分析器班级:软件15-4班专业:软件工程:吕小胜姓名:14学 号:指导教师:张春祥期:2017年4月19日一、需求分析 1二、系统设计 1(一)系统中的数据定义 1(二)系统的概要设计 2(三)系统的详细设计 2(四)系统的核心算法 3三、系统编码及运行 3(一)系统开发涉及的软件 3(二)系统运行界面及结果 4四、系统测试 5五、总结 6附录(源代码) 6、需求分析词法分析(Lexical Analysis)是编译的第一阶段。词法分析器的主要任务是读入源程序的输入字符、将他们组成词素,生成并输出一个词法单元序列, 每个词法单元对应一个词素。

2、这个词法单元序列被输出到语法分析器进行语法 分析。二、系统设计(一)系统中的数据定义本词法分析器演示的是C语言的一个子集,故字符集如下:(1)标识符:以字母开头的字母数字用。(2)常熟(3)保留字:auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long,register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsig

3、ned, void, volatile, while(4) jz5算符:+、-、*、/、 、=、!=、=、=、=、+、-、!、 &、& | ;(5)界符: () : # ,单词分类号标识符1常数2保留字3界符4运算符5单词分类表(二)系统的概要设计(三)系统的详细设计1、TestLexer()2、void writeFile(String str1,StringBuilder number) 3、boolean isDigit(char ch)4、boolean isLetter(char ch)5、boolean isKeyWord(StringBuilder str)6、boolean i

4、sOperator(char ch)7、boolean isSeparators(char ch)(四)系统的核心算法TestLexer。程序入口StringBuffer buffer;文件读入缓冲区Char口 cs;字符变量,存放源程序字符StringBuilder sb;boolean isLetter(char ch)字符串,存放切割出的字词判断ch是否为字母boolean isDigit(char ch)判断是否为数字boolean isKeyWord(String)判断是否为关键字boolean isOperator(char)判断是否为运算符boolean isSeparators

5、(char)判断是否为分隔符void writeFile(String str1,StringBuilder number)按照二元式规则写入文件三、系统编码及运行(一)系统开发涉及的软件WPSfc字、eclipse、(二)系统运行界面及结果intint a = G;for(int i = 0; i - 100; i+十)String bb = haha;return 0;gbd - id*本断揭出唔6 HM 总鲂Hlint main() int 3=0;|for(int i=0; i = 100; i+)String bb 二 hahreturn 9;字符 字喈符 字字符符 符符 符符 留识

6、符符符留识算数符留符留识算数符识算数符识算符 保标界界界保标运常界保界保标运常界标运常界标运界W sz J|I加岗梏摞3垄的|int int)【百i n(L main)())(4.()irn int)la(L a)(5小)00)(% ;)for13. for)(4. 0in.T(3. int)i(1 i)=)0(2,0)ri i(Li)=)100(2t 100)h(4.;)i(Li)+(5, +)p(4J)四、系统测试五、总结通过此次实验,让我了解到如何设计、编制并调试词法分析程序,熟悉了构造词法分析程序的手工方式的相关原理,加深了对编译原理词法分析的理解,本次使用java 语言直接编写此法分

7、析程序,也让我重新熟悉了java 语言的相关内容,加深了对java 语言的用途的理解。本程序的数据输入采取直接从文件中读取,而不是由键盘输入,因此在测试过程中,输入得到大大简化,但是本程序的关键字表只初始化了一部分关键字,还可继续扩充(只需扩大数组,向其中补充要添加的关键字),而且程序的测试数据存在不足,程序可能存在未发现的漏洞,以上两点有待改善。附录import class TestLexer ndsWith(str1) result = true ;return result;/ 判断是否为运算符public static boolean isOperator( char ch) bool

8、ean result = false ;for ( int i = 0; i ; i+)if ( operators i = ch) result = true ;return result;/ 判断是否为界符public static boolean isSeparator( char ch) boolean result = false ;for ( int i = 0; i ; i+) if ( Separators i = ch) result = true ; return result;/ 按照二元式规则写入文件public static void writeFile(String

9、 str1,StringBuilder number)throws IOException String str = number + number + ) ;if ( 1 ) str = str +t +if ( 2 ) str = str +t +if ( 3 ) str = str +t +if ( 4 ) str = str +t +if ( 5 ) str = str +t +t + ( + str1 +, +t + 标识符 ;t + 常数 ;t+ 保留字 ;t+ 界符 ;t+ 运算符 ;File file =new File( d:/ );true );FileWriter w = new FileWriter(file, (str +rn );();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1