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 $$;
}