pargen是一款很好的可视化语法分析器。
在.l文件中写入我们的规则。
![](https://img.haomeiwen.com/i606862/a51e905d4276c4ca.png)
%{
#include <stdio.h>
char * sBlue = "<font color=Blue>";
char * sRed = "<font color=Red>";
char * sGreen = "<font color=Green>";
char * sYellow = "<font color=Yellow>";
char * s="</font>";
%}
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("<br/>",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 等文件
![](https://img.haomeiwen.com/i606862/73ba99fa3be0a599.png)
用vc6新建工程,将.c .h的代码复制过去,然后配置环境变量, source,lib,include,yl.lib,之后编译生成exe文件。
进入vc的工程下,找到exe文件所在的目录,打开命令行,进入exe所在的目录,执行命令 exe文件+ 输入文件 + 输出文件
输入文件为二分查找的代码,输出为一个html文件。
![](https://img.haomeiwen.com/i606862/002d9254beecc3a0.png)
网友评论