예제 #1
0
    void DefineAndSet(string name, System.Type type, Object obj)
    {
        CQ_Value value = new CQ_Value();

        value.SetObject(type, obj);
        content.DefineAndSet(name, type, value);
    }
예제 #2
0
    public void SetValue(string name, object v)
    {
        CQ_Value val = new CQ_Value();

        val.SetObject(v.GetType(), v);
        content.DefineAndSet(name, v.GetType(), val);
    }
예제 #3
0
    CQ_Value SetMember(string name, System.Type type, Object obj)
    {
        CQ_Value val = new CQ_Value();

        val.SetObject(type, obj);
        inst.member[name] = val;
        return(val);
    }
예제 #4
0
        public static ICQ_Expression Compiler_Expression_Value(Token value, int pos)
        {
            if (value.type == TokenType.VALUE)
            {
                if (value.text[value.text.Length - 1] == 'f')
                {
                    CQ_Value v = new CQ_Value();
                    v.SetNumber(typeof(float), float.Parse(value.text.Substring(0, value.text.Length - 1)));
                    return(new CQ_Expression_Value(v));
                }
                else if (value.text.Contains("."))
                {
                    CQ_Value v = new CQ_Value();
                    v.SetNumber(typeof(double), double.Parse(value.text));
                    return(new CQ_Expression_Value(v));
                }
                else
                {
                    if (value.text.Contains("'"))
                    {
                        CQ_Value v = new CQ_Value();
                        v.SetNumber(typeof(char), (char)value.text[1]);
                        return(new CQ_Expression_Value(v));
                    }

                    else
                    {
                        ulong lv = ulong.Parse(value.text);
                        if (lv > uint.MaxValue)
                        {
                            CQ_Value v = new CQ_Value();
                            v.SetNumber(typeof(long), (long)lv);
                            return(new CQ_Expression_Value(v));
                        }
                        else
                        {
                            CQ_Value v = new CQ_Value();
                            v.SetNumber(typeof(int), (int)lv);
                            return(new CQ_Expression_Value(v));
                        }
                    }
                }
            }
            else if (value.type == TokenType.STRING)
            {
                CQ_Value v = new CQ_Value();
                v.SetObject(typeof(string), value.text.Substring(1, value.text.Length - 2));
                return(new CQ_Expression_Value(v));
            }
            else if (value.type == TokenType.IDENTIFIER)
            {
                CQ_Expression_GetValue getvalue = new CQ_Expression_GetValue(pos, pos, value.line, value.line);
                getvalue.value_name = value.text;
                return(getvalue);
            }
            else if (value.type == TokenType.TYPE)
            {
                CQ_Expression_GetValue getvalue = new CQ_Expression_GetValue(pos, pos, value.line, value.line);
                int l = value.text.LastIndexOf('.');
                if (l >= 0)
                {
                    getvalue.value_name = value.text.Substring(l + 1);
                }
                else
                {
                    getvalue.value_name = value.text;
                }
                return(getvalue);
            }
            else
            {
                DebugUtil.LogError("无法识别的简单表达式" + value);
                return(null);
            }
        }