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。
我正在尝试理解语法文件: 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。