学习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); } { chars++; lines++; } . { chars++; } %% main(int argc, char **argv) { yylex(); printf("%8d%8d%8d ", 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
得到结果