lex的基本使用

pargen是一款很好的可视化语法分析器。

在.l文件中写入我们的规则。

写入规则
%{
    #include 
    char * sBlue = "";
    char * sRed = "";
    char * sGreen = "";
    char * sYellow = "";
    char * s="";
%}
Keys        int|double|float|char|#include|else|case|struct|return|while|for|do|return
thekey      {Keys}[ \t]+
keyif       if\(.*\)
keyswitch   switch\(.*\)
digits      [^A-Za-z][1-9][0-9]*|0
str          \".*\"
comment1     \/\/[^\n]*
comment2     \/\*(([^\*]*(\*[^\/])?)*)\*\/
%%
\n           {fputs("
",yyout);} {comment1} {fputs(sGreen,yyout); fputs(yytext,yyout);fputs(s,yyout);} {comment2} {fputs(sGreen,yyout); fputs(yytext,yyout);fputs(s,yyout);} {thekey} {fputs(sBlue,yyout); fputs(yytext,yyout);fputs(s,yyout);} {keyif} {fputs(sBlue,yyout); fputs(yytext,yyout);fputs(s,yyout);} {keyswitch} {fputs(sBlue,yyout); fputs(yytext,yyout);fputs(s,yyout);} {str} {fputs(sRed,yyout); fputs(yytext,yyout);fputs(s,yyout);} {digits} {fputs(sYellow,yyout); fputs(yytext,yyout);fputs(s,yyout);} .|\n {fputs(yytext,yyout);} %% int main(void) { //yyin=fopen("1.c","r"); yylex(); /* start the analysis*/ //fclose(yyin); } int yywrap() { return 1; }

写入规则后,build生成我们的.c .h 等文件

用vc6新建工程,将.c .h的代码复制过去,然后配置环境变量, source,lib,include,yl.lib,之后编译生成exe文件。

进入vc的工程下,找到exe文件所在的目录,打开命令行,进入exe所在的目录,执行命令 exe文件+ 输入文件 + 输出文件

输入文件为二分查找的代码,输出为一个html文件。

最后效果

你可能感兴趣的:(lex的基本使用)