public void VisitProcStatementDoWhile(DMASTProcStatementDoWhile statementDoWhile) { SimplifyExpression(ref statementDoWhile.Conditional); if (statementDoWhile.Body != null) { statementDoWhile.Body.Visit(this); } }
public void ProcessStatementDoWhile(DMASTProcStatementDoWhile statementDoWhile) { string loopLabel = _proc.NewLabelName(); string loopEndLabel = _proc.NewLabelName(); _proc.LoopStart(loopLabel); { ProcessBlockInner(statementDoWhile.Body); _proc.LoopContinue(loopLabel); DMExpression.Emit(_dmObject, _proc, statementDoWhile.Conditional); _proc.JumpIfFalse(loopEndLabel); _proc.LoopJumpToStart(loopLabel); _proc.AddLabel(loopEndLabel); _proc.Break(); } _proc.LoopEnd(); }