第一章 flex单词计数程序
2015-07-11 08:53
357 查看
学习Flex&Bison目标, 读懂SQLite中SQL解析部分代码
Flex&Bison简介
Flex做词法分析
Bison做语法分析
第一个Flex程序, wc.fl, 单词计数程序
程序说明
程序包含3部分
1. 声明和选项设置
2. 模式和动作
3. 会被拷贝到生成的词法分析器里的C代码
1. 声明部分的代码, 会被原样拷贝到C代码头文件中
2. 模式部分是: 正则表达式+C代码{}
3. yylex()是词法分析程序入口, 有主程序main调用
编译执行
flex wc.l
cc lex.yy.c -lfl
./a,out
然后在标准输入, 输入文字
^D
得到结果
Flex&Bison简介
Flex做词法分析
Bison做语法分析
第一个Flex程序, wc.fl, 单词计数程序
%{ int chars = 0; int words = 0; int lines = 0; %} %% [a-zA-Z]+ { words++; chars += strlen(yytext); } \n { chars++; lines++; } . { chars++; } %% main(int argc, char **argv) { yylex(); printf("%8d%8d%8d\n", lines, words, chars); }
程序说明
程序包含3部分
1. 声明和选项设置
2. 模式和动作
3. 会被拷贝到生成的词法分析器里的C代码
1. 声明部分的代码, 会被原样拷贝到C代码头文件中
2. 模式部分是: 正则表达式+C代码{}
3. yylex()是词法分析程序入口, 有主程序main调用
编译执行
flex wc.l
cc lex.yy.c -lfl
./a,out
然后在标准输入, 输入文字
^D
得到结果
相关文章推荐
- Android 继承DialogFragment弹出dialog对话框二
- Tcl学习之--语法|变量
- c++单链表的相关操作
- js保留小数
- Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW _TASK flag.
- 【JSON异常系列】new JSONObject对象时卡死原因
- socket中的option
- +1,-1位运算
- Android入门(16)——数据存储之SharedPreferences
- Linux下为可执行shell脚本文件(.sh),制作桌面启动快捷方式
- “==”和 equals的区别:
- 开始我的技术博客
- 【leetcode-7】Reverse Integer(C语言)
- 引用作为函数返回值(对函数赋值)
- [SCOI2005][BZOJ1085] 骑士精神
- iOS基础(c)-结构体
- hadoop2.2伪分布安装加2.2源码编译
- Java - 标签(label)
- velocity json 转义问题
- linux 安装jdk-7u45-linux-x64.tar.gz