flex细节
来源:互联网 发布:电影评论数据集下载 编辑:程序博客网 时间:2024/05/29 02:05
1、在flex中,不能重新定义input()或unput(),但是能重新定义YY_INPUT,它是flex调用的从输入文件中读取文本的宏。flex缓冲区,被定义为YY_BUFFER_STATE类型。例程yy_create_buffer(FILE*,size0)生成指定大小的flex缓冲区,通常是YY_BUF_SIZE,用于读取stdioFILE。对yy_swithc_to_buffer(flexbuf)的调用告诉扫描程序读取相应的文件,而yy_delete_buffer(flexbuf)删除flex缓冲区。当前缓冲区是YY_CURRENT_BUFFER,<<EOF>>在调用yywrap()之后匹配文件的结尾。
2、yywrap()当词法分析程序到达输入文件的结尾时,调用。
3、可以重新定义YY_INPUT,用于读取数据块的宏。
YY_INPUT(buffer,result,max_size)
buffer:字符缓冲区
result:存储读取的字符数的变量
max_size:缓冲区的大小
4、yylineno是输入文件的行号
1、REJECT:找到重叠标记的所有出现。如:找到单词pink,ink,pin的所有出现
...
%%
pink {npink++;REJECT;}
ink {nink++;REJECT;}
pin {npin++;REJECT;}
...
如果输入单词pink,所有3个模式都匹配。没有REJECT语句,那就只有"pink"匹配。
2、yylex()
从yylex()中向调用者(通常是语法分析程序)返回一个值。下次调用yylex()时,扫描程序从它停止的地方继续。
规则段中的所有代码被拷贝到yylex()。
3、yyrestart(fuke)重新启动扫描,即yylex()重新从文件读入。
4、FLEX启动时默认起始状态为INITIAL
BEGIN 状态
%S声明普通起始状态
%x声明起始排它性状态
没有起始状态的规则在排它性处于激活时不匹配。
5、unput()
将字符c返回给输入流。即把已经扫描的字符推回
6、yyleng
标记文本长度
7、yyless()
yyless(n)推回除标记开头的n字符以外的所有字符。
8、yymore()
在这个标记附加下一个标记
如:
%%
hyper yymore()
text printf("Token is %s/n",yytext);
如果输入的字符串是"hypertext",则输出"Token is hypertext"
9、yywrap()
返回0继续扫描,返回1报告文件结尾的零标记
- flex细节
- Flex应用细节汇总
- 新手 Flex java 交互细节
- Flex中tree实现的种种细节
- Flex与PHP交互中一个细节问题
- AS3分享34个flex as3代码细节性能优化
- 细节
- 细节
- 细节
- 细节
- 细节
- 细节
- 细节
- 再说流性布局 display:flex ,以及看到的其他一些css 细节
- FLEX
- flex
- flex
- FLEX
- jQuery框架获取及设置单选框、多选框、文本框内容
- 29-Dec-2009
- 内存字节对齐
- 成功的 Web 应用系统性能测试
- “ubunt Server最佳方案”个人学习笔记之安装心得
- flex细节
- symbian c++开发中模拟器引起的问题及其原因
- FLEX正则表达式语法
- Jquery UI tabs详解
- ESMTP协议与SMTP协议
- 从printf()谈c/c++中可变参数函数的实现
- PHP中echo,print,printf,sprintf的区别:
- 非结构化操作置标语言-UOML
- mysql错误:marked as crashed and should be repaired