parseAsync method
Implementation
@override
void parseAsync(
State<ChunkedData<StringReader>> state, ResultCallback<String> onDone) {
if (!backtrack(state)) {
onDone(null);
return;
}
final input = state.input;
final start = input.start;
final pos = state.pos;
input.buffering++;
void parse9() {
p9.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.buffering--;
final data = input.data;
final source = data.source!;
if (state.pos != pos) {
onDone(Result(source.substring(pos - start, state.pos - start)));
} else {
onDone(const Result(''));
}
}
});
}
void parse8() {
p8.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse9);
}
});
}
void parse7() {
p7.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse8);
}
});
}
void parse6() {
p6.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse7);
}
});
}
void parse5() {
p5.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse6);
}
});
}
void parse4() {
p4.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse5);
}
});
}
void parse3() {
p3.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse4);
}
});
}
void parse2() {
p2.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
state.pos = pos;
onDone(null);
} else {
input.handle(parse3);
}
});
}
void parse() {
p1.parseAsync(state, (result) {
if (result == null) {
input.buffering--;
onDone(null);
} else {
input.handle(parse2);
}
});
}
parse();
}