public MethodNode(DeltinScriptParser.MethodContext context, BuildAstVisitor visitor) : base( new Location(visitor.file, DocRange.GetRange(context)), DocRange.GetRange(context.PART().Symbol), DocRange.GetRange(context.LEFT_PAREN().Symbol, context.RIGHT_PAREN().Symbol) ) { Name = context.PART().GetText(); if (context.call_parameters() != null) { Parameters = new Node[context.call_parameters().expr().Length]; for (int i = 0; i < Parameters.Length; i++) { Parameters[i] = visitor.Visit(context.call_parameters().expr()[i]); } } else if (context.picky_parameters() != null) { PickyParameters = new PickyParameter[context.picky_parameters().picky_parameter().Length]; for (int i = 0; i < PickyParameters.Length; i++) { PickyParameters[i] = new PickyParameter(context.picky_parameters().picky_parameter(i), visitor); } } else { Parameters = new Node[0]; } }
// Method() public override Node VisitMethod(DeltinScriptParser.MethodContext context) { string methodName = context.PART().GetText(); Node[] parameters = new Node[context.call_parameters()?.expr().Length ?? 0]; for (int i = 0; i < parameters.Length; i++) { parameters[i] = Visit(context.call_parameters().expr()[i]); } Range nameRange = Range.GetRange(context.PART().Symbol); Range parameterRange = Range.GetRange(context.LEFT_PAREN().Symbol, context.RIGHT_PAREN().Symbol); return(new MethodNode(methodName, parameters, nameRange, parameterRange, new Location(file, Range.GetRange(context)))); }