2013-07-27 122 views

回答

9

像這樣:

STRING 
: '"' (~[\r\n"] | '""')* '"' 
; 

其中~[\r\n"] | '""'表示:

~[\r\n"] # any char other than '\r', '\n' and double quotes 
|   # OR 
'""'  # two successive double quotes 

,並有可能重寫它把雙雙引號單雙引號?

不是沒有嵌入自定義代碼。在Java中可能看起來像:

STRING 
: '"' (~[\r\n"] | '""')* '"' 
    { 
    String s = getText(); 
    s = s.substring(1, s.length() - 1); // strip the leading and trailing quotes 
    s = s.replace("\"\"", "\""); // replace all double quotes with single quotes 
    setText(s); 
    } 
; 
+0

工程就像一個魅力。側面的問題,是否有可能重寫它轉雙雙引號單雙引號? 「」 - >「?謝謝! – JayDee

+0

@JayDee看到我的修改後的答案。 –

+1

對於使用ANTLR 4的人來說,以下規則同時用於雙引號和單引號字符串: STRING:'''(〜[\ r \ n」] |'「」')*'「'| '''(〜[\ r \ n''|'\'\'')*'\''; –