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); // обойти заменённое на предмет наличия такого же синтаксического сахара }
public virtual void visit(diapason_expr_new _diapason_expr_new) { DefaultVisit(_diapason_expr_new); }