join<T> static method
Combines multiple token into a single token with the list of its values.
Implementation
static Token<List<T>> join<T>(Iterable<Token<T>> token) {
final iterator = token.iterator;
if (!iterator.moveNext()) {
throw ArgumentError.value(token, 'token', 'Require at least one token');
}
final value = <T>[iterator.current.value];
final buffer = iterator.current.buffer;
var start = iterator.current.start;
var stop = iterator.current.stop;
while (iterator.moveNext()) {
if (buffer != iterator.current.buffer) {
throw ArgumentError.value(
token, 'token', 'Token do not use same buffer');
}
value.add(iterator.current.value);
start = math.min(start, iterator.current.start);
stop = math.max(stop, iterator.current.stop);
}
return Token(value, buffer, start, stop);
}