Flex-未识别的新线路

Flex - new line unrecognized

本文关键字:新线路 识别 Flex-      更新时间:2023-10-16

我正在用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问题,因为当我推动代码时,它像魅力一样起作用!

将感谢每个建设性的答案。

问题似乎是马车返回符号。如果您会遇到类似的问题,如果这无济于事,则应检查其他不可打印的字符。

在我的情况下有帮助:

DELIM       [ tr]

在我的解决方案中被"吃掉",因此不应用任何规则。