我正在尝试理解语法文件: 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 中。这用于例如用于指定用户主目录的 URL,但现在不太常见,至少在 Internet 上是这样。
如果您查看生产规则,例如,平铺的主机名将指定相对于用户主页的 URL。
关于antlr - antlr4语法中 "~"运算符的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173498/