文档章节

词法分析器flex教程

陶小陶
 陶小陶
发布于 01/18 14:07
字数 410
阅读 10
收藏 0

词法分析器flex教程

flex是基于正则表达式,用于对字符串进行提取和分析的工具。一般情况下,flex常用语编译器前端的词法分析阶段。flex程序读取用户输入的词法单元描述文件,生成lex.yy.c文件,接着使用c语言编译器编译该文件即可。学会使用flex,可以简化我们在文本分析中的工作,利用已有的工具即可。

flex输入文件的格式

flex输入文件中包含三个部分,即定义、规则和用户代码。格式如下:

definitions
%%
rules
%%
user code

在定义和规则部分,任何处于符号“%{”和“%}”之间的字符都会原样复制到输出中。

flex模式的规则

flex中的模式是扩展正则表达式,其中稍微不通的地方在与flex中双引号间的字符都会原样匹配,即使其中包含运算符。而在正则表达式中,则是通过转义符号来实现对运算符的匹配(flex中也支持此方法)。

一个简单的事例

flex代码如下: flex示例代码

测试代码: flex示例测试代码

输出结果,读者可以自行尝试。

Flex参考文档 测试代码

© 著作权归作者所有

共有 人打赏支持
上一篇: PHP语法总结
陶小陶
粉丝 1
博文 38
码字总数 49215
作品 0
深圳
程序员
私信 提问
如何用flex+bison写语法分析器

背景 这个星期,项目中要使用C++或C语言解析JSON格式的数据,把解析的结果放到一个通用的数据结构。这个通用的数据结构,实际上是作为web服务层(这一层大家可以认为是类似于PHP服务器或web...

costaxu
2013/02/02
0
0
使Emacs支持词法分析器 flex

最近在学习 flex & bison, EmacsWiki 上的 flex-mode 写的太烂了, 语法高亮支持的很差, 所以顺手写了一个新的插件 flex flex 支持 flex 的模式代码区域的语法高亮, 提供了更完备的 hook 支持...

ManateeLazyCat
2018/10/04
0
0
《Flex & Bison》阅读笔记

最近在看 《Flex & Bison》 这本书, 针对书中的例子进行解读和笔记, 以消化每一个知识细节, 所以本文会持续更新, 直到《Flex & Bison》读完. 因为本文只是针对源码程序进行简单的笔记备忘, 不...

ManateeLazyCat
2018/10/04
0
0
【flex&bison翻译】写在前面

从此文开始,我将连载翻译O'Reilly出版的,由John Levine著的《flex & bison》一书(见下图)。 一来强化自己的知识水平,二来能让自己静下心来细细读一本英文著作。毕竟自己读是一种感受,翻...

MatthewChie
2012/08/25
0
0
15 非常有用的 Adobe Flex 教程

Adobe Flex是最初由Macromedia公司在2004年3月发布的,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合。Flex是开发富互联...

红薯
2011/09/30
11.7K
5

没有更多内容

加载失败,请刷新页面

加载更多

matlab-自控原理 step、impulse 阶跃、脉冲响应 已知传递函数

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   已知传递函数,求其阶跃响应......

志成就
2分钟前
0
0
JDBC事务操作

事务特点:ACID 原子性(Atomicity):事务管理的系列操作必须全部完成,否则就算失败(类似操作系统的PV原语、信号量) 一致性(Consistency):同一个事务只要起始条件一致最终执行的结果一致 隔...

ZeroneLove
5分钟前
0
0
【scala】3.数组相关操作

简介 在本章中,我们将会学到如何在scala中操作数组。 1、定长数组 // 初始化长度为10的定长数组,每一个元素的值为0val nums = new Array[Int](10)// nums: Array[Int] = Array(0, 0, 0, ...

Areya
5分钟前
0
0
教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基...

董黎明
14分钟前
0
0
Nginx 配置 root目录、虚拟目录alias

Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定...

Yue_Chen
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部