我正在尝试理解语法文件: 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
模式一样?
答案 0 :(得分:3)
在任何方面都不是Antlr的专家,但我认为它只是一个字面的代字符(~
),因为它可以出现在URL中。这用于例如用于指定用户主目录的URL,但现在更不常见,至少在互联网上。
如果查看生产规则,例如平铺主机名将指定相对于用户家的URL。