public override void visit(diapason_expr_new diap)
        {
            if (diap.Parent.Parent is pascal_set_constant)
            {
                // вернуть назад к diapason_expr
                var d = new diapason_expr(diap.left, diap.right, diap.source_context);
                ReplaceUsingParent(diap, d);
                visit(d);
                return;
            }

            var el = new expression_list();

            el.Add(diap.left, diap.left.source_context);
            el.Add(diap.right, diap.right.source_context);

            // Проблема в том, что тут тоже надо перепрошивать Parent!
            var mc = method_call.NewP(dot_node.NewP(new ident("PABCSystem", diap.source_context), new ident("InternalRange", diap.source_context), diap.source_context), el, diap.source_context);

            var sug = sugared_addressed_value.NewP(diap, mc, diap.source_context);

            ReplaceUsingParent(diap, sug);
            visit(mc); // обойти заменённое на предмет наличия такого же синтаксического сахара
        }
示例#2
0
 public virtual void visit(diapason_expr_new _diapason_expr_new)
 {
     DefaultVisit(_diapason_expr_new);
 }