我正在尝试编写将字符串作为输入的 lex 代码,并通过一个长字典文件进行解析以找到该字典中最长的单词,该单词仅由该字符串中的字母组成。字符串中的每个字母都可以使用零次或多次,这意味着单词“in”对“input”有效。这是我到目前为止所拥有的:
%{
#include <stdio.h>
%}
%option noyywrap
%%
[input]+ {
printf("This is the longest I think: %s\n", yytext);
}
.|\n {}
%%
int main(void)
{
yylex();
return 0;
}
但是,这确实没有达到我的预期。这段代码通过并打印字典中每个单词的匹配部分,所以我得到像“i”、“iu”、“inu”等的输出,这些显然不是有效的单词。有人知道怎么修这个东西吗?