Example #1
0
        public CallNode Build()
        {
            var callNode = OperatorNodeFactory.CreateCall(_block);

            IList <OperatorNode> parameters = new List <OperatorNode>();

            bool isParameterCompleted = false;

            while (_reader.HasNext())
            {
                var node = new AstNodeBuilder(_reader, _block, _interceptChars).Build();

                if (node != null)
                {
                    parameters.Add(node);
                }

                if (_reader.Current().OperatorType == OperatorType.RightParenthesis)
                {
                    isParameterCompleted = true;

                    break;
                }
            }

            if (!isParameterCompleted)
            {
                throwError("");
            }

            callNode.Operands.AddRange(parameters);

            return(callNode);
        }