namespace tlang { internal class LogicalOrNode : Node { public Node Left {get;set;} public Node Right {get;set;} public LogicalOrNode(Node left, Node right) { Left = left; Right = right; } public override TObject Execute(IScopeEnvironment nodeEnv) { var l = Left.Execute(nodeEnv); var r = Right.Execute(nodeEnv); var ldict = l as TDictionary; if(ldict != null) { var lor=ldict["lor"] as ICallable; if(lor != null) { return lor.Call(r); } } return new TNumber(l.AsBoolean || r.AsBoolean ? 1 : 0); } } }