Token peek({int? offset}) { final int idx = curr + (offset ?? 0); if (idx >= tokens.length) { return Token.eof(); } return tokens[idx]; }