Ejemplo n.º 1
0
 //小数リテラル
 public override bool Visit(
     UnifiedFractionLiteral element, VisitorArgument arg)
 {
     // TODO: そのまま出力しても良いのか?
     Writer.Write(element.Value.ToString("r"));
     return(false);
 }
 public static UnifiedExpression CreateFloat(XElement node)
 {
     Contract.Requires(node != null);
     Contract.Requires(node.Name() == "Float");
     return(UnifiedFractionLiteral.Create(
                double.Parse(node.Value),
                UnifiedFractionLiteralKind.Double));
 }
Ejemplo n.º 3
0
 public UnifiedElement VisitPrimitiveExpression(
     PrimitiveExpression prim, object data)
 {
     if (prim.Value == null)
     {
         return(UnifiedNullLiteral.Create());
     }
     if (prim.Value is bool)
     {
         return(UnifiedBooleanLiteral.Create((bool)prim.Value));
     }
     if (prim.Value is Int32)
     {
         return(UnifiedIntegerLiteral.CreateInt32((Int32)prim.Value));
     }
     if (prim.Value is UInt32)
     {
         return(UnifiedIntegerLiteral.CreateUInt32((UInt32)prim.Value));
     }
     if (prim.Value is Int64)
     {
         return(UnifiedIntegerLiteral.CreateInt64((Int64)prim.Value));
     }
     if (prim.Value is UInt64)
     {
         return(UnifiedIntegerLiteral.CreateUInt64((UInt64)prim.Value));
     }
     if (prim.Value is Single)
     {
         return(UnifiedFractionLiteral.Create(
                    (Single)prim.Value, UnifiedFractionLiteralKind.Single));
     }
     if (prim.Value is double)
     {
         return(UnifiedFractionLiteral.Create(
                    (double)prim.Value, UnifiedFractionLiteralKind.Double));
     }
     if (prim.Value is char)
     {
         return(UnifiedCharLiteral.Create(((char)prim.Value).ToString()));
     }
     if (prim.Value is string)
     {
         return(UnifiedStringLiteral.Create(prim.LiteralValue));
     }
     throw new NotImplementedException(
               "value type is " + prim.Value.GetType());
 }
        public static UnifiedExpression CreateFloatingPointLiteral(
            XElement node)
        {
            Contract.Requires(node != null);
            Contract.Requires(node.Name() == "FLOATING_POINT_LITERAL");

            /*
             * FLOATING_POINT_LITERAL
             * :   ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
             * |   '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
             * |   ('0'..'9')+ Exponent FloatTypeSuffix?
             * |   ('0'..'9')+ Exponent? FloatTypeSuffix
             * ;
             */
            // TODO UnifiedFractionLiteralKind.Doubleはダブルで大丈夫か?
            return(UnifiedFractionLiteral.Create(
                       double.Parse(node.Value), UnifiedFractionLiteralKind.Double));
        }
        public override bool Visit(
            UnifiedFractionLiteral element, VisitorArgument arg)
        {
            Writer.Write(element.Value.ToString("r"));
            switch (element.Kind)
            {
            case UnifiedFractionLiteralKind.Single:
                Writer.Write("f");
                break;

            case UnifiedFractionLiteralKind.Double:
                Writer.Write("d");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(false);
        }
 public override bool Visit(
         UnifiedFractionLiteral element, VisitorArgument arg)
 {
     Writer.Write(element.Value.ToString("r"));
     switch (element.Kind) {
     case UnifiedFractionLiteralKind.Single:
         Writer.Write("f");
         break;
     case UnifiedFractionLiteralKind.Double:
         Writer.Write("d");
         break;
     default:
         throw new ArgumentOutOfRangeException();
     }
     return false;
 }
 //小数リテラル
 public override bool Visit(
         UnifiedFractionLiteral element, VisitorArgument arg)
 {
     // TODO: そのまま出力しても良いのか?
     Writer.Write(element.Value.ToString("r"));
     return false;
 }
Ejemplo n.º 8
0
 public static UnifiedFractionLiteral ToLiteral(this double value)
 {
     return(UnifiedFractionLiteral.Create(
                value, UnifiedFractionLiteralKind.Double));
 }