こんにちは、次のコードがあります
%s expectWord
%%
<expectWord>"and"+{word} { BEGIN( INITIAL );}
<expectWord>["and"]* { /* Skip */;}
"and" { BEGIN( expectWordAfterAND ); return AND; }
コードは、ユーザーが「and」を入力したかどうかを確認することになっています。入力した場合、ユーザーがその後に複数の and を入力すると、それらは無視され、最終的にその単語があるときにその単語が返されます。したがって、ユーザーが a and and and and and and and b と入力すると、lexer は a and b を返す必要があります。そのため、1つだけ返品されます。
現在、次のように返されています: a b. このコードを修正するにはどうすればよいですか?
ありがとう