2013-10-27 36 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。管子被扔掉了。