flex - 扫描仪生成器中“\\”的含义

Meaning of "\\" in flex - scanner generator

我正在阅读 Start Conditions 的 flex 手册。以下是此页面上给出的示例的一部分:

<str>\n        {
                 /* error - unterminated string constant */
                 /* generate error message */
               }
...
<str>\n  *string_buf_ptr++ = '\n';
...

\n\\n有什么区别?

感谢任何帮助

  • \n 匹配一个换行符(通常是 Ox0A)。如果 C 风格引用字符串在到达换行符之前未终止,则将触发该规则,并将其视为错误。
  • \n 匹配反斜杠后跟字母 n。如果引用的字符串包含双字符序列 \n,则会触发该规则,并将其替换为单个换行符。 (对于其他六个 C 风格字母转义序列,\a\b\f\r\t\v -- 每个都替换为适当的控制字符 -- 但由于我无法证明的原因,其中两个丢失了。)