《编译原理实践》课程教学资源(PPT讲稿)词法分析程序的自动生成器LEX

编译原理实践 词法分析程序的自动生成器LEX
编译原理实践 --词法分析程序的自动生成器LEX

畚由于各种高级程序设计语言的单词形式 基本上可以用一组正规式来描述,人们 就希望能否构造一个自动生成系统,只 要给出程序设计语言的各类单词描述以 及识别出各类单词后应输出的结果,这 种自动系统便能自动产生此程序设计语 言的词法分析程序 Lex就是这样一个工具,他将正规式转换 为一个NFA,进而转换为相应的DFA, 这个DFA可以识别该正规式所表示的语 言的句子
由于各种高级程序设计语言的单词形式 基本上可以用一组正规式来描述,人们 就希望能否构造一个自动生成系统,只 要给出程序设计语言的各类单词描述以 及识别出各类单词后应输出的结果,这 种自动系统便能自动产生此程序设计语 言的词法分析程序 Lex就是这样一个工具,他将正规式转换 为一个NFA,进而转换为相应的DFA, 这个DFA可以识别该正规式所表示的语 言的句子

LEX筒单的介绍 1 LEX(lexical analyzer generator 个词法分析程序的自动生成器 LEX是1972年贝尔实验室首先在 UNIX上实现的 2 FLEX(fast lexical analyzer generator)是对LEX的扩充它可在 MS-DOS下运行.我们这里实际使用 的是FLEX,但仍称呼为LEX
LEX简单的介绍 1 LEX(lexical ananlyzer generator) 一个词法分析程序的自动生成器. LEX是1972年贝尔实验室首先在 UNIX上实现的. 2 FLEX(fast lexical ananlyzer generator) 是对LEX的扩充,它可在 MS-DOS下运行. 我们这里实际使用 的是FLEX,但仍称呼为LEX

)LEX简单的介绍 LEX能根据给定的正则表达式自动生成 相应的词法分析程序 输入是用LEX语言写的源程序 生成:用C语言描述的词法分析程序 LEX生成的目标程序包含一个状态转换 矩阵和一个控制执行程序
LEX简单的介绍 • LEX能根据给定的正则表达式自动生成 相应的词法分析程序 • 输入:是用LEX 语言写的源程序 • 生成:用C语言描述的词法分析程序 • LEX生成的目标程序包含一个状态转换 矩阵和一个控制执行程序

③LEX使用流程 使用LEX的流程如图 LEX源程序 LEⅩ YYLEX. C YYLEX. C C编译器 YYLEⅩ,EⅩE 字符串源程序 YYLEX. EXEH符号串源程序 LEX源程序是使用LEX语言编写的词法规则说明,经过LEⅩ 翻译后形成目标文件 YYLEX. C;再用C编译器对 YYLEX.C进 行翻译,生成目标程序 YYLEX. EXE,它就是词法分析程序用 YYLEⅩEXE就可以将字符串源程序转换成符号串源程序
LEX使用流程 使用LEX的流程如图: LEX源程序 LEX YYLEX.C YYLEX.C C编译器 YYLEX.EXE 字符串源程序 YYLEX.EXE 符号串源程序 LEX源程序是使用LEX语言编写的词法规则说明,经过LEX 翻译后形成目标文件YYLEX.C;再用C编译器对YYLEX.C进 行翻译,生成目标程序YYLEX.EXE,它就是词法分析程序,用 YYLEX.EXE就可以将字符串源程序转换成符号串源程序

用LEX语言表达正则表达式 LEX的输入是LEX源程序 首先介绍如何表示正则表达式 LEX表示正则表达式时采用一些元字符*+() ]|{}”"等,表示方法如下 (1)对于单个的字母a就直接表示成a如a,+,等 (2)[abC]表示字符ab,或c中的任一个,如[01] 表示0或1 (3)[a-d]表示字符ab,C或d中的任一个 (4)[^ab]表示除了a或b外的任一个字符
用LEX语言表达正则表达式 LEX的输入是LEX源程序. 首先介绍如何表示正则表达式. LEX表示正则表达式时采用一些元字符* + ( ) \ [ ] | { } “ “等,表示方法如下. (1)对于单个的字母a,就直接表示成a,如a,+,-等 . (2)[abc]表示字符a,b,或c中的任一个,如[01] 表示0或1 (3)[a-d]表示字符a,b,c或d中的任一个. (4)[^ab]表示除了a或b外的任一个字符

)用LEX语言表达正则表达式 (5).表示除了换行符之外的任一个字符 (6)"text"表示双引号里的每个字符(包括元字符)都按 字符处理,如"ab[01]"就是表示ab[01]是字符串,其中 的[和]不是元字符 (7)\转义字符 (8){XXX名字XXX表示的正则表达式。 (9)r|s表示正则表达式r或正则表达式S (10)rs表示正则表达式r与正则表达式s的连接
用LEX语言表达正则表达式 (5). 表示除了换行符之外的任一个字符. (6)”text”表示双引号里的每个字符(包括元字符)都按 字符处理,如”ab[01]”就是表示ab[01]是字符串,其中 的[和]不是元字符 (7) \ 转义字符 (8){xxx}名字xxx表示的正则表达式。 (9)r|s表示正则表达式r或正则表达式s。 (10)rs表示正则表达式r与正则表达式s的连接

)用LEX语言表达正则表达式 (11)(r)表示(内的优先级高于括号外。 (12)r*表示正则表达式r可重复零次或多次。 (13)r+表示正则表达式可重复一次或多次。 (14)?表示是一个可选的正则表达式。 (15)r{m,n}其中m,n是正整数,表达正则表达式r的 m~n次重复。 (16)r{m}表示正则表达式r的m次重复。 (17)r{m,}表示正则表达式r的m到多次的重复 (18)^行的开始,$行的结尾
用LEX语言表达正则表达式 (11)(r)表示()内的优先级高于括号外。 (12)r*表示正则表达式r可重复零次或多次。 (13)r+表示正则表达式r可重复一次或多次。 (14)r?表示r是一个可选的正则表达式。 (15)r{m,n}其中m,n是正整数,表达正则表达式r的 m~n次重复。 (16)r{m}表示正则表达式r的m次重复。 (17)r{m,}表示正则表达式r的m到多次的重复。 (18)^行的开始,$行的结尾

用EX语言表达正则表达式 例 1)二进制数 (0|1)* 2)以a或b开头的由a和b任意组成的字符串 (aa bb(a b o(aa bb[] 3)任何一个从0~9的数字 [0-9 4)长度不超过8的小写字符串 [a-z]{1,8}
用LEX语言表达正则表达式 例: 1)二进制数 (0|1)* 2)以aa或bb开头的由a和b任意组成的字符串 (aa|bb)(a|b)*或(aa|bb)[ab]* 3) 任何一个从0~9的数字: [0-9] 4)长度不超过8的小写字符串 [a-z]{1,8}

用LEX语言表达正则表达式 5)无符号整数 [0-9]+ 6)可带小数点的有符号数 C+“|″-")?[0-9]+(.”[0-9]+ 7)可带指数的有符号数 +""-")?[0-9]+(.[0-9]+)?(EC+"-)?[0-9]+)? 8)标识符:字母或开头,后跟字母数字、下划线等字符 [a-zA-Z](a-zA-z]|[0-9])* 9)空白区 [\t\n]+
用LEX语言表达正则表达式 5) 无符号整数 [0-9]+ 6)可带小数点的有符号数 (“+”|”-”)?[0-9]+(“.”[0-9]+)? 7) 可带指数的有符号数 (“+”|”-”)?[0-9]+(“.”[0-9]+)?(E(“+”|”-”)?[0-9]+)? 8)标识符:字母或_开头,后跟字母数字、下划线等字符 [a-zA-Z_]([a-zA-Z_]|[0-9])* 9)空白区 [ \t\n]+
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第四章 Applet及其应用.ppt
- 《计算机组装与维修》课程教学资源(PPT讲稿)第7章 显示器.ppt
- 计算机问题求解(PPT讲稿)算法在计算机科学中的地位(算法的效率).pptx
- 西安电子科技大学:《Mobile Programming》课程PPT教学课件(Android Programming)Lecture 9 Service and Broadcast Receiver.pptx
- 泛型编程 Generic Programming(PPT讲稿)Templates.ppt
- 北京大学SAS俱乐部:SAS软件会员培训(PPT讲稿)SAS编程语言入门.ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第三章 栈和队列.pps
- 白城师范学院:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 关系数据理论.pptx
- 安徽广播影视职业技术学院:《ASP动态网页设计实用教程》课程教学资源(PPT讲稿)第1章 ASP基础(贾海陶).ppt
- 《MATLAB应用基础》课程教学资源(PPT课件讲稿)第4章 MATLAB的数值计算.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第七章 中间代码生成.ppt
- 上海交通大学:Basic Raster Graphics Algorithms for Drawing 2D Primitives.ppt
- Transport Layer Identification of P2P Traffic.ppt
- 复旦大学:《数据库基础与应用》课程PPT教学课件(Access案例教程)第1章 数据库基础知识.pptx
- 香港科技大学:Advanced Topics in NextGeneration Wireless Networks.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第五章 语法分析——自下而上分析.ppt
- 香港城市大学:Introduction to Real-Time Systems(Design and Analysis of Algorithms).pptx
- 《网站设计与建设 Website design and developments》课程教学资源(PPT课件讲稿)第一部分 Web基础知识 第3章 图形与Web设计.ppt
- 《汇编语言》课程PPT教学课件:第三章 80x86寻址方式和指令系统.ppt
- 清华大学:高校信息门户建设(PPT讲稿).ppt
- 华中科技大学:《面向对象程序设计》课程PPT教学课件(Visual C++ 编程)第2讲 Visual C++ 6.0开发环境.ppt
- 东南大学:《泛型编程 Generic Programming》课程教学资源(PPT课件讲稿)Chapter 14 Templates.ppt
- Coded Caching under Arbitrary Popularity Distributions.pptx
- Distributed Systems and Networking Programmin(SOAP – Introduction).ppt
- 北京师范大学现代远程教育:《计算机应用基础》课程教学资源(PPT课件讲稿)第5章 Microsoft Excel 2010.pptx
- 图形处理及多媒体应用(PPT课件讲稿).pps
- Vitebi 译码.ppt
- 香港城市大学:Rank Aggregation in MetaSearch.ppt
- 《计算机网络技术》课程教学资源(PPT课件讲稿)第5章 广域网.ppt
- 中国科学技术大学:《现代密码学理论与实践》课程教学资源(PPT课件讲稿)第二部分 公钥密码和散列函数 第8章 数论入门(苗付友).pptx
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)向量体系结构.pptx
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)面向对象的分析与设计简介 OOA & OOD:An introduction.ppt
- 北京师范大学现代远程教育:《计算机应用基础》课程教学资源(PPT课件讲稿)第1章 计算机常识(主讲:马秀麟).pptx
- 《并发控制技术》课程教学资源(PPT课件讲稿)第7章 事务管理 transaction management.ppt
- 山东大学软件学院:非线性规划(PPT讲稿)一维搜索方法.ppt
- 合肥工业大学:《计算机网络技术》课程教学资源(PPT课件讲稿)第4章 交换网的运行.ppt
- 长春工业大学:《网页设计与制作》课程教学资源(PPT课件)第5章 Div+CSS布局技术.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 09 Evaluation.ppt
- 上海交通大学:《计算机图形学 Computer Graphics》课程教学资源(PPT讲稿)CHAPTER 4 THE VISUALIZATION PIPELINE.pptx
- 香港中文大学:XML for Interoperable Digital Video Library.ppt