diff --git a/src/Parser/Lexer.cpp b/src/Parser/Lexer.cpp index cb1022c..c8f5b49 100644 --- a/src/Parser/Lexer.cpp +++ b/src/Parser/Lexer.cpp @@ -14,17 +14,23 @@ namespace Porygon::Parser { vector Lexer::Lex() { - vector tokens; + // This is a very greedy allocation. Look into potentially making this less greedy. + vector tokens(this->_scriptSize+1); + size_t current = 0; while (true) { Token *next = this->LexNext(this->Next()); auto nextKind = next->GetKind(); if (nextKind != TokenKind::WhiteSpace && nextKind != TokenKind::Comment) - tokens.push_back(next); + { + tokens[current] = next; + current++; + } else delete next; if (nextKind == TokenKind::EndOfFile) break; } + tokens.resize(current); return tokens; }