Lex 运算符和转义序列

Lex operators and escape sequences

+Lex operators中的一个,因此如果用作文本字符,则应在其前面加上转义符\。那么,为什么这两个会产生相同的结果呢?

[a+b]   {  printf("%s", yytext);  }  // matches a, +, or b
[a\+b]  {  printf("%s", yytext);  }  // does same as above

为什么第一行不违反转义规则?

阅读您提供的文档 link 中的几行,您会发现:

Within square brackets most operators are ignored...

("Ignored " 可能不是最好的描述;这些字符不会 被忽略 ;它们根本不特殊。所以方括号内的加号只是加号.)