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

没有可行的替代错误

闻安宜
2023-03-14
referenceType
:   singleType ('.' singleType)*
;

singleType
: Identifier typeArguments?
;

typeArguments
:   '<' typeArgument (',' typeArgument)* '>' 
;

typeArgument
:    referenceType
;
Iterator<Entry<K,V>> i = entrySet().iterator();

但是,如果我在两个连续的'>'字符之间放置空格,则不会产生错误。ANTLR无法区分上述规则和用于识别移位表达式的规则,但我不知道如何修改语法来解决这种歧义。如有任何帮助,不胜感激。

共有1个答案

阴福
2023-03-14

在lexer中可能有如下规则:

RightShift : '>>';

要使ANTLR根据上下文将>识别为两个>字符或一个>运算符,您需要将shift运算符放在解析器中:

rightShift : '>' '>';

如果您的语言包括>>>=运算符,那么这些运算符也需要移到解析器中。

 类似资料:
  • 我已经检查了围绕这个问题的类似问题,但似乎没有一个能为我的问题版本提供解决方案。我最近刚开始使用Antlr4,在遇到这个特殊的障碍之前,一切都很顺利。 我的语法是一个基本的数学表达式语法,但由于某种原因,我注意到生成的解析器(?)无法从paser规则“等于”到paser规则“exr”,以达到lexer-规则“NAME”。 如果我传递一个单词作为输入,例如“变量”,解析器会抛出上面的错误,但如果我传

  • 朋友 Jackson框架提供了基于注释的方法来在序列化过程中发出类型信息。 我不想在我的任何类中使用@JsonTypeInfo注释。 上述注释是否有替代方案。 如果是,请举例说明如何做到这一点。

  • 众所周知,是无法修复的(有关更多信息,请参见本问题中的讨论)。 关于替代方案和“我如何做得对”的最后一个问题已经有几年的历史了: null 类将实现的某种接口:. 深度复制。如果的istance引用的实例,则应引用新的. 复制到指定的目标:. 多态复制:如果扩展,则应将的所有属性从复制到。 当然,我可以自己实现所有这些,但是有标准接口不是很合理吗?还是我漏掉了什么? 我的上下文的一点背景。我经常使

  • 问题内容: 我遍历一个数组,每个数组都运行ajax请求。我需要按顺序执行请求,因此我可以接听最后一个请求并成功运行一个函数。 目前我正在运行(简体): 但是,使用async:false会使应用程序无响应/变慢。但是,如果没有async:false,有时其中一个请求会挂起并在最后发送的ajax请求返回后实际上返回。 我如何不使用async:false来实现呢? 问题答案: 您可以使用本地函数来运行a

  • 问题内容: 键入密码短语时 每个人都能听到敲击空格键的声音,因此在密码字段中显示空格也很合逻辑。所以我想要一些可以显示的东西 代替 这将使键入更加容易,同时几乎不降低安全性。 更新 更新Riduidel的评论之前请三思。当布鲁斯·施耐尔(Bruce Schneier)写 “是时候以明文形式显示大多数密码了”时 ,那么显示其中的一小部分也必须是正确的。尤其是显示仅通过聆听即可捕获的部分。 问题答案:

  • 问题内容: 在我们的应用程序中,我们有两个或三个类,它们包含整个Java Swing应用程序逻辑。这两个或三个类包含大约7k行代码。 现在,我被分配了重构此Java代码的任务。 我该如何开始?有没有可用的工具可以进行重构或至少可以指导我们? 问题答案: 我假设您正在尝试将这些大类分解为较小的类。最常见的方法是使用Extract类重构。碰巧这是我博士论文工作中的一个主要主题。 困难的部分之一是确定新