当我使用类似于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识别的模式是在编译时指定的,而不是运行时间。要在运行时解释模式,您需要飞行构建自己的状态机。