意義

2017-02-11 44 views
3

我想了解語法文件: https://github.com/antlr/grammars-v4/blob/master/url/url.g4意義

STRING 
    : ([a-zA-Z~] |HEX) ([a-zA-Z0-9.-] | HEX)* 
    ; 
HEX 
    : ('%' [a-fA-F0-9] [a-fA-F0-9])+ 
    ; 

我無法理解到底~運營商的字符集:[a-zA-Z~] 我知道~代表不是在一個集合運算符,按: https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md~x是匹配任何單個字符不是由x 但如何描述的集合,當涉及到最終作爲PA解釋ttern爲STRING以上?

回答

3

不是Antlr的專家,但我會認爲它只是一個字面波浪字符(~),因爲它可以出現在URL中。這用於例如用於指定用戶主目錄的URL,但現在不太常見,至少在互聯網上。

如果您查看生產規則,例如平鋪爲主機名將指定相對於用戶家的URL。

+0

感謝您的快速回復。後續問題:由於「〜」不是操作符,因此如果意圖是代字符,那麼不應該在「〜」前面加上轉義字符「\」。 –

+0

我不這麼認爲。查看正則表達式字符類,其中'^'做否定:''a'=〜/ [^ a] /#=> nil'(否定)。''''=〜/ [a ^] /#= > 0'('^'作爲班級的一部分常規字符)。 –