%{
#include <stdio.h>
int sline=0,mline=0;
%}
%%
"/*"[a-zA-Z0-9 \t\n]*"*/" { mline++; }
"//".* { sline++; }
.|\n { fprintf(yyout,"%s",yytext); }
%%
int main(int argc,char *argv[])
{
if(argc!=3)
{
printf("Invalid number of arguments!\n");
return 1;
}
yyin=fopen(argv[1],"r");
yyout=fopen(argv[2],"w");
yylex();
printf("Single line comments = %d\nMultiline comments=%d\nTotal comments = %d\n",sline,mline,sline+mline);
return 0;
}
コメント行の数をカウントする Lex プログラムを作成しようとしています (単一行コメントと複数行コメントを別々に)。
このコードを使用して、入力引数と出力引数として .c ファイルと空白のテキスト ファイルを指定しました。
複数行のコメントに特殊文字がある場合、その複数行に対しては機能せず、コメント行に対して mline がインクリメントされません。
この問題を解決するにはどうすればよいですか?