当我使用类似于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;
}
这就是我尝试过的。但它没有成功。有什么建议吗?
答案 0 :(得分:2)
不,lex识别的模式是在编译时指定的,而不是在运行时指定的。要在运行时解释模式,您需要动态构建自己的状态机。