示例#1
0
        protected EV3Type CalculateCommonType(EV3Type type1, EV3Type type2)
        {
            if (type1.BaseType() == type2.BaseType())
            {
                if (type1.IsArray())
                {
                    return(type1);
                }
                return(type2);
            }
            if (type1.BaseType().IsNumber() && type2.BaseType().IsNumber())
            {
                return(EV3Type.Float);
            }
            if ((type1.BaseType().IsNumber() && type2.BaseType() == EV3Type.String) || (type1.BaseType() == EV3Type.String && type2.BaseType().IsNumber()))
            {
                return(EV3Type.String);
            }

            return(EV3Type.Unknown);
        }
示例#2
0
        protected string CompileWithConvert(TextWriter writer, IExpressionCompiler compiler, EV3Type resultType, EV3Variables.TempVariableCreator tempVariables)
        {
            string value = compiler.Compile(writer, tempVariables.CreateVariable(compiler.Type));

            if (compiler.Type.BaseType().IsNumber() && resultType.BaseType() == EV3Type.String)
            {
                if (compiler.IsLiteral)
                {
                    return("'" + SmallBasicExtensions.FormatFloat(value) + "'");
                }
                else
                {
                    IEV3Variable outputVariable = tempVariables.CreateVariable(EV3Type.String);

                    writer.WriteLine($"    STRINGS VALUE_FORMATTED {value} '%g' 99 {outputVariable.Ev3Name}");

                    return(outputVariable.Ev3Name);
                }
            }
            else
            {
                return(value);
            }
        }
示例#3
0
 public static bool IsArrayOf(this EV3Type type, EV3Type baseType)
 {
     return(type.IsArray() && type.BaseType() == baseType);
 }