// list_if: 'if' old_test [list_iter] // comp_if: 'if' old_test [comp_iter] private ComprehensionIf ParseCompIf() { Eat(TokenKind.KeywordIf); var start = GetStart(); Expression expr = ParseOldExpression(); ComprehensionIf ret = new ComprehensionIf(expr); ret.SetLoc(_globalParent, start, GetEnd()); return ret; }
internal comprehension(ComprehensionFor listFor, ComprehensionIf[] listIfs) : this() { _target = Convert(listFor.Left, Store.Instance); _iter = Convert(listFor.List); _ifs = PythonOps.MakeEmptyList(listIfs.Length); foreach (ComprehensionIf listIf in listIfs) _ifs.Add(Convert(listIf.Test)); }
internal static PythonList Convert(ComprehensionIterator[] iters) { PythonList comps = new PythonList(); int start = 1; for (int i = 0; i < iters.Length; i++) { if (i == 0 || iters[i] is ComprehensionIf) if (i == iters.Length - 1) i++; else continue; ComprehensionIf[] ifs = new ComprehensionIf[i - start]; Array.Copy(iters, start, ifs, 0, ifs.Length); comps.Add(new comprehension((ComprehensionFor)iters[start - 1], ifs)); start = i + 1; } return comps; }
public override bool Walk(ComprehensionIf node) { node.Parent = _currentScope; return base.Walk(node); }
// ComprehensionIf public override bool Walk(ComprehensionIf node) { node.Parent = _currentScope; return(base.Walk(node)); }
public void Visit(PyAst.ComprehensionIf node) => throw CreateNotImplementedEx();