public override void visit(assign_tuple asstup) { // тут возможно ошибка более глубокая - в semantic_check_sugared_statement_node(asstup) возможно остаются во вложенных лямбдах другие assign_tuple var sl = new statement_list(); sl.Add(new semantic_check_sugared_statement_node(typeof(assign_tuple), new List <syntax_tree_node> { asstup.vars, asstup.expr }, asstup.source_context)); // Это нужно для проверок на этапе преобразования в семантику var tname = "#temp_var" + UniqueNumStr(); var tt = new var_statement(new ident(tname), asstup.expr); sl.Add(tt); var n = asstup.vars.variables.Count(); for (var i = 0; i < n; i++) { var a = new assign(asstup.vars.variables[i], new dot_node(new ident(tname), new ident("Item" + (i + 1).ToString())), Operators.Assignment, asstup.vars.variables[i].source_context); sl.Add(a); } // Замена 1 оператор на 1 оператор - всё OK ReplaceUsingParent(asstup, sl); visit(asstup.expr); }
public override void visit(assign_tuple asstup) { var sl = new statement_list(); sl.Add(new semantic_check_sugared_statement_node(asstup)); // Это нужно для проверок на этапе преобразования в семантику var tname = "#temp_var" + UniqueNumStr(); var tt = new var_statement(new ident(tname), asstup.expr); sl.Add(tt); var n = asstup.vars.variables.Count(); for (var i = 0; i < n; i++) { var a = new assign(asstup.vars.variables[i], new dot_node(new ident(tname), new ident("Item" + (i + 1).ToString())), Operators.Assignment, asstup.vars.variables[i].source_context); sl.Add(a); } // Замена 1 оператор на 1 оператор - всё OK ReplaceUsingParent(asstup, sl); visit(asstup.expr); }
public virtual void visit(assign_tuple _assign_tuple) { DefaultVisit(_assign_tuple); }
public override void visit(assign_tuple _assign_tuple) { DefaultVisit(_assign_tuple); pre_do_visit(_assign_tuple); visit(assign_tuple.vars); visit(assign_tuple.expr); post_do_visit(_assign_tuple); }
public virtual void post_do_visit(assign_tuple _assign_tuple) { }
public override void visit(assign_tuple at) { UnpackingAssign++; base.visit(at); }
public override void visit(assign_tuple _assign_tuple) { prepare_node(_assign_tuple.vars, "to"); prepare_node(_assign_tuple.expr, "from"); }