parse_Refer_To method

dynamic parse_Refer_To()

Implementation

dynamic parse_Refer_To() {
  var $$;
  switch (_ch >= 0 && _ch <= 1114111
      ? 0
      : _ch == -1
          ? 2
          : 1) {
    case 0:
    case 2:
      var ch0 = _ch, pos0 = _cursor, startPos0 = _startPos;
      _startPos = _cursor;
      while (true) {
        switch (_getState(_transitions58)) {
          case 0:
            var startPos1 = _startPos;
            _startPos = _cursor;
            $$ = _parse_name_addr();
            _startPos = startPos1;
            break;
          case 1:
          case 3:
            while (true) {
              var startPos2 = _startPos;
              _startPos = _cursor;
              $$ = _parse_addr_spec();
              _startPos = startPos2;
              if (success) break;
              var startPos3 = _startPos;
              _startPos = _cursor;
              $$ = _parse_name_addr();
              _startPos = startPos3;
              break;
            }
            break;
          case 2:
            $$ = null;
            success = false;
            break;
        }
        if (!success && _cursor > _testing) {
          _failure(_expect81);
        }
        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_generic_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 = $start;
          {
            ///CODE_START
            try {
              $$ = NameAddrHeader(data.uri, data.display_name, data.params);
            } catch (e) {
              $$ = -1;
            }

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