Beispiel #1
0
 public virtual void VisitBoolValNode(BoolValNode b)
 {
 }
 public override void VisitBoolValNode(BoolValNode b)
 {
     Text += b.Val.ToString().ToLower();
 }
Beispiel #3
0
 public virtual void Visit(BoolValNode node)
 {
 }
Beispiel #4
0
 public override void Visit(BoolValNode node)
 {
     OnEnter(node);
     base.Visit(node);
     OnExit(node);
 }
        public override void Visit(BinExprNode binExpr)
        {
            double?number1 = null, number2 = null;
            bool   isChanged = false;

            if (binExpr.Left is IntNumNode || binExpr.Left is FloatNumNode)
            {
                if (binExpr.Left is IntNumNode i)
                {
                    number1 = i.Num;
                }
                if (binExpr.Left is FloatNumNode f)
                {
                    number1 = f.Num;
                }
            }
            if (binExpr.Right is IntNumNode || binExpr.Right is FloatNumNode)
            {
                if (binExpr.Right is IntNumNode i)
                {
                    number2 = i.Num;
                }
                if (binExpr.Right is FloatNumNode f)
                {
                    number2 = f.Num;
                }
            }
            if (number1 != null && number2 != null)
            {
                BoolValNode newExpr = null;
                if (binExpr.OpType == BinOpType.Equal)
                {
                    newExpr = new BoolValNode(number1 == number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (binExpr.OpType == BinOpType.NotEqual)
                {
                    newExpr = new BoolValNode(number1 != number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (binExpr.OpType == BinOpType.Less)
                {
                    newExpr = new BoolValNode(number1 < number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (binExpr.OpType == BinOpType.Greater)
                {
                    newExpr = new BoolValNode(number1 > number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (binExpr.OpType == BinOpType.LessOrEqual)
                {
                    newExpr = new BoolValNode(number1 <= number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (binExpr.OpType == BinOpType.GreaterOrEqual)
                {
                    newExpr = new BoolValNode(number1 >= number2);
                    ReplaceExpr(binExpr, newExpr);
                }

                if (newExpr != null)
                {
                    isChanged = true;
                    base.Visit(newExpr);
                }
            }
            if (!isChanged)
            {
                base.Visit(binExpr);
            }
        }
Beispiel #6
0
 public override void Visit(BoolValNode node)
 {
     ProgramBuilder.Append(node.Val.ToString().ToLower());
 }