当前位置:首页 > (完整版)基于LEX的词法分析器实验报告
编译原理课程实验报告
实验名称: 基于LEX的词法分析器 学生姓名: 赵 宁 学生学号: 2013020109 指导 教 师 毛 静
一、实验目标
自动构造C-语言的的词法分析器,要求能够掌握编译原理的基本理论,,理解编译程序的基本结构,掌握编译各阶段的基本理论和技术,掌握编译程序设计的基本理论和步骤.,增强编写和调试高级语言源程序的能力,掌握词法分析的基本概念和实现方法,熟悉C-语言的各种Token。
二、实验原理及方法
Lex输入文件由3个部分组成:定义集(definition),规则集(rule)和辅助程序集(auxiliary routine)或用户程序集(user routine)。这三个部分由位于新一行第一列的双百分号分开,因此,Lex输入文件的格式如下
{definitions} %% {rules} %%
{auxiliary routines}
而且第一部分用“%{”和“%}”括起来。
第一和第三个部分为C语言的代码和函数定义,第二个部分为一些规则。 定义正则表达式如下
ID = letter letter* NUM = digit digit* Letter = a|…|z|A|…|Z Digit = 0|…|9
Keyword = else|if|int|return|void|while
Special symbol = +|-|*|/|<|<=|>|>=|==|!=|=|;|,|(|)|[|]|{|}|/*|*/ White space = “ ” Enter = \\n 在lex中的构造 letter [A-Za-z] digit [0-9]
id ({letter}|[_])({letter}|{digit}|[_])* error_id ({digit})+({letter})+
num {digit}+ whitespace [ \\t]+ enter [\\n]+ 构造DFA图
三、实验内容
? Win7下lex 与 yacc的安装配置; ? 利用Parser Genarator的词法分析器构造
四、实验步骤
1) Win7下lex 与 yacc的安装配置
1、lex的安装
首先,下载下载flex和bison.
其次,安装完毕后,将c:\\gnuwin32\\lib里面的libfl.a和liby.a复制到C:\\MinGW\\lib里面。
再者,设置环境变量。 最后,测试安装是否成功。 2、使用lex生成此法分析器:
新建文本文件,更改名称为a.lex,敲入下面代码-------词法分析器的源代码 %{
int wordCount = 0; int numcount = 0; %}
chars [A-Za-z\\_\\'\\.\\\numbers ([0-9])+ delim [\whitespace {delim}+ words {chars}+ %%
while {ECHO; printf(\{words} { wordCount++;
/* increase the word count by one*/ } {whitespace} { /* do nothing*/ }
([0-9])+ { numcount++; /* one may want to add some processing here*/ %%
void main() {
printf(\
yylex(); /* start the analysis*/
printf(\
printf(\
return 0; }
int yywrap() { return 1;
}
共分享92篇相关文档