flex 手册摘要
个人学习
摘抄翻译
http://www.cs.princeton.edu/~appel/modern/c/software/flex/flex.html#SEC1
程序的格式
分成显示的三部分 由%%分割开来
definition section
rules section
正则模式
notes :
1
这里的正则模式不同于大多数正则规则
非匹配符^ 会匹配到 换行符
如果不想 [^abc] 匹配过一个整行的话
请使用 [^abc\n]
2
一个正则最多有一个 后缀内容 / or $
start codition ^ <> 只能会出现在模式的开头
并且以上四个 符号不不能呗 gourped 到一个括号里面去
^$不出现在正确的位置将被认为是一个普通的字符
以下两个例子是不合法的
foo/bar$ 出现了两个后缀内容
foobar
Start condition
有两种 Start condition
一种是 inclusive(%s) 一种是 exclusive (%x)
使用begin 之后就是 活跃的 同时其他的 start codition 变得不活跃
对于 inclusive 来说 没有start condition 的同样是活跃的
对于 exclusive 来说 只有这种start condition 是活跃的
<*> 匹配任意的 start condition
模式的默认行为 是 echo 任意没有被匹配上的字符 就等价于
<*>.|\n echo;
begin(0) 是回到最初没有任何规则是活跃者的时候
等价于 BEGIN(INITIL)
begin 语句也可以作为一段 Indent code 放在 rule section 的开头

接受所有的注释

要注意的是 start condition 是 int 所以可以用一个int 来保存相应的 数值
并且可以访问当前的 start condition 通过一个 叫做 YY_START 的宏
有一个 alias 叫做 YYSTATE (兼容 unix tool lex)
start condition scope
使得 start condiditon scope 写起来更为方便

start condition 是可以嵌套的
所以就有了 start condition stack , 我们可以手动操作这个栈
栈大小无限制 ,用完内存空间就会报错
使用栈, 需要包括 一个 前导 %option stack
# 多重输入缓冲 Multiple input buffers #
文件结束符 规则
特殊的字符 <> 指示了 当遇到文件结束符的 时候所要采取的特殊规则
当 匹配到 <> 的时候 并且 yywrap() 返回了一个非零的数(就是说 没有更多的文件需要处理了)
指定 yyin 为一个 新的输入文件(原来的版本还需要 进行特殊的行为 YY_NEW_FILE 现在不用了)
执行一个 return 语句
执行特殊 的yyterminate() action
或者切换到一个新的 buffer 使用 yy_switch _to_buffer ()
<> 匹配任何 start condition 中还没有 EOF的 start condition
特殊含义的宏
flex 手册摘要的更多相关文章
- C 标准库函数手册摘要
<stdlib.h> int abs( int value ); long int labs( long int value ); 返回参数的绝对值 int rand( void ); v ...
- 阿里巴巴Java开发手册摘要(二)
MySql数据库 一建表规约 1.表达是与否概念的字段,必须使用is_xxx的命名方式,数据类型是unsigned tinyint(1:是,0否) 正例:表达逻辑删除的字段名is_deleted,1表 ...
- 阿里巴巴Java开发手册摘要(一)
一命名风格 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结尾. 反例:_name / $name / name_ / name$ 2.类名使用UpperCamelCase风格 ...
- RichEdit控件 SDK 参考手册
RichEdit控件 SDK 参考手册 摘要: 本文对Rich Edit控件底层消息机制进行了讲解,以期读者对Windows平台下的Rich Edit控件有一个更深入的认识,同时对于使用Win32 S ...
- 微信小程序内测申请
想申请微信小程序的内测?别做梦了! 小程序内测是邀请制的,目前就发放了200个内测邀请.正因为稀缺,江湖传言内测资格已经炒到300万(一套房)一个了 但是!!!!你可以先熟悉一下相关资料和文档,下载一 ...
- Yacc 与 Lex 快速入门
Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 Lex 和 Yacc 是 UNIX 两个非常重要的.功能强大的工具.事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 ...
- snort-2.9.7.0源码安装过程
2015/02/15,centos6.5-64-minimal,初始205个包 [root@localhost snort]# yum install wget[root@localhost snor ...
- NBearV3中文教程总目录
1.NBearV3 Step by Step教程——ORM篇 摘要:本教程演示如何基于NBearV3的ORM模块开发一个Web应用程序的全过程.本教程演示的实体关系包括:继承.1对1关联.1对多关联, ...
- OpenID说明
OpenID使用手册 摘要: OpenID是一种开放.离散式的用于用户数字标识的开源框架.在网络应用日益充斥的今天,作为终端用户的我们不得不在每个网站上设置帐号,并管理众多的帐号.而采用OpenID技 ...
随机推荐
- latex ctex 的section不能写中文, /href
问题描述:再使用超链接 /href 后发现section{}不能写入中文,以前是好使的,经过查询验证,需要在引导区里加入 \hypersetup{CJKbookmarks=true} 即可恢复正常.
- uoj#370【UR #17】滑稽树上滑稽果
题目 低智选手果然刷不动uoj 首先考虑一下构造一棵树显然是骗你玩的,按位与这个东西越做越小,挂到链的最下面显然不会劣于挂到之前的某一个点下面,所以我们只需要求一个排列使得答案最小就好了 设\(A=\ ...
- 【笔记篇】C#笔记2
返回目录:目录请戳这里~ C#数组 基本概念不提.. int[] a; bool[] b = new bool[10]; float[] c = {0.5, 57.0, 233.3, 12345.67 ...
- Codeforces Round #479 (Div. 3) 题解 977A 977B 977C 977D 977E 977F
A. Wrong Subtraction 题目大意: 定义一种运算,让你去模拟 题解: 模拟 #include <iostream> #include <cstdio> ...
- ie中onclick问题
代码:<button > <span onclick="xxx();">确定</span></button> 在chrome和fir ...
- nginx压力测试webbench
下载压力测试工具webbench wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz 安装依赖包 yum -y in ...
- [JZOJ1320] 【Usaco2009 gold 】拯救奶牛
题目 题目大意 一个三角形的网格图,三角形与其有共同边的三角形相连. 起点到所有终点的最短距离. 思考历程 数据看起来还挺大的,所以不是什么图论算法. 这显然是一个结论题. 什么结论? 然后我就开始推 ...
- nicescroll 使用与配置
使用// 1. 简单模式,设置html元素滚动 $(document).ready(function() { $("html").niceScroll(); }); // 2. 返 ...
- 19-10-28-A
竟然?竟然?竟然? 我已经用了半个键盘的编号了$\text{T_T}$ $\mathbb{AFO}$感稍强 h1是不是有点大? ZJ+TJ: T1 以为是什么数据结垢,但是是个链表. 所以可以使用 v ...
- Hadoop 初体验
Hadoop 是一个基于谷歌发表的几篇论文而开发的一个分布式系统基础架构,用户可在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop现在已经成了大数据的代 ...