Exception 如何在ANTLR 2中找到角色位置?

Exception 如何在ANTLR 2中找到角色位置?,exception,parsing,antlr,Exception,Parsing,Antlr,我有一个简单的语法,并使用antlr 2.7.7生成了一对c类。当解析器发现令牌错误时,抛出异常;我想知道令牌进入解析流的字符数。我该怎么做呢?我已经很久没有玩过ANTLR了,但是如果我记得清楚的话,为了做你想做的事情,我必须对解析器进行子类化,以保留一个字符计数器,该计数器在每次发现一个新的令牌时都会递增,当然是令牌长度。我玩过ANTLR已经很久了,但是如果我记得很清楚的话,为了做您想要做的事情,我必须对解析器进行子类化,以保留一个字符计数器,该计数器在每次发现一个新的令牌时都会递增,当然,令

我有一个简单的语法,并使用antlr 2.7.7生成了一对c类。当解析器发现令牌错误时,抛出异常;我想知道令牌进入解析流的字符数。我该怎么做呢?

我已经很久没有玩过ANTLR了,但是如果我记得清楚的话,为了做你想做的事情,我必须对解析器进行子类化,以保留一个字符计数器,该计数器在每次发现一个新的令牌时都会递增,当然是令牌长度。

我玩过ANTLR已经很久了,但是如果我记得很清楚的话,为了做您想要做的事情,我必须对解析器进行子类化,以保留一个字符计数器,该计数器在每次发现一个新的令牌时都会递增,当然,令牌的长度也是如此。

您应该阅读Terrence Parr的《最终ANTLR参考》一书中的第10章错误报告和恢复

由于不知道您使用的是什么目标语言,因此很难确切地告诉您该做什么。但是我假设您使用的是Java目标,如果我错了,您可以纠正我

当ANTLR识别器无法匹配输入字符串时,它会根据故障上下文抛出一个非常特定的异常。有九种不同类型的异常,RecognitionException是根类型,它有自己的八个子类:MissMatchedTokenException、MissMatchedReinedeException、NoviableException、EarlyExitException、FailedPredicateException、MissMatchedRangeException、MissMatchedSetException、MissMatchedNotSetException

根异常类型RecognitionException有几个方便的公共字段,您可能需要特别查看这些字段:index、line和charPositionInLine。索引字段告诉您发现错误的确切字符位置。line和charPositionInLine字段是非常自解释的。以下是JavaDoc:


您应该阅读特伦斯·帕尔的书《最终ANTLR参考》中的第10章错误报告和恢复

由于不知道您使用的是什么目标语言,因此很难确切地告诉您该做什么。但是我假设您使用的是Java目标,如果我错了,您可以纠正我

当ANTLR识别器无法匹配输入字符串时,它会根据故障上下文抛出一个非常特定的异常。有九种不同类型的异常,RecognitionException是根类型,它有自己的八个子类:MissMatchedTokenException、MissMatchedReinedeException、NoviableException、EarlyExitException、FailedPredicateException、MissMatchedRangeException、MissMatchedSetException、MissMatchedNotSetException

根异常类型RecognitionException有几个方便的公共字段,您可能需要特别查看这些字段:index、line和charPositionInLine。索引字段告诉您发现错误的确切字符位置。line和charPositionInLine字段是非常自解释的。以下是JavaDoc:


我的目标是c-RecognitionException类有行和列,但没有索引,它们似乎总是设置为-1。上述文件来自ANTLR 3站点-它是否仍然适用于ANTLR 2?嗯。不幸的是,那时我想我帮不了你什么忙。抱歉:我的目标是c-RecognitionException类有行和列,但没有索引,它们似乎总是设置为-1。上述文件来自ANTLR 3站点-它是否仍然适用于ANTLR 2?嗯。不幸的是,那时我想我帮不了你什么忙。对不起的: