lex的基本使用

2018-04-10  本文已影响0人  云胡同学

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

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

写入规则
%{
    #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 等文件

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

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

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

最后效果
上一篇 下一篇

猜你喜欢

热点阅读