Exemple #1
0
        public override LazyList <string> Visit(VariadicOpNode node, Precedence parentPrecedence)
        {
            Contracts.AssertValue(node);
            Contracts.AssertNonEmpty(node.Children);

            switch (node.Op)
            {
            case VariadicOp.Chain:
                var op     = SpacedOper(TexlLexer.LocalizedInstance.LocalizedPunctuatorChainingSeparator);
                var count  = node.Count;
                var result = LazyList <string> .Empty;

                for (int i = 0; i < count; i++)
                {
                    result = result
                             .With(node.Children[i].Accept(this, Precedence.None));
                    if (i != count - 1)
                    {
                        result = result.With(SpacedOper(TexlLexer.LocalizedInstance.LocalizedPunctuatorChainingSeparator));
                    }
                }
                return(result);

            default:
                Contracts.Assert(false);
                return(LazyList <string> .Of("<error>"));
            }
        }
Exemple #2
0
        public override LazyList <string> Visit(VariadicOpNode node, Context context)
        {
            Contracts.AssertValue(node);
            Contracts.AssertNonEmpty(node.Children);

            if (node.Op == VariadicOp.Chain)
            {
                var result = LazyList <string> .Empty;
                foreach (var source in node.SourceList.Sources.Where(source => !(source is WhitespaceSource)))
                {
                    var nodeSource  = source as NodeSource;
                    var tokenSource = source as TokenSource;
                    if (nodeSource != null)
                    {
                        result = result
                                 .With(nodeSource.Node.Accept(this, context));
                    }
                    else if (tokenSource != null && tokenSource.Token.Kind == TokKind.Semicolon)
                    {
                        result = result
                                 .With(GetScriptForToken(tokenSource.Token))
                                 .With(GetNewLine(context.IndentDepth + 1));
                    }
                    else
                    {
                        result = result.With(source.Tokens.Select(GetScriptForToken));
                    }
                }
                return(result);
            }

            return(Basic(node, context));
        }
Exemple #3
0
        public override bool PreVisit(VariadicOpNode node)
        {
            Contracts.AssertValue(node);
            Contracts.Assert(node.Children.Length > 0);

            int numTokens = CollectionUtils.Size(node.OpTokens);

            Contracts.Assert(node.Children.Length == numTokens + 1 || node.Children.Length == numTokens);

            for (int i = 0; i < numTokens; i++)
            {
                Token token = node.OpTokens[i];

                // Cursor position is inside ith child.

                if (_cursorPosition <= token.Span.Min)
                {
                    node.Children[i].Accept(this);
                    return(false);
                }

                // Cursor is on one of the operator tokens

                if (_cursorPosition <= token.Span.Lim)
                {
                    _result = node;
                    return(false);
                }
            }

            // If we got here the cursor should be in the last child.
            node.Children[node.Children.Length - 1].Accept(this);

            return(false);
        }
        public override bool PreVisit(VariadicOpNode node)
        {
            if (node.Op == VariadicOp.Chain)
            {
                _usesChains = true;
                return(false);
            }

            return(true);
        }
 public override void PostVisit(VariadicOpNode node)
 {
 }
Exemple #6
0
 public override Result Visit(VariadicOpNode node, Context context)
 {
     return(Default);
 }
Exemple #7
0
 public override Result Visit(VariadicOpNode node, Context context)
 {
     return(Aggregate(node.Children.Select(child => child.Accept(this, context))));
 }
Exemple #8
0
 public override void PostVisit(VariadicOpNode node)
 {
     Contracts.AssertValue(node);
     _variadicOperators.Add(node);
 }
 public abstract Result Visit(VariadicOpNode node, Context context);
Exemple #10
0
 public abstract void PostVisit(VariadicOpNode node);
Exemple #11
0
 public virtual bool PreVisit(VariadicOpNode node)
 {
     return(true);
 }