Example #1
0
        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);
        }
Example #3
0
 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 virtual void visit(assign_tuple _assign_tuple)
		{
			DefaultVisit(_assign_tuple);
		}
Example #8
0
 public override void visit(assign_tuple _assign_tuple)
 {
     prepare_node(_assign_tuple.vars, "to");
     prepare_node(_assign_tuple.expr, "from");
 }