2013-10-27 37 views
0

我使用JFlex,我想匹配的是这样的:JFLEX获取匹配

|MATCHED|NOTMACHED| 
|NOTMACHED|NOTMACHED|NOTMACHED| 
<newline> 
|MATCHED|NOTMACHED| 
|NOTMACHED|NOTMACHED|NOTMACHED| 

我的模式:

​​

但是它匹配管道 “|” 藏汉如先前线(空格) 。我试图使用捕获,但我无法得到这个工作。有什么建议么 ?

回答

0

你会想要使用状态。定义一个状态,如

%state AFTER_NEWLINE 

在你的状态定义中。

然后,在你的词汇的定义,你就会有这样的事情:

<YYINITIAL>\n 
{ yybegin(AFTER_NEWLINE); } 

<AFTER_NEWLINE>| 
{ /*Do whatever you want with pipes*/ } 

<AFTER_NEWLINE>[A-Za-z] 
{ yybegin(YYINITIAL); return FitnesseTypes.FIXTURE_NAME; } 

//Any other lexical definitions you might need 

什么这通常做的就是每一个新的生产线被击中时,它会将状态AFTER_NEWLINE。然后,它会匹配下一次连续出现的一堆字母,并将状态重新设置为YYINITIAL。管子被扔掉了。