<?xml version="1.0"?>
<clause number="15.8.2" title="The do statement">
  <paragraph>The do statement conditionally executes an embedded statement one or more times. <grammar_production><name><non_terminal where="15.8.2">do-statement</non_terminal></name> : <rhs><keyword>do</keyword><non_terminal where="15">embedded-statement</non_terminal><keyword>while</keyword><terminal>(</terminal><non_terminal where="15.7.1">boolean-expression</non_terminal><terminal>)</terminal><terminal>;</terminal></rhs></grammar_production></paragraph>
  <paragraph>A do statement is executed as follows: <list><list_item> Control is transferred to the embedded statement. </list_item><list_item> When and if control reaches the end point of the embedded statement (possibly from execution of a continue statement), the <non_terminal where="15.7.1">boolean-expression</non_terminal> (<hyperlink>14.16</hyperlink>) is evaluated. If the boolean expression yields true, control is transferred to the beginning of the do statement. Otherwise, control is transferred to the end point of the do statement. </list_item></list></paragraph>
  <paragraph>Within the embedded statement of a do statement, a break statement (<hyperlink>15.9.1</hyperlink>) may be used to transfer control to the end point of the do statement (thus ending iteration of the embedded statement), and a continue statement (<hyperlink>15.9.2</hyperlink>) may be used to transfer control to the end point of the embedded statement (thus performing another iteration of the do statement). </paragraph>
  <paragraph>The embedded statement of a do statement is reachable if the do statement is reachable. </paragraph>
  <paragraph>The end point of a do statement is reachable if at least one of the following is true: <list><list_item> The do statement contains a reachable break statement that exits the do statement. </list_item><list_item> The end point of the embedded statement is reachable and the boolean expression does not have the constant value true. </list_item></list></paragraph>
</clause>
