antlr4语法中“~”运算符的意义

Significance of "~" operator in antlr4 grammar

我正在尝试理解语法文件: 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 描述的集合中的任何单个字符 但是当它结束时如何解释如上面 STRING 的模式?

在任何方面都不是 Antlr 的专家,但我认为它只是一个文字波浪字符 (~),因为它可以出现在 URL 中。这用于例如用于指定 URLs 到用户的主目录,但现在已经不那么常见了,至少在 Internet 上是这样。

如果您查看生产规则,例如作为主机名的平铺将指定相对于用户家的 URL。