Irontalk.Compiler.EvaluateKeywordSend C# (CSharp) Method

EvaluateKeywordSend() public method

public EvaluateKeywordSend ( STObject receiver, PerCederberg.Grammatica.Runtime.Node keywordSend, Context context ) : STObject
receiver STObject
keywordSend PerCederberg.Grammatica.Runtime.Node
context Context
return STObject
        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());
        }