Example #1
0
 private void VisitRepeat(repeat_node stmt)
 {
     RetVal rv = GetConstantValue(stmt.condition);
     VisitStatement(stmt.body);
     VisitExpression(stmt.condition);
 }
        public override void visit(SyntaxTree.repeat_node _repeat_node)
        {
            repeat_node rep = new repeat_node(get_location(_repeat_node));
            context.cycle_stack.push(rep);

            statements_list sl = new statements_list(get_location(_repeat_node.statements));
            convertion_data_and_alghoritms.statement_list_stack_push(sl);

            CheckToEmbeddedStatementCannotBeADeclaration(_repeat_node.statements);

            statement_node st = convert_strong(_repeat_node.statements);

            sl = convertion_data_and_alghoritms.statement_list_stack.pop();
            //if (!(st is statements_list))
            if (sl.statements.Count > 0 || sl.local_variables.Count > 0)
            {
                sl.statements.AddElement(st);
                st = sl;
            }

            rep.body = st;
            expression_node expr = convert_strong(_repeat_node.expr);
            expr = convertion_data_and_alghoritms.convert_type(expr, SystemLibrary.SystemLibrary.bool_type);
            rep.condition = expr;
            context.cycle_stack.pop();
            return_value(rep);
        }
		private void VisitRepeat(repeat_node stmt)
		{
			VisitStatement(stmt.body);
			VisitExpression(stmt.condition);
		}
Example #4
0
 /// <summary>
 /// Конструктор касса.
 /// </summary>
 /// <param name="rn">Узел repeat, внутри которого расположен этот break.</param>
 /// <param name="loc">Расположение узла.</param>
 public repeat_break_node(repeat_node rn, location loc) :
     base(null, loc)
 {
     _rpnd = rn;
 }
Example #5
0
 /// <summary>
 /// Конструктор класса.
 /// </summary>
 /// <param name="rn">Цикл repeat, внутри которог расположен этот continue.</param>
 /// <param name="loc">Расположение узла.</param>
 public repeat_continue_node(repeat_node rn, location loc) :
     base(null, loc)
 {
     _rpnd = rn;
 }
		private statement_node CreateRepeat()
		{
			repeat_node stmt = new repeat_node(CreateStatement(),CreateExpression(),null);
			return stmt;
		}
Example #7
0
        /// <summary>
        /// Конструктор касса.
        /// </summary>
        /// <param name="rn">Узел repeat, внутри которого расположен этот break.</param>
        /// <param name="loc">Расположение узла.</param>
		public repeat_break_node(repeat_node rn,location loc) :
			base(null,loc)
		{
			_rpnd=rn;
		}
Example #8
0
        /// <summary>
        /// Конструктор класса.
        /// </summary>
        /// <param name="rn">Цикл repeat, внутри которог расположен этот continue.</param>
        /// <param name="loc">Расположение узла.</param>
		public repeat_continue_node(repeat_node rn, location loc) :
			base(null,loc)
		{
			_rpnd=rn;
		}