getEpsilonTarget method
Implementation
ATNConfig? getEpsilonTarget(
ATNConfig config,
Transition t,
bool collectPredicates,
bool inContext,
bool fullCtx,
bool treatEofAsEpsilon) {
switch (t.type) {
case TransitionType.RULE:
return ruleTransition(config, t as RuleTransition);
case TransitionType.PRECEDENCE:
return precedenceTransition(
config,
t as PrecedencePredicateTransition,
collectPredicates,
inContext,
fullCtx,
);
case TransitionType.PREDICATE:
return predTransition(
config,
t as PredicateTransition,
collectPredicates,
inContext,
fullCtx,
);
case TransitionType.ACTION:
return actionTransition(config, t as ActionTransition);
case TransitionType.EPSILON:
return ATNConfig.dup(config, state: t.target);
case TransitionType.ATOM:
case TransitionType.RANGE:
case TransitionType.SET:
// EOF transitions act like epsilon transitions after the first EOF
// transition is traversed
if (treatEofAsEpsilon) {
if (t.matches(Token.EOF, 0, 1)) {
return ATNConfig.dup(config, state: t.target);
}
}
return null;
default:
return null;
}
}