readRules method

void readRules(
  1. ATN atn
)

Implementation

void readRules(ATN atn) {
  final nrules = readInt();
  if (atn.grammarType == ATNType.LEXER) {
    atn.ruleToTokenType = <int>[];
  }

  for (var i = 0; i < nrules; i++) {
    final s = readInt();
    final startState = atn.states[s] as RuleStartState;
    atn.ruleToStartState.add(startState);
    if (atn.grammarType == ATNType.LEXER) {
      var tokenType = readInt();

      atn.ruleToTokenType.add(tokenType);
    }
  }

  atn.ruleToStopState = List<RuleStopState>.generate(
      nrules, (int index) => RuleStopState(index));

  for (var state in atn.states) {
    if (state is! RuleStopState) {
      continue;
    }
    atn.ruleToStopState[state.ruleIndex] = state;
    atn.ruleToStartState[state.ruleIndex].stopState = state;
  }
}