flex - scanner发生器中“\\”的含义

时间:2015-07-02 20:36:29

标签: compiler-construction flex-lexer lexical-analysis

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

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

\ n \\ n 之间有什么区别?

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

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