Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public virtual void Exit(PatternExpressions patternExpressions)
 {
 }
Ejemplo n.º 4
0
 public virtual UstNode Visit(PatternExpressions patternExpressions)
 {
     return(VisitChildren(patternExpressions));
 }
Ejemplo n.º 5
0
 public virtual void Enter(PatternExpressions patternExpressions)
 {
 }