antlr - antlr4语法中 "~"运算符的意义

标签 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 的模式,如何解释呢?

最佳答案

无论如何都不是 Antlr 方面的专家,但我认为它只是一个字面波浪号字符 (~),因为它可以出现在 URL 中。这用于例如用于指定用户主目录的 URL,但现在不太常见,至少在 Internet 上是这样。

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

关于antlr - antlr4语法中 "~"运算符的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173498/

相关文章:

java - ANTLR 歧义语法?

java - 将 ANTLR4 集成到 Java 中

c - 在 Antlr4 中保留空格和换行符

java - 如何获取 ANTLRs java 运行时中所有出现的解析器规则?

javascript - 使用 ANTLR 解析 JavaDoc 注释

c# - 计算类计数的部分语法

c# - 创建 ParseTree(不是 AST)

java - 让 Antlr 词法分析器将语法错误作为标记处理

java - Antlr4 子上下文索引

antlr - 在 ANTLR 中生成简单的 AST