Flex のマニュアルに記載されているように、正規表現 (?rs:pattern) を使用しようとしています。
次のコードは、大文字の「A」ではなく小文字の「a」を入力した場合にのみ機能します
%%
[(?i:a)] { printf("color"); }
\n { printf("NEWLINE\n"); return EOL;}
. { printf("Mystery character %s\n", yytext); }
%%
出力
a
colorNEWLINE
A
Mystery character A
NEWLINE
逆もまた真です。つまり、行 (?i:a) を (?i:A) に変更すると、「a」ではなく「A」のみが有効な入力と見なされます。角括弧、つまり [] を削除すると、次のようなエラーが発生します
"ex1.lex", line 2: unrecognized rule
「(?i:a)」を囲むとコンパイルされますが、実行後は常に最後のルール、つまり「ミステリーキャラクター...」に移動します
正しい使い方を教えてください。