public static IEnumerable<ParameterNode> Parse(string parameters) { var matches = regex.Matches(parameters); foreach (Match match in matches) { if (!match.Success) { continue; } var optional = match.Groups["optional"].Value == ReservedKeywords.Optional; var defaultValue = match.Groups["default"].Value; var paramArray = match.Groups["paramarray"].Value == ReservedKeywords.ParamArray; var by = match.Groups["by"].Value; var passedBy = by == ReservedKeywords.ByRef ? ParameterType.ByRef : by == ReservedKeywords.ByVal ? ParameterType.ByVal : ParameterType.Default; var name = match.Groups["identifier"].Value; var type = match.Groups["type"].Value; var identifier = new IdentifierNode(name, paramArray ? "()" : null, null, type); yield return new ParameterNode(identifier, passedBy, paramArray, optional, defaultValue); } }
public ParameterNode(IdentifierNode identifier, ParameterType passedBy, bool isParamArray, bool isOptional, string defaultValue) : base(SyntaxTreeNodeType.ParameterNode, identifier.NodeName) { Nodes.Add(identifier); IsOptional = isOptional; DefaultValue = defaultValue; IsParamArray = isParamArray; PassedBy = passedBy; }