2017-04-24 115 views
0

我正在使用ANTLR4作爲項目,但我的任務是我不太瞭解。我有一個詞法分析規則標記化以下劃線或字母開頭的內容,不能以'xml'開頭,並且可以包含句點,破折號,字母,數字和下劃線。我如何確保開頭是一個字母或下劃線,並確保它不是'xml'?ANTLR4特定位置的特定字符

+0

這個問題很抽象。你能舉一些具體的例子嗎? – Rnet

+0

我想具體怎麼去識別一個以下劃線或字母開頭但並不以字母'xml'開頭的字符串。因此,它會接受'_hello'和'hello',但不接受'xmlhello' – Alex5775

+0

您可以在定義令牌時使用負面預見正則表達式模式。例如:^(?! xml)。+將匹配任何不以xml開頭的東西 – Rnet

回答

0

語法:

grammar Expr; 
prog: word+ EOF; 
word : STRING ; 
STRING : ~[xml]STRINGCHAR+; 
WS : [ \t\r\n]+ -> skip; 
fragment 
STRINGCHAR : [_a-z] ; 

匹配「男孩」和「_girl」,而不是「xmlboy」通過明確排除〜運營商定義字符串。