edgeFactory method
Transition
edgeFactory(
- ATN atn,
- TransitionType type,
- int src,
- int trg,
- int arg1,
- int arg2,
- int arg3,
- List<
IntervalSet> sets,
Implementation
Transition edgeFactory(
ATN atn,
TransitionType type,
int src,
int trg,
int arg1,
int arg2,
int arg3,
List<IntervalSet> sets,
) {
final target = atn.states[trg]!;
switch (type) {
case TransitionType.EPSILON:
return EpsilonTransition(target);
case TransitionType.RANGE:
return arg3 != 0
? RangeTransition(target, Token.EOF, arg2)
: RangeTransition(target, arg1, arg2);
case TransitionType.RULE:
final rt = RuleTransition(
atn.states[arg1] as RuleStartState, arg2, arg3, target);
return rt;
case TransitionType.PREDICATE:
final pt = PredicateTransition(target, arg1, arg2, arg3 != 0);
return pt;
case TransitionType.PRECEDENCE:
return PrecedencePredicateTransition(target, arg1);
case TransitionType.ATOM:
return arg3 != 0
? AtomTransition(target, Token.EOF)
: AtomTransition(target, arg1);
case TransitionType.ACTION:
final a = ActionTransition(target, arg1, arg2, arg3 != 0);
return a;
case TransitionType.SET:
return SetTransition(target, sets[arg1]);
case TransitionType.NOT_SET:
return NotSetTransition(target, sets[arg1]);
case TransitionType.WILDCARD:
return WildcardTransition(target);
case TransitionType.INVALID:
throw ArgumentError.value(type, 'transition type', 'not valid.');
default:
throw ArgumentError.value(type, 'transition type', 'not valid.');
}
}