// or_test: and_test ('or' and_test)* private Expression ParseOrTest() { Expression ret = ParseAndTest(); while (MaybeEat(TokenKind.KeywordOr)) { var start = ret.StartIndex; ret = new OrExpression(ret, ParseAndTest()); ret.SetLoc(_globalParent, start, GetEnd()); } return ret; }
internal BoolOp(OrExpression or) : this() { _values = PythonOps.MakeListNoCopy(Convert(or.Left), Convert(or.Right)); _op = Or.Instance; }
// or_test: and_test ('or' and_test)* private Expression ParseOrTest() { Expression ret = ParseAndTest(); while (MaybeEat(TokenKind.KeywordOr)) { SourceLocation start = ret.Start; ret = new OrExpression(ret, ParseAndTest()); ret.SetLoc(start, GetEnd()); } return ret; }
// OrExpression public override bool Walk(OrExpression node) { node.Parent = _currentScope; return(base.Walk(node)); }
public override bool Walk(OrExpression node) { node.Parent = _currentScope; return base.Walk(node); }
public override bool Walk(OrExpression node) { CommonWalk(node); return true; }
public override void PostWalk(OrExpression node) { string right = Content(); string left = Content(); Content("{0} || {1}", left, right); CommonPostWalk(node, true); }
public void PostWalk(OrExpression node) { PostProcess(node); }
// OrExpression public bool Walk(OrExpression node) { return Process(node); }
internal override AstExpression Revert() { if (op == And.Instance) { AndExpression ae = new AndExpression( expr.Revert(values[0]), expr.Revert(values[1])); return ae; } else if (op == Or.Instance) { OrExpression oe = new OrExpression( expr.Revert(values[0]), expr.Revert(values[1])); return oe; } throw PythonOps.TypeError("Unexpected boolean operator: {0}", op); }
public static string Format(OrExpression node) { return(Format(node.Left) + " Or " + Format(node.Right)); }
public virtual void PostWalk(OrExpression node) { }
// OrExpression public virtual bool Walk(OrExpression node) { return true; }
public string Visit(PyAst.OrExpression node) => $"({Visit(node.Left)} or {Visit(node.Right)})";