当前位置: 首页 > 知识库问答 >
问题:

antlr4语法中“~”运算符的意义

曹泉
2023-03-14

我正在努力理解语法文件: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])+
    ;

我无法理解~运算符在最后的Character集合中:[a-zA-Z~]我知道~代表不在集合运算符中,如:https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md即~x是匹配任何单个字符不在x描述的集合中,但如何解释当它走到最后,如上面STRING的模式?

共有1个答案

井高峯
2023-03-14

我不是Antlr方面的专家,但我认为它只是一个平铺字符(~),因为它可以出现在URL中。例如,它被用于指定用户主目录的URL,但现在已经不那么常见了,至少在互联网上是这样。

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

 类似资料:
  • 但我看不出这两个规则中有任何空字符串的可能性。还是我错了?这个代码有什么问题?

  • 正如文档所描述的,这将否定单个给定字符或字符范围的字符集。 然后我尝试解析一些测试用例文本(每个测试用例输入一个字符): 预期失败 预期成功 预期失败 预期失败 预期成功 预期失败 预期失败 预期失败 如果有关系,我将使用NodeJS的antlr4ts 0.5.0-alpha.4. 默认错误监听器打印,例如 第1行:0输入“+”不匹配,需要单词 我是否误解了ANTLR的操作符? 这是应该报告的bu

  • 问题内容: 我的代码: 但是当我执行 终端提示我 我的bash脚本有什么错误吗?谢谢! 问题答案: 您的 bash 脚本没有任何错误。但是您正在使用 sh 来执行它, sh的 语法不太广泛;) 因此,改为运行:)

  • 上一个小节我们对 C 语言的运算符有了一个基本的了解,这节课我们来详细的看下运算符中的算术运算符: 1. 算数运算符 算数运算符是用来进行算数运算的符号,主要包含以下几个符号: 运算符 作用 示例 = 赋值 a=1 + 加法或者正号 a+b, +a - 减法或者负号 a-b, -a * 乘法 a*b / 除法 a/b % 取余数 a%b ++ 自加 ++a, a++ – 自减 –a, a– 2.