2014-11-20 56 views
1

我正在嘗試執行STRING詞法分析令牌。我的問題是除了\ n,\ r,\ t 任何角色都是他自己的(例如\ c是c)。這就是說,我有以下例子:ANTLR String LEXER token

"This is a valid \ 
string." 
"This is 
not valid." 
"This is al\so a valid string" 

在互聯網上搜索後無濟於事,我斷定我必須使用@after子句。不幸的是我不明白如何做到這一點。如果我不錯,我不能使用句法謂詞,因爲這不是解析器規則,這是一個詞法分析器規則。

+0

不知道你想用'@ after'做什麼...... – 2014-11-20 22:15:52

回答

1

怎麼是這樣的:

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

其中'\\' ('\\'|'\t'|'\r\n'|'\r'|'\n'|'"')是一個轉義斜槓,製表符,換行符或引用。並且~('\\'|'\t'|'\r'|'\n'|'"')匹配除以外的任何字符斜線,製表符,換行符或引用。

+0

非常感謝你,我測試過它,它工作 – 2014-11-20 22:30:00

+0

非常感謝你! – Shakeel 2017-07-28 17:53:13