/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public Exp Expr()
        {
            TOKEN l_token;
            Exp   RetValue = Term();

            while (Current_Token == TOKEN.TOK_PLUS || Current_Token == TOKEN.TOK_SUB)
            {
                l_token       = Current_Token;
                Current_Token = GetToken();
                Exp e1 = Expr();
                RetValue = new BinaryExp(RetValue, e1,
                                         l_token == TOKEN.TOK_PLUS ? OPERATOR.PLUS : OPERATOR.MINUS);
            }

            return(RetValue);
        }
        /// <summary>
        ///
        /// </summary>
        public Exp Term()
        {
            TOKEN l_token;
            Exp   RetValue = Factor();

            while (Current_Token == TOKEN.TOK_MUL || Current_Token == TOKEN.TOK_DIV)
            {
                l_token       = Current_Token;
                Current_Token = GetToken();


                Exp e1 = Term();
                RetValue = new BinaryExp(RetValue, e1,
                                         l_token == TOKEN.TOK_MUL ? OPERATOR.MUL : OPERATOR.DIV);
            }

            return(RetValue);
        }
 public UnaryExp(Exp a, OPERATOR op)
 {
     _ex1 = new BinaryExp(new NumericConstant(0), a, _op);
 }