Exemplo n.º 1
0
        public void InitFromDsl(ScriptableData.ISyntaxComponent param)
        {
            string id     = param.GetId();
            int    idType = param.GetIdType();

            if (idType == ScriptableData.ValueData.ID_TOKEN && id.StartsWith("$"))
            {
                if (0 == id.CompareTo("$$"))
                {
                    SetArgument(c_Iterator);
                }
                else
                {
                    SetArgument(int.Parse(id.Substring(1)));
                }
            }
            else if (idType == ScriptableData.ValueData.ID_TOKEN && id.StartsWith("@"))
            {
                if (id.StartsWith("@@"))
                {
                    SetGlobal(id);
                }
                else
                {
                    SetLocal(id);
                }
            }
            else
            {
                CalcInitValue(param);
            }
        }
Exemplo n.º 2
0
        private void CalcInitValue(ScriptableData.ISyntaxComponent param)
        {
            IValue <object> val = ValueManager.Instance.CalcValue(param);

            if (null != val)
            {
                //对初始化即能求得值的函数,不需要再记录函数表达式,直接转换为常量值。
                if (val.HaveValue)
                {
                    SetValue(val.Value);
                }
                else
                {
                    SetProxy(val);
                }
            }
            else
            {
                string id     = param.GetId();
                int    idType = param.GetIdType();
                if (idType == ScriptableData.ValueData.NUM_TOKEN)
                {
                    if (id.IndexOf('.') >= 0)
                    {
                        SetValue(float.Parse(id, System.Globalization.NumberStyles.Float));
                    }
                    else if (id.StartsWith("0x"))
                    {
                        SetValue(uint.Parse(id.Substring(2), System.Globalization.NumberStyles.HexNumber));
                    }
                    else
                    {
                        SetValue(int.Parse(id, System.Globalization.NumberStyles.Integer));
                    }
                }
                else
                {
                    SetValue(id);
                }
            }
        }