我正在嘗試編寫一個flex文件,它將(-! comment !-)
識別爲一個稱爲comment
的令牌。以下是我的文件:flex中的排除規則
%{
#include <stdio.h>
void showToken(char* name);
void error();
void enter();
int lineNum=1;
%}
%option yylineno
%option noyywrap
whitespace ([\t ])
enter ([\n])
startcomment (\(\-\!)
endcomment (\!\-\))
comment (^\!\-\))
%%
{startcomment}{comment}*{endcomment} showToken("COMMENT");
{enter} enter();
{whitespace}
. error();
%%
void showToken(char* name){
printf("%d %s %s %d% \n",lineNum,name, yytext);
}
void enter(){
lineNum++;
}
void error(){
printf("%d error %s \n",lineNum,yytext);
}
,但我失敗了簡單(-! comment !-)
輸入,此文件不承認(-!
和!-)
,但沒有認識到我的comment
規則。我嘗試用comment (^{endcomment})
替換它,但它沒有工作,有什麼建議嗎?
謝謝你的迴應,現在我有兩個問題: 如果我使用第一種方法建議我無法增加行號「lineNum」(一些int我定義)時\ n在評論中是我需要做的事情。 如果我使用第二種方法,我無法使用yytext,並且由於我沒有綁定到註釋的長度,我不能使用緩衝區和指針。 – user44874 2013-03-25 16:57:47