Пример #1
0
        public void VisitProcStatementWhile(DMASTProcStatementWhile statementWhile)
        {
            SimplifyExpression(ref statementWhile.Conditional);

            if (statementWhile.Body != null)
            {
                statementWhile.Body.Visit(this);
            }
        }
Пример #2
0
        public void ProcessStatementWhile(DMASTProcStatementWhile statementWhile)
        {
            string loopLabel = _proc.NewLabelName();

            _proc.LoopStart(loopLabel);
            {
                DMExpression.Emit(_dmObject, _proc, statementWhile.Conditional);
                _proc.BreakIfFalse();

                _proc.StartScope();
                {
                    ProcessBlockInner(statementWhile.Body);

                    _proc.LoopContinue(loopLabel);
                    _proc.LoopJumpToStart(loopLabel);
                }
                _proc.EndScope();
            }
            _proc.LoopEnd();
        }