Send() public method

public Send ( STSymbol message ) : STObject
message STSymbol
return STObject
Beispiel #1
0
 public STObject EvaluateUnarySend(STObject receiver, Node unarySend, Context context)
 {
     receiver = receiver.Dereference();
     return receiver.Send(STSymbol.Get((unarySend.GetChildAt(0) as Token).Image));
 }
Beispiel #2
0
        public STObject EvaluateBinarySend(STObject receiver, Node binarySend, Context context)
        {
            STObject other = EvaluateReceiver(binarySend.GetChildAt(1), context).Dereference();
            receiver = receiver.Dereference();

            for (int i = 2, max = binarySend.GetChildCount(); i < max; ++i)
                other = EvaluateUnarySend(other, binarySend.GetChildAt(i), context);
            return receiver.Send(STSymbol.Get((binarySend.GetChildAt(0) as Token).Image), other);
        }
Beispiel #3
0
        public STObject EvaluateKeywordSend(STObject receiver, Node keywordSend, Context context)
        {
            receiver = receiver.Dereference();
            // keyword_send		= ( KEYWORD receiver simple_send* )+;
            string keyword = null;
            STObject parm = null;
            StringBuilder selectorBuffer = new StringBuilder();
            List<STObject> parms = new List<STObject>();

            for (int i = 0, max = keywordSend.GetChildCount(); i < max; ++i) {
                var item = keywordSend.GetChildAt(i);
                if (item.Name == "KEYWORD") {
                    if (keyword != null) {
                        selectorBuffer.Append(keyword);
                        parms.Add (parm);
                    }

                    keyword = (item as Token).Image;
                    parm = EvaluateReceiver(keywordSend.GetChildAt(++i), context).Dereference();
                } else if (item.Name == "simple_send") {
                    parm = EvaluateSimpleSend(parm, item, context);
                }
            }

            selectorBuffer.Append(keyword);
            parms.Add (parm);
            STSymbol selector = STSymbol.Get(selectorBuffer.ToString());

            return receiver.Send(selector, parms.ToArray());
        }
 public STObject New()
 {
     var obj = new STObject();
     obj.Class = this;
     obj.Send(STSymbol.Get("initialize"));
     return obj;
 }