实验一 词法分析器
一、实验目的
1、通过本实验加深对词法分析程序的功能及实现方法的理解;
2、使用 LEX 实现词法分析程序。
二、实验内容
下面是一个简单C语言的词法:
1.关键字:
else if int return void while
所有的关键字都是保留字,并且必须是小写。
2.下面是专用符号:
+ - * / < <= > >= == != = ; , ( ) [ ] { }
3.其他标记是ID 和NUM ,通过下列正则表达式定义:
ID = letter letter*
NUM = digit digit*
letter = a|..|z|A|..|Z
digit = 0|..|9
小写和大写字母是有区别的。
要求实现该 C 语言的词法分析程序,并写出详细的步骤和源程序。
三、实验步骤及程序源代码
实验步骤:
1. 检查 linux 上有没有安装 Flex,一般都是默认安装的
(1)、在 linux 的终端上输入 Flex 命令,会提示系统是否已经安装 Flex
如果没有安装,在用相应命令安装:sudo apt-get install 5ex。
2. 编写 lex 源程序
3. 编译 lex 文件:5ex 7.l,生成 lex.yy.c 源程序;然后编译此 c 源程序:gcc lex.yy.c -ll
–o 7,生成可执行词法分析器。
4
运行此词法分析器:./7 ,然后输入相应的源程序,即得到相应的词法分析结果
源代码:
%{
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
%}
%%
"else" { printf("%10s KEY_else ",yytext);}