Пример #1
0
        public static QLType FromTokenTypeToQLType(IToken token)
        {
            QLType type = QLType.Undefined;

            switch (token.Type)
            {
            case QLParser.INTEGER:
                type = QLType.Integer;
                break;

            case QLParser.BOOLEAN:
                type = QLType.Boolean;
                break;

            case QLParser.DECIMAL:
                type = QLType.Decimal;
                break;

            case QLParser.DATE:
                type = QLType.Date;
                break;

            case QLParser.STRING:
                type = QLType.String;
                break;
            }
            return(type);
        }
Пример #2
0
 public QuestionNode(IToken token, string description, string label, bool isEvaluated, QLType type) : base(token)
 {
     Description = description;
     Label       = label;
     Type        = type;
     IsEvaluated = isEvaluated;
 }
Пример #3
0
        public bool AcceptTypes(QLType leftHand, QLType rightHand)
        {
            bool integersOrDecimals = ((leftHand == QLType.Integer || leftHand == QLType.Decimal) &&
                                       (rightHand == QLType.Integer || rightHand == QLType.Decimal));
            bool date = (leftHand == QLType.Date && rightHand == QLType.Date);

            return(integersOrDecimals || date);
        }
Пример #4
0
 public QLType ResultingType(QLType leftType, QLType rightType)
 {
     if (leftType == rightType)
     {
         return(leftType);
     }
     return(QLType.Decimal);
 }
Пример #5
0
        public static QLType ResolveOperationType(QLType leftHand, QLType rightHand)
        {
            if (leftHand == rightHand)
            {
                return(leftHand);
            }

            return(_typeResolutions[new TypePair(leftHand, rightHand)]);
        }
Пример #6
0
 public bool AcceptTypes(QLType leftHand, QLType rightHand)
 {
     if ((leftHand == QLType.Integer || leftHand == QLType.Decimal) &&
         (rightHand == QLType.Integer || rightHand == QLType.Decimal))
     {
         return(true);
     }
     return(leftHand == rightHand);
 }
Пример #7
0
        internal QuestionViewModel(string description, string id, bool isEvaluated, object value, QLType type, FormViewModel parentForm)
        {
            _value = value;

            Id          = id;
            Description = description;
            IsEvaluated = isEvaluated;
            QLType      = type;
            Widget      = type != QLType.Boolean ? WidgetType.Textbox : WidgetType.Radio;

            this.ObservableForProperty(x => x.Value)
            .Subscribe(x => parentForm.QuestionValueAssignedCommand.Execute(this));
        }
Пример #8
0
        public override Value Evaluate(Value leftHand, Value rightHand)
        {
            QLType finalType = ResultingType(leftHand.Type, rightHand.Type);

            if (finalType == QLType.Integer)
            {
                return(new Value(leftHand.ToInt() * rightHand.ToInt(), finalType));
            }
            else if (finalType == QLType.Decimal)
            {
                return(new Value(leftHand.ToDecimal() * rightHand.ToDecimal(), finalType));
            }
            throw new NotSupportedException($"{finalType} is not supported by the '*' operator");
        }
Пример #9
0
            public IValue CreateValue(object value, QLType type)
            {
                switch (type)
                {
                case QLType.Boolean: return(new Value((bool)value, type));

                case QLType.String: return(new Value((string)value, type));

                case QLType.Integer: return(new Value(Convert.ToInt32(value), type));

                case QLType.Decimal: return(new Value(Convert.ToDouble(value), type));

                case QLType.Date: return(new Value((string)value, type));
                }
                throw new NotSupportedException("Tried to create a Value of a type that is not implemented.");
            }
Пример #10
0
            public IValue CreateValueFromString(object value, QLType type)
            {
                switch (type)
                {
                case QLType.Boolean: return(new Value(bool.Parse(value.ToString()), type));

                case QLType.String: return(new Value(value.ToString(), type));

                case QLType.Integer: return(new Value(int.Parse(value.ToString()), type));

                case QLType.Decimal: return(new Value(double.Parse(value.ToString()), type));

                case QLType.Date: return(new Value(value.ToString(), type));
                }
                throw new NotSupportedException("Tried to create a Value of a type that is not implemented.");
            }
Пример #11
0
 public Symbol(string name, QLType type, IToken token)
 {
     Name  = name;
     Type  = type;
     Token = token;
 }
Пример #12
0
 internal TypePair(QLType first, QLType second)
 {
     FirstType  = first;
     SecondType = second;
 }
Пример #13
0
 public bool IsCompatibleWith(QLType questionType)
 {
     return(questionType == QLType.Boolean);
 }
Пример #14
0
 public QLType ResultingType(QLType value, QLType empty = QLType.Undefined)
 {
     return(QLType.Boolean);
 }
Пример #15
0
 public bool AcceptTypes(QLType value, QLType empty = QLType.Undefined)
 {
     return(value == QLType.Boolean);
 }
Пример #16
0
 public bool IsCompatibleWith(QLType questionType)
 {
     return(true);
 }
Пример #17
0
 private Value(QLType type) : this(_defaultValues[type], type)
 {
 }
Пример #18
0
 public bool IsCompatibleWith(QLType questionType)
 {
     return(questionType == QLType.Integer ||
            questionType == QLType.Decimal ||
            questionType == QLType.String);
 }
Пример #19
0
 public Value(object value, QLType type)
 {
     _value = value;
     _type  = type;
     // TODO it is still possible to assign a "23.4" to a QLInteger Value
 }
Пример #20
0
        public override Node VisitLiteralExpression(LiteralExpressionContext context)
        {
            QLType type = QLTypeConverter.FromTokenTypeToQLType(context.Start);

            return(new LiteralNode(context.Start, context.literal().GetText(), type));
        }
Пример #21
0
        public IValue Evaluate(IValue leftHand, IValue rightHand)
        {
            QLType finalType = ResultingType(leftHand.Type, rightHand.Type);

            return(_valueFactory.CreateValue(_operator(leftHand.ToDecimal(), rightHand.ToDecimal()), finalType));
        }
Пример #22
0
 public IValue CreateDefaultValue(QLType type)
 {
     return(new Value(type));
 }
Пример #23
0
 /// <summary>
 /// Default value constructor
 /// </summary>
 public Value(QLType type) : this(_defaultValues[type], type)
 {
 }
Пример #24
0
 public QLType ResultingType(QLType leftType, QLType rightType)
 {
     return(QLType.Boolean);
 }
Пример #25
0
 public bool AcceptTypes(QLType leftHand, QLType rightHand)
 {
     return(leftHand == QLType.Boolean && rightHand == QLType.Boolean);
 }
Пример #26
0
 public bool AcceptTypes(QLType value, QLType empty = QLType.Undefined)
 {
     return(value == QLType.Integer || value == QLType.Decimal);
 }
Пример #27
0
 public LiteralNode(IToken token, string value, QLType type) : base(token)
 {
     Value = value;
     Type  = type;
 }
Пример #28
0
 private Value(object value, QLType type)
 {
     _value = value;
     Type   = type;
 }