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); }
/// <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; }
/// <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; }
/// <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; }
/// <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; }