Flex - 无法识别新行

Flex - new line unrecognized

我正在做一个包含 Pascal 子集的项目。我的代码如下所示:

NLINE       [\n]
BRACKET     ['('|')']

%%

{BRACKET} {
  std::cout << "Found BRACKET symbol " << yytext[0] << std::endl;
  return yytext[0];
}

{NLINE} {
  std::cout << "Found NEWLINE symbol " << yytext[0] << std::endl;
  yylineno++;
}

...

. { // anything is exactly before EOF
    std::cout << "Found ANYTHING " << yytext[0] << std::endl;
    yylval = NONE;
    return yytext[0];
}

我尝试了很多方法来解决这个问题,也只是用 \n 代替 [\n] 或 [ \n] 但没有达到预期的效果。下面是输出:

...
Found BRACKET symbol )
Found ANYTHING ;
Found ANYTHING  << where in code should be \n

我知道这是 \n 问题,因为当我在没有它的情况下推送代码时,它就像一个魅力!

感谢每一个建设性的回答。

问题似乎是回车 return 符号。如果您遇到类似的问题,如果这没有帮助,您应该检查其他不可打印的字符。

在我的案例中帮助了:

DELIM       [ \t\r]

DELIM 在我的解决方案中是 "eated",因此没有应用任何规则。