parse_Reason method

dynamic parse_Reason()

Implementation

dynamic parse_Reason() {
  var $$;
  switch (_getState(_transitions13)) {
    case 0:
    case 2:
      var ch0 = _ch, pos0 = _cursor, startPos0 = _startPos;
      _startPos = _cursor;
      while (true) {
        switch (_getState(_transitions74)) {
          case 0:
            var startPos1 = _startPos;
            _startPos = _cursor;
            $$ = _parse_token();
            _startPos = startPos1;
            break;
          case 1:
            while (true) {
              var startPos2 = _startPos;
              _startPos = _cursor;
              $$ = _matchString(_strings18, 'SIP', true);
              _startPos = startPos2;
              if (success) break;
              var startPos3 = _startPos;
              _startPos = _cursor;
              $$ = _parse_token();
              _startPos = startPos3;
              break;
            }
            break;
          case 2:
          case 3:
            $$ = null;
            success = false;
            break;
        }
        if (!success && _cursor > _testing) {
          _failure(_expect112);
        }
        if (!success) break;
        var seq = List<dynamic>.filled(2, null, growable: false)..[0] = $$;
        var testing0 = _testing;
        for (var reps = [];;) {
          _testing = _cursor;
          switch (_ch >= 0 && _ch <= 1114111
              ? 0
              : _ch == -1
                  ? 2
                  : 1) {
            case 0:
            case 2:
              var ch1 = _ch, pos1 = _cursor, startPos4 = _startPos;
              _startPos = _cursor;
              while (true) {
                $$ = _parse_SEMI();
                if (!success) break;
                var seq = List<dynamic>.filled(2, null, growable: false)
                  ..[0] = $$;
                $$ = _parse_reason_param();
                if (!success) break;
                seq[1] = $$;
                $$ = seq;
                break;
              }
              if (!success) {
                _ch = ch1;
                _cursor = pos1;
              }
              _startPos = startPos4;
              break;
            case 1:
              $$ = null;
              success = false;
              break;
          }
          if (!success && _cursor > _testing) {
            _failure(_expect30);
          }
          if (success) {
            reps.add($$);
          } else {
            success = true;
            _testing = testing0;
            $$ = reps;
            break;
          }
        }
        if (!success) break;
        seq[1] = $$;
        $$ = seq;
        if (success) {
          final $1 = seq[0];
          final $2 = seq[1];
          final $start = startPos0;
          var pos0 = _startPos;
          $$ = ((offset, protocol) {
            ///CODE_START
            data.protocol = protocol.toLowerCase();
            if (data.params == null) data.params = {};
            if (data.params!['text'] != null &&
                data.params!['text'][0] == '"') {
              var text = data.params!['text'];
              data.text = text.substring(1, text.length - 1);
              data.params!['text'] = null;
            }
            return data;

            ///CODE_END
          })($start, $1);
        }
        break;
      }
      if (!success) {
        _ch = ch0;
        _cursor = pos0;
      }
      _startPos = startPos0;
      break;
    case 1:
      $$ = null;
      success = false;
      break;
  }
  if (!success && _cursor > _testing) {
    _failure(_expect112);
  }
  return $$;
}