【发布时间】:2013-09-03 04:36:20
【问题描述】:
%{
#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 程序来计算注释行的数量(单行 cmets 和多行 cmets 分别)。
使用此代码,我提供了一个 .c 文件和一个空白文本文件作为输入和输出参数。
当我在多行 cmets 中有任何特殊字符时,它不适用于该多行,并且 mline 不会为注释行增加。
我该如何解决这个问题?
【问题讨论】:
标签: lex