Exemplo n.º 1
0
 /// <summary>
 /// Создать цикл for
 /// </summary>
 /// <param name="varName">Имя переменной цикла</param>
 /// <param name="initValue">Начальное значение переменной цикла</param>
 /// <param name="finishValue">Конечное значение переменной цикла</param>
 /// <param name="body">Тело цикла</param>
 /// <param name="type">Тип цикла(to / downto)</param>
 /// <returns></returns>
 public static SyntaxTree.for_node CreateFor(string varName, expression initValue, expression finishValue, statement body, for_cycle_type type)
 {
     SyntaxTree.for_node res = new SyntaxTree.for_node();
     res.loop_variable = new ident(varName);
     res.initial_value = initValue;
     res.finish_value  = finishValue;
     res.statements    = body;
     res.cycle_type    = type;
     return(res);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Создать цикл for
 /// </summary>
 /// <param name="varName">Имя переменной цикла</param>
 /// <param name="initValue">Начальное значение переменной цикла</param>
 /// <param name="finishValue">Конечное значение переменной цикла</param>
 /// <param name="body">Тело цикла</param>
 /// <param name="type">Тип цикла(to / downto)</param>
 /// <returns></returns>
 public SyntaxTree.for_node CreateFor(string varName, expression initValue, expression finishValue, statement body, for_cycle_type type)
 {
     SyntaxTree.for_node res = new SyntaxTree.for_node();
     res.loop_variable = new ident(varName);
     res.initial_value = initValue;
     res.finish_value = finishValue;
     res.statements = body;
     res.cycle_type = type;
     return res;
 }
Exemplo n.º 3
0
        public override void visit(SyntaxTree.for_node _for_node)
        {
            if (!_for_node.create_loop_variable && (_for_node.type_name == null))
            {
                throw new OpenMPException("Счетчик цикла должен быть обьявлен в заголовке цикла", _for_node.source_context);
            }

            bool _isForNode = isForNode;

            isForNode = false;

            isLoopVariable = true;
            ProcessNode(_for_node.loop_variable);
            isLoopVariable = false;
            ProcessNode(_for_node.initial_value);
            ProcessNode(_for_node.increment_value);
            ProcessNode(_for_node.finish_value);
            ProcessNode(_for_node.type_name);
            ProcessNode(_for_node.statements);

            isForNode = _isForNode;
        }