ParserATNSimulator.java 文件源码

java
阅读 33 收藏 0 点赞 0 评论 0

项目:Scratch-ApuC 作者:
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);
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号