學習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
獲得結果
學習