expandTokens method

List<Token> expandTokens(
  1. List<Token> tokens
)

Fully expands tokens (for \edef, \xdef).

Implementation

List<Token> expandTokens(List<Token> tokens) {
  final savedFloor = _floor;
  final savedHitEnd = hitEndOfInput;
  final base = _stack.length;
  _floor = base;
  pushAll(tokens);
  final out = <Token>[];
  try {
    while (_stack.length > base) {
      final t = peekRaw();
      if (_expandable(t)) {
        _expandOnce();
        continue;
      }
      if (_stack.length <= base) break;
      out.add(_stack.removeLast());
    }
  } finally {
    _floor = savedFloor;
    hitEndOfInput = savedHitEnd;
  }
  return out;
}