我正在尝试使用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)”,那么它会编译,但在执行后它总是会进入最后一条规则,即“神秘角色......”
请让我知道如何正确使用它。