protected void predicateDFAState(DFAState dfaState, DecisionState decisionState) {
// We need to test all predicates, even in DFA states that
// uniquely predict alternative.
int nalts = decisionState.getNumberOfTransitions();
// Update DFA so reach becomes accept state with (predicate,alt)
// pairs if preds found for conflicting alts
BitSet altsToCollectPredsFrom = getConflictingAltsOrUniqueAlt(dfaState.configs);
SemanticContext[] altToPred = getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);
if ( altToPred!=null ) {
dfaState.predicates = getPredicatePredictions(altsToCollectPredsFrom, altToPred);
dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds
}
else {
// There are preds in configs but they might go away
// when OR'd together like {p}? || NONE == NONE. If neither
// alt has preds, resolve to min alt
dfaState.prediction = altsToCollectPredsFrom.nextSetBit(0);
}
}
ParserATNSimulator.java 文件源码
java
阅读 33
收藏 0
点赞 0
评论 0
项目:Scratch-ApuC
作者:
评论列表
文章目录