flex識別註釋並跳過註釋?

之前在完成任務的時候,自學完成flex任務,雖然不是太難,但是在“跳過註釋”這一方面卻花費了比較長的時間,在這我分享出來我自己的經驗

工具/原料

flex

test.txt

方法/步驟

首先要分析要註釋的開始符和終結符是什麼

在這裡是:

/* */ (多行註釋)

// (單行註釋)

程式碼如下

#include

int main()

{

//printf("this is a test\n");

/*this ia a comment

*/

return 0;

}

之後就是flex編寫程式了

%x COMMENT

%{%}

%%"//".* { } /*跳過單行註釋*/

"/*" {BEGIN COMMENT;}

"*/" {BEGIN INITIAL;}

. {} /*跳過多行註釋*/

. {printf("%s", yytext);} /*用來測試,看是否已經跳過註釋*/

%%

int main(int argc, char **argv){

FILE *fp;

if (argc != 2){

printf("引數錯誤!\n");

exit(0);

}

fp= argv[1];

yyin = fopen(fp, "r");

yylex();

fclose(yyin);

return 0;

}

int yywrap(){

return 1;

}

執行之後結果如下,這樣就完整的達到跳過註釋的目的

flex識別註釋並跳過註釋

注意事項

注意相關的正則表示式一定要正確寫對!!!!

時候, 時間, 任務, 太難, 註釋,
相關問題答案