コード例 #1
0
        public static StateBuffer run_qstr(YVALUE v, StateBuffer sb)
        {
            var nsb  = sb;
            var item = nsb.m_pvitem;

            item.o       = v.GetString();
            nsb.m_pvitem = item;
            return(nsb);
        }
コード例 #2
0
        public static StateBuffer run_name(YVALUE v, StateBuffer sb)
        {
            var            nsb    = sb;
            var            name   = v.GetString();
            PointervarItem item   = nsb.m_pvitem;
            var            preobj = item.o; //先行ロケーションアイテムの値

            if (preobj == null)             //先行値がないのでNAMEとしてバッファを検索し、なければリテラルとして処理を以降に任せる
            {
                if (nsb.exist(name))
                {
                    item.o = nsb.get(name);
                }
                else
                {
                    var literal = new Literal();
                    literal.s = name;
                    item.o    = literal;
                }
                nsb.m_pvitem = item;

                return(nsb);
            }
            var pretype = preobj.GetType();

            if (pretype == typeof(Literal))
            {
                var literal = (Literal)preobj;
                item         = GetObj(literal.s, name, item);
                nsb.m_pvitem = item;
                return(nsb);
            }

            if (pretype == typeof(Hashtable))
            {
                var ht    = (Hashtable)preobj;
                var nameo = name.ToUpper();
                item.o      = ht[nameo];
                item.getter = () => ht[nameo];
                item.setter_parametertype = null;
                item.setter  = (x) => ht[nameo] = x;
                nsb.m_pvitem = item;
                return(nsb);
            }

            item         = GetObj(preobj, name, item);
            nsb.m_pvitem = item;
            return(nsb);
        }