public void Substitute(string variable, string expr) { var exptokens = new Lexer("(" + expr + ")").GenerateTokens(); int i = 0; while (i < tokens.Count) { if (tokens[i].type == Token.Type.VARIABLE && tokens[i].value == variable) { tokens.RemoveAt(i); tokens.InsertRange(i, exptokens); i += exptokens.Count; } i++; } }