コード例 #1
0
        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));
        }
コード例 #2
0
        public SortedSet <string> Visit(NumRelation relation)
        {
            var vars = Run(relation.Left);

            vars.UnionWith(Run(relation.Right));
            return(vars);
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
        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"));
        }
コード例 #5
0
 public T Visit(NumRelation relation)
 {
     relation.Left.Accept(this);
     relation.Right.Accept(this);
     return(default(T));
 }