private Expression T1(Expression e1)
    {
        if (lexer.Current == LexicalToken.Star || lexer.Current == LexicalToken.Slash)
        {
            var op = OperatorExpression.FromToken(lexer.Current);
            lexer.Next();
            var e2 = F();
            var e3 = Expression.Binary(e1, op, e2);
            var e4 = T1(e3);

            return(e4);
        }
        else
        {
            return(e1);
        }
    }
    private Expression E1(Expression e1)
    {
        if (lexer.Current == LexicalToken.Plus || lexer.Current == LexicalToken.Minus)
        {
            var op = OperatorExpression.FromToken(lexer.Current);
            lexer.Next();
            var e2 = T();
            var e3 = Expression.Binary(e1, op, e2);
            var e4 = E1(e3);

            return(e4);
        }
        else
        {
            return(e1);
        }
    }