public virtual void visit(bracket_expr _bracket_expr)
 {
     DefaultVisit(_bracket_expr);
 }
 public override void visit(bracket_expr _bracket_expr)
 {
     _bracket_expr.expr.visit(this);
 }
		public virtual void post_do_visit(bracket_expr _bracket_expr)
		{
		}
		public override void visit(bracket_expr _bracket_expr)
		{
			DefaultVisit(_bracket_expr);
			pre_do_visit(_bracket_expr);
			visit(bracket_expr.expr);
			post_do_visit(_bracket_expr);
		}
Beispiel #5
0
 public virtual void visit(bracket_expr _bracket_expr)
 {
 }
        public override void Exit(syntax_tree_node st)
        {
            bracket_expr bre = st as bracket_expr;

            if (bre != null)
            {
                if (bre.expr is int32_const)
                {
                    Replace(st, bre.expr);
                }
            }

            bin_expr vs = st as bin_expr;

            if (vs != null)
            {
                if (vs.left is int32_const && vs.right is int32_const)
                {
                    var a  = vs.left as int32_const;
                    var b  = vs.right as int32_const;
                    var op = vs.operation_type;

                    syntax_tree_node res;
                    switch (op)
                    {
                    case Operators.Plus:
                        res = new int32_const(a.val + b.val);
                        break;

                    case Operators.Minus:
                        res = new int32_const(a.val - b.val);
                        break;

                    case Operators.Multiplication:
                        res = new int32_const(a.val * b.val);
                        break;

                    case Operators.Division:
                        res = new double_const((double)a.val / b.val);
                        break;

                    case Operators.Greater:
                        res = new bool_const(a.val > b.val);
                        break;

                    case Operators.Less:
                        res = new bool_const(a.val < b.val);
                        break;

                    case Operators.GreaterEqual:
                        res = new bool_const(a.val >= b.val);
                        break;

                    case Operators.LessEqual:
                        res = new bool_const(a.val <= b.val);
                        break;

                    default:
                        res = vs;
                        break;
                    }

                    Replace(vs, res);
                }
                if (vs.left is int32_const && vs.right is double_const || vs.right is int32_const && vs.left is double_const || vs.left is double_const && vs.right is double_const)
                {
                    double x, y;
                    if (vs.left is int32_const)
                    {
                        x = (vs.left as int32_const).val;
                    }
                    else
                    {
                        x = (vs.left as double_const).val;
                    }
                    if (vs.right is int32_const)
                    {
                        y = (vs.right as int32_const).val;
                    }
                    else
                    {
                        y = (vs.right as double_const).val;
                    }

                    var op = vs.operation_type;

                    syntax_tree_node res;
                    switch (op)
                    {
                    case Operators.Plus:
                        res = new double_const(x + y);
                        break;

                    case Operators.Minus:
                        res = new double_const(x - y);
                        break;

                    case Operators.Multiplication:
                        res = new double_const(x * y);
                        break;

                    case Operators.Division:
                        res = new double_const(x / y);
                        break;

                    case Operators.Greater:
                        res = new bool_const(x > y);
                        break;

                    case Operators.Less:
                        res = new bool_const(x < y);
                        break;

                    case Operators.GreaterEqual:
                        res = new bool_const(x >= y);
                        break;

                    case Operators.LessEqual:
                        res = new bool_const(x <= y);
                        break;

                    default:
                        res = vs;
                        break;
                    }

                    Replace(vs, res);
                }
            }

            base.Exit(st); // это обязательно!
        }
Beispiel #7
0
 public override void visit(bracket_expr _bracket_expr)
 {
     AddPossibleComments(_bracket_expr, true, true);
     _bracket_expr.expr.visit(this);
 }
		public virtual void visit(bracket_expr _bracket_expr)
		{
		}
		public virtual void visit(bracket_expr _bracket_expr)
		{
			DefaultVisit(_bracket_expr);
		}
Beispiel #10
0
 public override void visit(bracket_expr node)
 {
     prepare_node(node.expr, "expr");
 }
Beispiel #11
0
		public override void visit(bracket_expr _bracket_expr)
		{
			executer.visit(_bracket_expr);
			if (_bracket_expr.expr != null)
				this.visit((dynamic)_bracket_expr.expr);
			if (_bracket_expr.attributes != null)
				this.visit((dynamic)_bracket_expr.attributes);
		}