次のレクサーがあります。ID : [a-z][a-z0-9_]*;
1a
またはのような一致する識別子を除いてうまく機能しますが、または222z222
のようなすべての数字ではありません。1
999
では、問題を解決するにはどうすればよいでしょうか。
次のレクサーがあります。ID : [a-z][a-z0-9_]*;
1a
またはのような一致する識別子を除いてうまく機能しますが、または222z222
のようなすべての数字ではありません。1
999
では、問題を解決するにはどうすればよいでしょうか。
あなたのレクサーは[a-z][a-z0-9_]*
. したがって、これは小文字で始まり、その後にゼロ個以上の小文字または数字またはアンダースコアが続くものと一致します
識別子を小文字または数字のいずれかで開始し、すべての数字で開始したくない場合は、次を試してください
[a-z][a-z0-9_]*;|[0-9]+[a-z_][a-z0-9_]*; // Updated
それで2部構成になった
[a-z][a-z0-9_]*;
: 小文字で始まる一致[0-9]+[a-z_][a-z0-9_]*;
: 数字で始まる場合、1 つ以上の数字の後に 1 つの文字またはアンダースコアがあり、その後に 0 個以上の文字、数字、またはアンダースコアが続くと想定されます。と同じことが書けます([a-z]|[0-9]+[a-z_])[a-z0-9_]*;
。