public override UstNode Visit(PatternExpressions patternExpressions) { // #* #* ... #* -> #* List <Expression> collection = patternExpressions.Collection .Select(item => (Expression)Visit(item)).ToList(); int index = 0; while (index < collection.Count) { if (collection[index].NodeType == NodeType.PatternMultipleExpressions && index + 1 < collection.Count && collection[index + 1].NodeType == NodeType.PatternMultipleExpressions) { collection.RemoveAt(index); } else { index++; } } var result = new PatternExpressions { Collection = new List <Expression>(collection) }; return(result); }
public UstNode VisitArgs([NotNull] DslParser.ArgsContext context) { List <Expression> expressions = context.arg().Select(arg => (Expression)VisitArg(arg)).ToList(); var span = context.GetTextSpan(); ArgsNode result; if (expressions.All(expr => expr.NodeType != NodeType.PatternMultipleExpressions)) { result = new ArgsNode(expressions, span, null); } else { result = new PatternExpressions() { Collection = expressions, TextSpan = span }; } return(result); }
public virtual void Exit(PatternExpressions patternExpressions) { }
public virtual UstNode Visit(PatternExpressions patternExpressions) { return(VisitChildren(patternExpressions)); }
public virtual void Enter(PatternExpressions patternExpressions) { }