在flex中检查未完成的注释

时间:2015-05-01 16:37:09

标签: c flex-lexer lex lexical-analysis

我是flex的新手。我刚刚编写了一个示例代码,用于使用flex程序检测多行注释。现在我想改进代码。我想在代码中检测未完成和形成错误的注释。例如:以/ *开头的评论没有结尾* /是一个未完成的评论和形成错误的评论我的意思是评论没有正确形成,比如,评论中出现了EOF等。我必须在我的代码中添加检查这些东西?我的示例代码如下:

%x COMMENT_MULTI_LINE
%{
char* commentStart;
%}

%%

[\n\t\r ]+ { 
  /* ignore whitespace */ }


<INITIAL>"/*" { 
  commentStart = yytext; 
  BEGIN(COMMENT_MULTI_LINE); 
}

<COMMENT_MULTI_LINE>"*/" { 
  char* comment = strndup(commentStart, yytext + 2 - commentStart);
  printf("'%s': was a multi-line comment\n", comment);
  free(comment); 
  BEGIN(INITIAL); 
}

<COMMENT_MULTI_LINE>. { 

} 

<COMMENT_MULTI_LINE>\n { 

} 


%%

int main(int argc, char *argv[]){    
  yylex();         
}

0 个答案:

没有答案