基于LEX的词法分析器实验报告(共14页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于LEX的词法分析器实验报告(共14页).docx》由会员分享,可在线阅读,更多相关《基于LEX的词法分析器实验报告(共14页).docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 编译原理课程实验报告实验名称: 基于LEX的词法分析器 学生姓名: 赵 宁 学生学号: 指导 教 师 毛 静 一、实验目标自动构造C-语言的的词法分析器,要求能够掌握编译原理的基本理论,,理解编译程序的基本结构,掌握编译各阶段的基本理论和技术,掌握编译程序设计的基本理论和步骤.,增强编写和调试高级语言源程序的能力,掌握词法分析的基本概念和实现方法,熟悉C-语言的各种Token。二、实验原理及方法Lex输入文件由3个部分组成:定义集(definition),规则集(rule)和辅助程序集(auxiliary routine)或用户程序集(user routine)。这
2、三个部分由位于新一行第一列的双百分号分开,因此,Lex输入文件的格式如下definitions%rules%auxiliary routines而且第一部分用“%”和“%”括起来。第一和第三个部分为C语言的代码和函数定义,第二个部分为一些规则。定义正则表达式如下 ID = letter letter*NUM = digit digit*Letter = a|z|A|ZDigit = 0|9Keyword = else|if|int|return|void|whileSpecial symbol = +|-|*|/|=|=|!=|=|;|,|(|)|/*|*/White space = “ ”E
3、nter = n在lex中的构造letter A-Za-zdigit 0-9id (letter|_)(letter|digit|_)*error_id (digit)+(letter)+ num digit+whitespace t+enter n+构造DFA图三、实验内容l Win7下lex 与 yacc的安装配置;l 利用Parser Genarator的词法分析器构造四、实验步骤1) Win7下lex 与 yacc的安装配置1、lex的安装首先,下载下载flex和bison.其次,安装完毕后,将c:gnuwin32lib里面的libfl.a和liby.a复制到C:MinGWlib里面。
4、再者,设置环境变量。最后,测试安装是否成功。2、使用lex生成此法分析器:新建文本文件,更改名称为a.lex,敲入下面代码-词法分析器的源代码%int wordCount = 0;int numcount = 0;%chars A-Za-z_.numbers (0-9)+delim ntwhitespace delim+words chars+%while ECHO; printf(%sn,yytext);words wordCount+; /* increase the word count by one*/ whitespace /* do nothing*/ (0-9)+ numcoun
5、t+; /* one may want to add some processing here*/ %void main()printf(ok1n);yylex(); /* start the analysis*/printf(ok2n);printf( No of words: %dn number: %dn, wordCount, numcount);return 0;int yywrap()return 1;2、新建文本文件,更名为b.c,敲入下面代码 -此为输入源代码asd asdf 23 qa1b2!#while 3、打开菜单,运行,输入cmd。输入:cd 文件夹路径输入:flex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LEX 词法 分析器 实验 报告 14
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内