文字列を入力として受け取り、長い辞書ファイルを解析して、その文字列内の文字のみで構成される辞書内の最長の単語を見つける lex コードを作成しようとしています。文字列内の各文字は 0 回以上使用できます。つまり、"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」などの出力が得られますが、これらは明らかに有効な単語ではありません。誰でもこれを修正する方法を知っていますか?