Beispiel #1
0
        public static NumberValue ConvertLogicalValueToNumberValue(LogicalValue source, IMainStorageContext mainStorageContext)
        {
            var result = new NumberValue(source.AsLogicalValue.SystemValue);

            FillAnnotationsModalitiesAndSections(source, result, mainStorageContext);

            return(result);
        }
Beispiel #2
0
        public static LogicalValue ConvertNullValueToLogicalValue(NullValue source, IMainStorageContext mainStorageContext)
        {
            var result = new LogicalValue(null);

            FillAnnotationsModalitiesAndSections(source, result, mainStorageContext);

            return(result);
        }
Beispiel #3
0
        private static string LogicalValueToString(LogicalValue value)
        {
            var systemValue = value.SystemValue;

            var sb = new StringBuilder();

            if (systemValue.HasValue)
            {
                sb.Append(systemValue.Value.ToString(_cultureInfo));
            }
            else
            {
                sb.Append("NULL");
            }

            sb.Append(AnnotatedItemToString(value));
            return(sb.ToString());
        }
        public Value GetInheritanceRank(StrongIdentifierValue subName, StrongIdentifierValue superName, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options)
        {
#if DEBUG
            //Log($"subName = {subName}");
            //Log($"superName = {superName}");
#endif

            var weightedInheritanceItemsList = GetWeightedInheritanceItems(subName, localCodeExecutionContext, options);

#if DEBUG
            //Log($"weightedInheritanceItemsList = {weightedInheritanceItemsList.WriteListToString()}");
#endif

            if (!weightedInheritanceItemsList.Any())
            {
                var result = new LogicalValue(0);
                return(result);
            }

            var targetWeightedInheritanceItemsList = weightedInheritanceItemsList.Where(p => p.SuperName.Equals(superName)).ToList();

#if DEBUG
            //Log($"targetWeightedInheritanceItemsList = {targetWeightedInheritanceItemsList.WriteListToString()}");
#endif

            if (!targetWeightedInheritanceItemsList.Any())
            {
                var result = new LogicalValue(0);
                return(result);
            }

            if (targetWeightedInheritanceItemsList.Count == 1)
            {
                var result = new LogicalValue(targetWeightedInheritanceItemsList.First().Rank);

                return(result);
            }

            throw new NotImplementedException();
        }
Beispiel #5
0
        private static IRValueNode CreateConstant(ParseContext context)
        {
            var         tokens       = context.Tokens;
            var         currentToken = tokens.CurrentToken;
            IRValueNode term         = null;

            switch (currentToken.TokenType)
            {
            case RTokenType.NaN:
            case RTokenType.Infinity:
            case RTokenType.Number:
                term = new NumericalValue();
                break;

            case RTokenType.Complex:
                term = new ComplexValue();
                break;

            case RTokenType.Logical:
                term = new LogicalValue();
                break;

            case RTokenType.String:
                term = new StringValue();
                break;

            case RTokenType.Null:
                term = new NullValue();
                break;

            case RTokenType.Missing:
                term = new MissingValue();
                break;
            }

            Debug.Assert(term != null);
            term.Parse(context, null);
            return(term);
        }
Beispiel #6
0
        private static IRValueNode CreateConstant(ParseContext context) {
            TokenStream<RToken> tokens = context.Tokens;
            RToken currentToken = tokens.CurrentToken;
            IRValueNode term = null;

            switch (currentToken.TokenType) {
                case RTokenType.NaN:
                case RTokenType.Infinity:
                case RTokenType.Number:
                    term = new NumericalValue();
                    break;

                case RTokenType.Complex:
                    term = new ComplexValue();
                    break;

                case RTokenType.Logical:
                    term = new LogicalValue();
                    break;

                case RTokenType.String:
                    term = new StringValue();
                    break;

                case RTokenType.Null:
                    term = new NullValue();
                    break;

                case RTokenType.Missing:
                    term = new MissingValue();
                    break;
            }

            Debug.Assert(term != null);
            term.Parse(context, null);
            return term;
        }