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>")); } }
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)); }
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) { }
public override Result Visit(VariadicOpNode node, Context context) { return(Default); }
public override Result Visit(VariadicOpNode node, Context context) { return(Aggregate(node.Children.Select(child => child.Accept(this, context)))); }
public override void PostVisit(VariadicOpNode node) { Contracts.AssertValue(node); _variadicOperators.Add(node); }
public abstract Result Visit(VariadicOpNode node, Context context);
public abstract void PostVisit(VariadicOpNode node);
public virtual bool PreVisit(VariadicOpNode node) { return(true); }