我正在使用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问题,因为当我推送代码时,它就像魅力一样!
将欣赏每一个建设性的答案。
答案 0 :(得分:0)
问题似乎是回车符号。如果您遇到类似问题,如果这样做无效,您应该检查其他不可打印的字符。
在我的案例中帮助:
DELIM [ \t\r]
在我的解决方案中“删掉”DELIM,因此不会应用任何规则。