2013-02-28 112 views
2

我想匹配的範圍\ u0000的到\ uFFFF任何字符,下面的代碼是不夠的:如何匹配ANTLR4中的任何字符?

grammar CharacterClass; 

start :  CH* EOF; 
CH  :  [\u0000-\uFFFF]; 

編輯:

我問,因爲我想插入在狀結構的XML二進制數據:

<binary:key>uhihahdudi some binary data, that should be ignored by ANTLR 
izgizgio</binary:key> 

當然也能夠自己限制到範圍[\ u0000- \ u00FF]和我的InputStream僅輸出經處理的數據的字節值,但隨後我將不得不實施額外的邏輯來使用我的實際文本數據。對我來說,最好的解決方案是,ANTLR以某種方式跳過二進制部分,這樣我就可以處理文本數據(處理二進制部分,我只需要這些部分的開始和結束位置)。

回答

3

ANTLR 4只能匹配範圍[\u0000-\uFFFE]。如果您確實需要匹配所有可能的輸入,則需要匹配[\u0000-\u00FF]並將輸入作爲字節而不是UTF-16字符輸入到解析器。

編輯:也見Lexer.MIN_CHAR_VALUE and Lexer.MAX_CHAR_VALUE常數。

+0

謝謝你的回答。您的解決方案是一個好主意,但這不是我的首選解決方案。你能不能再看看我的問題,我對我的問題做了更詳細的描述。 (我不想處理二進制數據,但我想將它插入一個xml結構中,我只需要用ANTLR以某種方式跳過這些二進制部分) – user1861174 2013-03-01 15:46:02