1
我需要描述包含某個詞的令牌。該單詞可能包含英文字母和一些其他特殊符號,但不應以某些定義的英文字母(例如,「O」)開頭。javacc令牌正則表達式and_symbol_in
看起來我需要AND_SYMBOL_IN操作或其他東西,但我沒有找到JavaCC的文檔中 我需要的行爲是這樣的:?
TOKEN : { < LETTERS: (
(~["O", "-"] AND_SYMBOL_IN ["a"-"z","A"-"Z","-",".","&","|","0"-"9"])? (["a"-"z","A"-"Z","-",".","&","|","0"-"9"])+
) > }
我可以創造特殊的記號(如下面),但我相信有更多好看的決定,isn`t它
TOKEN : { < #LETTEREX: (
["a"-"z","A"-"N","P"-"Z",".","&","|","0"-"9","-"]) > }
TOKEN : { < LETTERS: (
(<LETTEREX>) (<LETTEREX> | ["O"])+
) > }
互聯網似乎沒有描述'AND_SYMBOL_IN'的文檔,所以如果沒有JavaCC的個人知識,我們不能幫你。 – Borodin 2012-01-31 13:39:07
我懷疑是否有'更好'(即更簡潔)的解決方案 - 你想要的是在令牌識別中迭代正則表達式匹配。我不認爲任何人都會爲一個詞法生成器一般地實現這個功能。它可能是unicode上下文中的一些特殊需求所期望的,但對於您的任務,我建議堅持您的解決方案。另一個選擇可能是設置TOKEN_FACTORY並在匹配'word'時調整'newToken'返回不同的標記 - 請參閱javacc文檔。希望有所幫助,關心 – collapsar 2012-02-01 12:10:07