入力を受け取り、大きな辞書テキストファイルで見つかったその入力の最初の順列を見つけて出力するlexコードを書き込もうとしています。これは私がこれまでに持っているものです:
%{
#include <stdio.h>
%}
%option noyywrap
%%
INPUT GOES HERE { //Not sure what expression to put here
printf("Longest is: %s", yytext);
return;
}
.|\n { }
%%
int main(void)
{
yylex();
return 0;
}
状態を使用する必要があると感じていますが、状態がどのように機能するかについてはあまり詳しくありません。誰かが私を正しい方向に向けることができますか?
編集:誰かがそれを望む場合に備えて、受け入れられた答えのコードは次のとおりです:
%{
#include <stdio.h>
#include <string.h>
%}
%option noyywrap
%%
^[ablm]{4}$ {
char originalWord [5];
strcpy(originalWord, yytext);
char input[5] = {"ablm"};
char tmp;
int i, j;
for(i=0; i<4; i++)
{
for (j=i+1; j<4; j++)
{
if (yytext[i] > yytext[j])
{
tmp=yytext[i];
yytext[i]=yytext[j];
yytext[j]=tmp;
}
}
}
if(strcmp(input,yytext)==0){
printf("First permutation is: %s", originalWord);
return;
}
else
;
}
.|\n { }
%%
int main(void)
{
yylex();
return 0;
}