antlr4语法中“〜”算子的意义

时间:2017-02-11 07:35:26

标签: antlr antlr4

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

答案 0 :(得分:3)

在任何方面都不是Antlr的专家,但我认为它只是一个字面的代字符(~),因为它可以出现在URL中。这用于例如用于指定用户主目录的URL,但现在更不常见,至少在互联网上。

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