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); }