getText method

  1. @override
String getText([
  1. Interval? interval
])
override

Return the text of all tokens within the specified interval. This method behaves like the following code (including potential exceptions for violating preconditions of {@link #get}, but may be optimized by the specific implementation.

TokenStream stream = ...;
String text = "";
for (int i = interval.a; i <= interval.b; i++) {
  text += stream.get(i).getText();
}
TokenStream stream = ...;
String text = stream.getText(new Interval(0, stream.length));
TokenStream stream = ...;
String text = stream.getText(ctx.getSourceInterval());

@param interval The interval of tokens within this stream to get text for. @return The text of all tokens / within the specified interval in this stream.

Implementation

@override
String getText([Interval? interval]) {
  interval = interval ??
      Interval.of(0, size - 1); // Get the text of all tokens in this buffer.
  final start = interval.a;
  var stop = interval.b;
  if (start < 0 || stop < 0) return '';
  fill();
  if (stop >= tokens.length) stop = tokens.length - 1;

  final buf = StringBuffer();
  for (var i = start; i <= stop; i++) {
    final t = tokens[i];
    if (t.type == Token.EOF) break;
    buf.write(t.text);
  }
  return buf.toString();
}