我想了解语法文件: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
模式中解释何时结束?
1 回答
不是Antlr的任何专家,但我认为它只是一个字面的波形符号(
~
),因为它可以出现在URL中 . 这用于例如用于指定用户主目录的URL,但现在更不常见,至少在Internet上 .如果查看 生产环境 规则,例如平铺的主机名将指定相对于用户主页的URL .