我们可以将LEX与正则表达式变量使用



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

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

这就是我尝试的。但这没有解决。有任何建议吗?

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

最新更新