次のような言語を説明する簡単な文法が必要だとします。
foo 2
bar 21
だがしかし
foo1
jflexを使用して私はsmtのように書いた
WORD=[a-zA-Z]+
NUMBER=[0-9]+
WHITE_SPACE_CHAR=[\ \n\r\t\f]
%state AFTER_WORD
%state AFTER_WORD_SEPARATOR
%%
<YYINITIAL>{WORD} { yybegin(AFTER_WORD); return TokenType.WORD; }
<AFTER_WORD>{WHITE_SPACE_CHAR}+ { yybegin(AFTER_WORD_SEPARATOR); return TokenType.WHITE_SPACE; }
<AFTER_WORD_SEPARATOR>{NUMBER} { yybegin(YYINITIAL); return TokenType.NUMBER; }
{WHITE_SPACE_CHAR}+ { return TokenType.WHITE_SPACE; }
しかし、単語と数字の間に空白があるべきだと言っていた余分な州は好きではありません。文法を単純化するにはどうすればよいですか?