問題:無法正確打印Unicode字符。ANTLR:Unicode字符掃描
這裏是我的語法:
public static void main(String[] args) {
SimpleLexer simpleLexer = new SimpleLexer(System.in);
while(true) {
try {
Token t = simpleLexer.nextToken();
System.out.println("Token : "+t);
} catch(Exception e) {}
}
}
對於輸入「ठ」,我得到下面的輸出:主要方法調用詞法分析器的
options { k=1; filter=true;
// Allow any char but \uFFFF (16 bit -1)
charVocabulary='\u0000'..'\uFFFE';
}
ANYCHAR :'$'
| '_' { System.out.println("Found underscore: "+getText()); }
| 'a'..'z' { System.out.println("Found alpha: "+getText()); }
| '\u0080'..'\ufffe' { System.out.println("Found unicode: "+getText()); }
;
代碼片段
Found unicode:
Token : ["à",<5>,line=1,col=7]
Found unicode:
Token : ["¤",<5>,line=1,col=8]
Found unicode:
Token : [" ",<5>,line=1,col=9]
看來詞法分析器正在處理Unicode ch ar「ठ」爲三個獨立的字符。我的目標是掃描和打印「ठ」。
不相關的問題,但我建議從來沒有「吞噬」你的例外:當事情出錯,你不知道發生了什麼(以及在哪裏)。而不是'catch(Exception e){}'至少可以這樣做:'catch(Exception e){e.printStackTrace(); }' – 2010-09-03 06:21:45
你是正確的先生:)對我來說,教訓:在使用它之前一直讀取複製的代碼。 – Jhakki 2010-09-03 20:04:49