@Nullable
protected ATNConfig getEpsilonTarget(@NotNull ATNConfig config, @NotNull Transition t, boolean collectPredicates, boolean inContext, PredictionContextCache contextCache, boolean treatEofAsEpsilon) {
switch (t.getSerializationType()) {
case Transition.RULE:
return ruleTransition(config, (RuleTransition)t, contextCache);
case Transition.PRECEDENCE:
return precedenceTransition(config, (PrecedencePredicateTransition)t, collectPredicates, inContext);
case Transition.PREDICATE:
return predTransition(config, (PredicateTransition)t, collectPredicates, inContext);
case Transition.ACTION:
return actionTransition(config, (ActionTransition)t);
case Transition.EPSILON:
return config.transform(t.target, false);
case Transition.ATOM:
case Transition.RANGE:
case Transition.SET:
if (treatEofAsEpsilon) {
if (t.matches(Token.EOF, 0, 1)) {
return config.transform(t.target, false);
}
}
return null;
default:
return null;
}
}