我正在尝试编写一个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