문자열을 입력으로 사용하는 lex 코드를 작성하려고합니다. 긴 사전 파일을 구문 분석하여 해당 사전에서 가장 긴 단어를 찾습니다 그 끈에있는 편지들. 문자열의 각 문자는 0 번 이상 사용할 수 있습니다. "in"이라는 단어는 "input"에 유효합니다. 여기에 내가 지금까지 가지고있는 것이있다 :Lex : 다른 단어의 문자로 구성된 가장 긴 단어
%{
#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"등과 같은 출력을 얻습니다.이 단어는 분명히 유효한 단어가 아닙니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?
이것은 스크류를 망치로 망치로 사용하려고하는 것과 같습니다 - 렉스는 입력 스트림에서 토큰을 인식하기위한 것이지 사전을 검색하거나 순열을 찾는 것이 아닙니다 ... –
당신이하고있는 것은 단어를 보는 것입니다 'inptu'만으로 구성된 편지 ... – vonbrand