public Expression Visit(NumRelation relation) { var left = (NumExpression)relation.Left.Accept(this); var right = (NumExpression)relation.Right.Accept(this); return(new NumRelation(relation.Relation, left, right)); }
public SortedSet <string> Visit(NumRelation relation) { var vars = Run(relation.Left); vars.UnionWith(Run(relation.Right)); return(vars); }
public async Task <Value> Visit(NumRelation relation) { Value[] results = await Task.WhenAll <Value>(relation.Left.Accept(this), relation.Right.Accept(this)); switch (relation.Relation) { case NumRels.GT: return(await MakeBool((results[0] as NumValue) > (results[1] as NumValue))); case NumRels.LT: return(await MakeBool((results[0] as NumValue) < (results[1] as NumValue))); case NumRels.EQ: return(await MakeBool((results[0] as NumValue) == (results[1] as NumValue))); case NumRels.NEQ: return(await MakeBool((results[0] as NumValue) != (results[1] as NumValue))); case NumRels.GTE: return(await MakeBool((results[0] as NumValue) >= (results[1] as NumValue))); case NumRels.LTE: return(await MakeBool((results[0] as NumValue) <= (results[1] as NumValue))); default: throw new ArgumentException(); } }
public void TestNumVariables() { NumExpression numTest = n; LogicExpression test = new NumRelation(NumRels.EQ, n, m) | y; VariableLister <bool> lister = new VariableLister <bool>(); test.Accept(lister); Assert.AreEqual(3, lister.Variables.Count(), "There should be three variables"); Assert.IsTrue(lister.Variables.Contains("y")); Assert.IsTrue(lister.Variables.Contains("n")); Assert.IsTrue(lister.Variables.Contains("m")); test = (new NumThe("n", n == two)) == two; lister = new VariableLister <bool>(); test.Accept(lister); Assert.AreEqual(1, lister.Variables.Count); Assert.IsTrue(lister.Variables.Contains("n")); }
public T Visit(NumRelation relation) { relation.Left.Accept(this); relation.Right.Accept(this); return(default(T)); }