学习Flex&Bison目标, 读懂SQLite中SQL解析部分代码

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
得到结果

最新文章

  1. 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)
  2. Swift一些数据结构题目的编码实现
  3. Android网页中tel,sms,mailTo,Intent,Market协议用法总结
  4. 【GK101 谐波数据生成器】上位机软件升级(版本:1.1)
  5. Linux系统中为php添加pcntl扩展的方法
  6. 将Excel中数据导入数据库(三)
  7. 【UEditor】远程上传图片到【七牛云存储】
  8. android开发 WriteUTF与readUTF 原理
  9. Oracle分页查询语句的写法(转)
  10. 20151205 jquery 学习笔记--Ajax
  11. Excel2010 柱形图与折线图制表
  12. 4_Is Prime
  13. HDU 4709 Herding 几何题解
  14. 改动file header (測)
  15. ng-options的使用
  16. Centos 7 安装图形化环境
  17. Web Scraper爬取就是这么简单
  18. android的五个进程优先级,内存不足时被清理的顺序
  19. CentOS7主机名修改
  20. 一个简单web系统的接口性能分析及调优过程

热门文章

  1. 002_HTTP每日分析及翻译
  2. Android网络通信(8):WiFi Direct
  3. java FTPClient 上传文件 0kb 问题
  4. js继承的几种实现方法
  5. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)
  6. J 判断二叉树每个结点的权值是否关于根节点完全对称
  7. google gcr.io、k8s.gcr.io 国内镜像
  8. 解决python中遇到的乱码问题
  9. ERROR 2003:Can't connect to MySQL server on 'localhost'
  10. HDU3031 To Be Or Not To Be 左偏树 可并堆