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++;
            }
        }