evalSemanticContext method
BitSet
evalSemanticContext(
- List<
PredPrediction> predPredictions, - ParserRuleContext outerContext,
- bool complete
Look through a list of predicate/alt pairs, returning alts for the
pairs that win. A Instance
predicate indicates an alt containing an
unpredicated config which behaves as "always true." If !complete
then we stop at the first predicate that evaluates to true. This
includes pairs with null predicates.
Implementation
BitSet evalSemanticContext(
List<PredPrediction> predPredictions,
ParserRuleContext outerContext,
bool complete,
) {
final predictions = BitSet();
for (var pair in predPredictions) {
if (pair.pred == EmptySemanticContext.Instance) {
predictions.set(pair.alt);
if (!complete) {
break;
}
continue;
}
final fullCtx = false; // in dfa
final predicateEvaluationResult =
evalSemanticContextOne(pair.pred, outerContext, pair.alt, fullCtx);
if (debug || dfa_debug) {
log('eval pred $pair=$predicateEvaluationResult');
}
if (predicateEvaluationResult) {
if (debug || dfa_debug) log('PREDICT ' + pair.alt.toString());
predictions.set(pair.alt);
if (!complete) {
break;
}
}
}
return predictions;
}