我们可以将lex与正则表达式变量一起使用

时间:2014-02-05 15:12:11

标签: regex lex

当我使用类似于grep的lex运行文件时,我可以将模式作为参数传递。我试图用lex实现grep。

%{
      #include <stdio.h>
      char *pattern;
%}
%%
.*{pattern}.*   printf("%s\n",yytext);
%%
int yywrap()
{
    return 1;
}
int main(int argc,char *argv[])
{
  if(argc<3)
  {
    printf("usage:lexgrep pattern filename\n");
    exit(0);
  }
  pattern=argv[1];
  yyin=fopen(argv[2],"r");
  yylex();
  return 0;
}

这就是我尝试过的。但它没有成功。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

不,lex识别的模式是在编译时指定的,而不是在运行时指定的。要在运行时解释模式,您需要动态构建自己的状态机。