2014-04-17 61 views
0

我想匹配非空格字符,所以我定義的JFlex的柔性文件:如何在jflex(flex)詞法分析器中使用「 S」?

%% 

Value = [\S]+ 

%% 

{Value} { return MyTokens.Value; } 
.   { return MyTokens.BadCharacter; } 

然後我嘗試生成的Java代碼來分析字符串「abc」,但我得到:

BadCharacter(a) 
BadCharacter(b) 
BadCharacter(c) 

如果我改變聲明:

Value = [a-z]+ 

然後我就可以得到預期的結果:

Value(abc) 

爲什麼\S不工作?這不是指「非空白」嗎?

+0

似乎'\ S'確實被jflex支持:http://jflex.de/manual.html ...僅供參考,雖然這可能不是問題的根源,但括號是多餘的。 '\ S'可以(應該可以)單獨使用。 – Robin

+0

我找到了原因:我使用的JFlex版本是'1.4',它不支持'\ s','\ S'。查看的更新日誌。謝謝你們一樣! – Freewind

回答

1

\S確實應該匹配非空白碼點。

從手冊:

HESE元字符等同於以下內容:
\ S \ p {}空白

編輯:我沒有看到你已經回答的評論: \S被引入version 1.5

相關問題