/// <summary> /// Visit a parse tree produced by <see cref="CodeQueryParser.methodCall" />. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)" /> /// on <paramref name="context" />. /// </para> /// </summary> public override Object VisitMethodCall(CodeQueryParser.MethodCallContext context) { var parameters = context.methodCallParameter(); var methodCallParameters = parameters.Select((parameter, index) => { var param = parameter.Accept(this); if (param is ActualParameterElement) { return(param); } if (param is ConstantElement) { return(TreeFactory.CreateActualParameter((ConstantElement)param, index)); } return(param); }); var methodCall = new { Name = context.MethodCallName.Text, Parameters = methodCallParameters.OfType <ActualParameterElement>() .ToArray() }; return(TreeFactory.CreateMethodCall(methodCall.Name, methodCall.Parameters)); }
/// <summary> /// Visit a parse tree produced by <see cref="CodeQueryParser.MethodCallParameterValueWithConstant" />. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)" /> /// on <paramref name="context" />. /// </para> /// </summary> public override Object VisitMethodCallParameterValueWithConstant(CodeQueryParser.MethodCallParameterValueWithConstantContext context) { var value = context.ActualParameterValue.Accept(this) as ConstantElement; if (context.ID() != null) { var parameterName = context.ParameterName.Text; return(TreeFactory.CreateActualParameter(value, parameterName)); } return(value); }