如何在 C++ 中使用 flex lexer 并修改令牌的yytext
值?可以说,我有这样的规则:
"/*" {
char c;
while(true)
{
c = yyinput();
if(c == '\n')
++mylineno;
if (c==EOF){
yyerror( "EOF occured while processing comment" );
break;
}
else if(c == '*')
{
if((c = yyinput()) == '/'){
return(tokens::COMMENT);}
else
unput(c);
}
}
}
我想在和tokens::COMMENT
之间获得具有评论价值的令牌。(上述解决方案将“/*”作为值。/*
*/
另外,非常重要的是跟踪行号,所以我正在寻找支持它的解决方案。
编辑
当然我可以修改yytext
和yyleng
值(如yytext+=1; yyleng-=1
,但我仍然无法解决上述问题)