之前在完成任務的時候,自學完成flex任務,雖然不是太難,但是在“跳過註釋”這一方面卻花費了比較長的時間,在這我分享出來我自己的經驗
工具/原料
flex
test.txt
方法/步驟
首先要分析要註釋的開始符和終結符是什麼
在這裡是:
/* */ (多行註釋)
// (單行註釋)
程式碼如下
#include
int main()
{
//printf("this is a test\n");
/*this ia a comment
*/
return 0;
}
之後就是flex編寫程式了
%x COMMENT
%{%}
%%"//".* { } /*跳過單行註釋*/
"/*" {BEGIN COMMENT;}
. {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;
}
執行之後結果如下,這樣就完整的達到跳過註釋的目的
注意事項
注意相關的正則表示式一定要正確寫對!!!!