所以標題可能有點誤導,但我想不出有什麼更好的方式來表達它。如何在lex中打印評論?
基本上,我正在用cygwin/lex編寫一個詞法掃描器。部分代碼讀取一個令牌/ *。它進入預定義的狀態C_COMMENT,並在C_COMMENT「/ *」結束時結束。下面是實際的代碼
"/*" {BEGIN(C_COMMENT); printf("%d: /*", linenum++);}
<C_COMMENT>"*/" { BEGIN(INITIAL); printf("*/\n"); }
<C_COMMENT>. {printf("%s",yytext);}
當評論是在一行代碼工作,如
/* * Example of comment */
這將打印當前行號,與後面的註釋。但是,如果評論跨越多行,則不起作用。將第三行重寫爲
<C_COMMENT>. {printf("%s",yytext);
printf("\n");}
不起作用。這將導致\ n爲評論中的每個字母打印。我猜它與C有沒有任何關係,或者我使用的狀態是錯誤的。
希望有人能夠幫助我:)
此外,如果有您需要的任何其他信息,只問,我會提供。