- 2
- 0
- 约6.84千字
- 约 11页
- 2018-11-21 发布于江苏
- 举报
flex词法研究器
实验项目一 词法分析器
一、实验类型
本实验为验证性实验。
二、实验目的
1.通过本实验加深对词法分析程序的功能及实现方法的理解;
2.使用flex实现词法分析程序。
三、准备工作和预备知识
Lex(Lexical Analyzar?词法分析生成器)是Unix下十分重要的词法分析工具。经常用于语言分析,公式编译等广泛领域。
1.Lex(Lexical Analyzar)?初步示例
先看简单的例子:
一个简单的Lex文件?exfirst.l?内容:
%{
#include stdio.h
%}
%%
[\n]??????????????????;
[0-9]+????????? printf(Int?????: %s\n,yytext);
[0-9]*\.[0-9]+????? printf(Float???: %s\n,yytext);
[a-zA-Z][a-zA-Z0-9]*??printf(Var?????: %s\n,yytext);
[\+\-\*\/\%]???????printf(Op??????: %s\n,yytext);
“.”??????????????printf(Unknown : %c\n,yytext[0]);
%%
在命令行下执行命令flex解析,会自动生成lex.yy.c文件:
[root@localhost liweitest]flex exfirst.l
进行编译生成parser可执行程序:
[root@localhost liweitest]cc -o parser lex.yy.c –ll
或者
[root@localhost liweitest]gcc lex.yy.c –ll -o parser
[注意:如果不加-ll链结选项,cc编译时会出现以下错误,后面会进一步说明。]
/tmp/cciACkbX.o(.text+0x37b): In function `yylex:
: undefined reference to `yywrap
/tmp/cciACkbX.o(.text+0xabd): In function `input:
: undefined reference to `yywrap?
创建待解析的文件?file.txt:
title
i=1+3.9;
a3=909/6
bcd=4%9-333
通过已生成的可执行程序,进行文件解析。
[root@localhost liweitest]# ./parser file.txt
Var?????: title
Var?????: i
Unknown : =
Int?????: 1
Op??????: +
Float???: 3.9
Unknown : ;
Var?????: a3
Unknown : =
Int?????: 909
Op??????: /
Int?????: 6
Var?????: bcd
Unknown : =
Int?????: 4
Op??????: %
Int?????: 9
Op??????: -
Int?????: 333
到此Lex用法会有个直观的了解:
a.定义Lex描述文件
b.通过lex,flex工具解析成lex.yy.c文件
c.使用cc或gcc编译lex.yy.c生成可执行程序
再来看一个比较完整的Lex描述文件??exsec.l??:
%{
#include stdio.h
int linenum;
%}
%%
“title”????????????????showtitle();
[\n]?????????????????linenum++;
[0-9]+?????????????printf(Int?????: %s\n,yytext);
[0-9]*\.[0-9]+????????printf(Float???: %s\n,yytext);
[a-zA-Z][a-zA-Z0-9]*??printf(Var?????: %s\n,yytext);
[\+\-\*\/\%]???????printf(Op??????: %s\n,yytext);
“.”???????????????printf(Unknown : %c\n,yytext[0]);
%%
showtitle()
{
printf(----- Lex Example -----\n);
}
int main()
{
linenum=0;
yylex(); /*?进行分析?*/
printf(\nLine Count: %d\n,linenum);
return 0;
}
int yywrap()
{
return 1;
}
进行解析编译:
[root@localhost liweitest]flex ex
您可能关注的文档
- EDA实验课件GKPK.doc
- Ekspancouk网站改版实施方案.doc
- d螺杆泵结构原理及选泵研究报告.ppt
- ePMS电力行业ERP解决实施方案.doc
- ERP与JIT案例研究.doc
- erzsams制造企业员工培训实施方案探究.doc
- Ethereal研究以太网.doc
- ERP实际应用实施方案ERP.doc
- eumrvkk娱乐网站解决实施方案.doc
- EVA价值管理在中小企业中应用研究.doc
- 《GB 19079.4-2025体育场所开放条件与技术要求 第4部分:攀岩场所》.pdf
- GB/T 46918.1-2025微细气泡技术 水中微细气泡分散体系气体含量的测量方法 第1部分:氧气含量.pdf
- 中国国家标准 GB/T 46918.1-2025微细气泡技术 水中微细气泡分散体系气体含量的测量方法 第1部分:氧气含量.pdf
- 《GB/T 46918.1-2025微细气泡技术 水中微细气泡分散体系气体含量的测量方法 第1部分:氧气含量》.pdf
- 中国国家标准 GB 19079.4-2025体育场所开放条件与技术要求 第4部分:攀岩场所.pdf
- 《GB/T 44807.2-2025集成电路电磁兼容建模 第2部分:集成电路电磁干扰特性仿真模型 传导发射建模(ICEM-CE)》.pdf
- GB/T 44807.2-2025集成电路电磁兼容建模 第2部分:集成电路电磁干扰特性仿真模型 传导发射建模(ICEM-CE).pdf
- 中国国家标准 GB/T 44807.2-2025集成电路电磁兼容建模 第2部分:集成电路电磁干扰特性仿真模型 传导发射建模(ICEM-CE).pdf
- GB/T 19405.4-2025表面安装技术 第4部分:湿敏器件的处理、标记、包装和分类.pdf
- 中国国家标准 GB/T 19405.4-2025表面安装技术 第4部分:湿敏器件的处理、标记、包装和分类.pdf
原创力文档

文档评论(0)