2011-12-07 41 views
2

作爲一個新的發展我剛纔的問題(ANTLRWorks 1.4.3 can't properly read extended-ASCII characters),我使用十六進制編輯器創建一個簡單的文本文件ANTLRWorks 1.4.3無法顯示和地切割ASCII字符

27 A0 27 20 27 A3 27 20 27 B0 27 20 27 E7 27 

生成的文件在Notepad ++中可以正常讀取。在ANTLRWorks 1.4.3中打開時,(擴展的)ASCII字符顯示爲方框。當在該行的末尾添加和移除的空間後保存文件,十六進制文件視圖看起來如下:

27 3F 20 27 A3 27 20 27 B0 27 20 27 3F 

出於某種原因,在單引號之間的初始空間(20)得到了肢解成問號(3F)以及帶有cedilla字符(E7)的特殊c以及它後面的撇號都被問號所代替。

看起來,擴展ASCII字符的存在以某種方式導致事情發生嚴重錯誤。任何人都可以複製這個問題和/或提供一個可能的原因和解決方案嗎?

在此先感謝。

回答

2

您可以改用Unicode轉義符。假設你要匹配的英文井號,你會怎麼做:

PoundSign : '\u00A3'; 

代替:

PoundSign : '£'; 

他們(應該)都匹配相同的字符,並且第一很可能不錯位。

+1

我認爲這樣做......它至少不會破壞任何東西,但是當似乎沒有理由必須這樣做時,必須使用這種方法是相當煩人的:( – MayaPosch

+0

@ MayaPosch,是的,我同意,這是一個麻煩,但我認爲它不是這樣,或者根本不使用ANTLRWorks。從即將發佈的版本開始,提升一個錯誤(最可能是這個錯誤) ANTLR(版本4),ANTLRWorks將完全重寫並與ANTLR集成。 –

+1

啊,我明白了。有什麼想法,當這個版本出來嗎?:) – MayaPosch