private Expression GenUnary(UnaryExpr elem)
            {
                Contract.Requires <ArgumentNullException>(elem != null);
                Contract.Ensures(Contract.Result <Expression>() != null);
                var value  = GenElem(elem.Value);
                var binder = SearchBinder(elem.ExprType);

                if (binder != null)
                {
                    return(Expression.Dynamic(binder, typeof(object), value));
                }
                throw Error("未定義の演算が現れました。", elem.Range.Start);
            }
 private Expression GenUnary(UnaryExpr elem)
 {
     Contract.Requires<ArgumentNullException>(elem != null);
     Contract.Ensures(Contract.Result<Expression>() != null);
     var value = GenElem(elem.Value);
     var binder = SearchBinder(elem.ExprType);
     if (binder != null)
         return Expression.Dynamic(binder, typeof(object), value);
     throw Error("未定義の演算が現れました。", elem.Range.Start);
 }