今天我的 flex/bison 脚本有问题。它不检测多行注释。
%x COMMENT_MULTI
#\[ yy_push_state(COMMENT_MULTI);
<COMMENT_MULTI>"]#" yy_pop_state();
<COMMENT_MULTI>"\n" {
yylloc->lines(yyleng);
yylloc->step();
}
<COMMENT_MULTI>.?
你能帮帮我吗?
最佳答案
这是我在 C++ 注释和 block 注释的 bison 定义中最终使用的解决方案:
%x COMMENT
"//".*\n ;
"/*" BEGIN(COMMENT);
<COMMENT>"/*" printf("%s%d\n", "Warning: multiple comments opened at line: ", yylineno);
<COMMENT>"*/" BEGIN(INITIAL);
<COMMENT>"EOF" yyerror("Reached end of file while scanning comment");
<COMMENT>.|"\n" ;
关于c++ - 使用 flex/bison 的多行注释声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304063/