reportAmbiguity method
void
reportAmbiguity(
- DFA dfa,
- DFAState D,
- int startIndex,
- int stopIndex,
- bool exact,
- BitSet? ambigAlts,
- ATNConfigSet configs,
override
If context sensitive parsing, we know it's ambiguity not conflict */
Implementation
@override
void reportAmbiguity(
DFA dfa,
DFAState D,
int startIndex,
int stopIndex,
bool exact,
BitSet? ambigAlts,
ATNConfigSet configs,
) {
final prediction =
ambigAlts != null ? ambigAlts.nextset(0) : configs.alts.nextset(0);
if (configs.fullCtx && prediction != conflictingAltResolvedBySLL) {
// Even though this is an ambiguity we are reporting, we can
// still detect some context sensitivities. Both SLL and LL
// are showing a conflict, hence an ambiguity, but if they resolve
// to different minimum alternatives we have also identified a
// context sensitivity.
decisions[currentDecision].contextSensitivities.add(
ContextSensitivityInfo(
currentDecision,
configs,
input,
startIndex,
stopIndex,
),
);
}
decisions[currentDecision].ambiguities.add(
AmbiguityInfo(
currentDecision,
configs,
ambigAlts,
input,
startIndex,
stopIndex,
configs.fullCtx,
),
);
super.reportAmbiguity(
dfa,
D,
startIndex,
stopIndex,
exact,
ambigAlts,
configs,
);
}