词法分析器生成工具lex使用
一个lex程序具有如下形式:
声明部分:包括变量和明示常量,可以将一些c语言的东西写在%{....... %},并且可以在转换规则中调用
%{ #include <stdio.h> int id_num; /*常量量*/ %} letter [A-Za-z] /*正则变量*/ start start /*正则变量*/ stop stop /*正则变量*/
转换规则:通过在声明部分的正则变量,识别输入流中的单词,并可以执行一些动作
lex程序中的每个转换规则具有如下形式:
模式 {动作}
%% letter {id_num++;} start {printf("start received");} stop {printf("stop received");}
模式:letter {动作 letter的数目加一}
辅助函数:
%% void main() { yylex(); /* start the analysis*/ printf("no of letter:%d",id_num); } int yywrap() { return 1; }