예제 #1
0
        public LuryObject Dereference(LuryContext context)
        {
            var reference = (Reference)Value;

            if (reference.Subject == null)
            {
                if (reference.Key == null)
                {
                    return(context[reference.Object]);
                }
                else
                {
                    var obj = context[reference.Object];
                    return(LuryList.GetIndex(obj, reference.Key));
                }
            }
            else
            {
                if (reference.Key == null)
                {
                    return(reference.Subject.GetMember(reference.Object, context));
                }
                else
                {
                    return(LuryList.GetIndex(reference.Subject, reference.Key));
                }
            }
        }
예제 #2
0
        public LuryObject Assign(LuryContext context, LuryObject @object)
        {
            var reference = (Reference)Value;

            if (reference.Subject == null)
            {
                if (reference.Key == null)
                {
                    context[reference.Object] = @object;
                }
                else
                {
                    var obj = context[reference.Object];
                    LuryList.SetIndex(obj, reference.Key, @object);
                }
            }
            else
            {
                if (reference.Key == null)
                {
                    reference.Subject.SetMember(reference.Object, @object);
                }
                else
                {
                    LuryList.SetIndex(reference.Subject, reference.Key, @object);
                }
            }

            return(@object);
        }
예제 #3
0
파일: LuryList.cs 프로젝트: lury-lang/lury
 public LuryListIterator(LuryList value)
     : base(FullName, value, true)
 {
 }