I m使用ANTLR3, 时间为C。
我愿处理一些习俗错误。 我真的说是,如果在一项次级规则中存在某种类型的ant子配对例外,那么我就要告诉《南极海生力量》试图处理它,让它遵守一个更加全球性的规则。
按照这一规则,我会这样做,然后试图恢复。
我制定了这样的规则集权方法,以便所有规则都胜过。
@rulecatch
{
if (HASEXCEPTION())
{
PREPORTERROR();
}
}
这使我能够根据想要的规则插入渔获量处理器。
按照我的利益规则,我可以这样利用渔获物:
catch [ANTLR3_RECOGNITION_EXCEPTION]
{
PREPORTERROR();
RECOGNIZER->consumeUntil(RECOGNIZER,RCURLY);
CONSUME();
PSRSTATE->error = ANTLR3_FALSE;
PSRSTATE->failed = ANTLR3_FALSE;
}
问题是,这一辛迪加似乎只允许我追捕一种例外情况。 我愿赶上所有例外情况。
是否有办法这样做?
我认为,我可以超负荷履行所有恢复职能,但有些法典会产生例外:
CONSTRUCTEX();
EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
EXCEPTION->message = (void *)"";
EXCEPTION->decisionNum = 23;
EXCEPTION->state = 0;
goto rulewhenEx;
意 见 我需要抓住所有可能的例外情况。
任何想法?