我编写了一个 Flex 程序来检测给定的单词是否是动词。输入将从文本文件中获取。我想改进代码。有什么方法可以检测输入文件中的单行或多行字符串(例如:“我是一个男孩”或“我是一个男孩\我喜欢足球”)。在这种情况下,输出将是“找到单/多行字符串”,这就是我想要的程序。我怎样才能做到这些?请帮忙。这是我的示例代码:
%%
[\t]+
is |
am |
are |
was |
were {printf("%s: is a verb",yytext);}
[a-zA-Z]+ {printf("%s: is a verb",yytext);}
. |\n
%%
int main(int argc, char *argv[]){
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
}
最佳答案
向词法分析器添加单个规则来识别字符串(可以分布在多行中)非常容易:
%%
["][^"]*["] {printf("'%s': is a string\n", yytext); }
[a-zA-Z]+ {printf("%s: is a word\n",yytext); }
[ \t\n]+
.
%%
int main(int argc, char *argv[]){
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
}
(我对其进行了一些整理,以重点关注字符串与无字符串的演示。)
关于flex-lexer - Flex 中的单线或多线字符串检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733816/