Control Flow
Conditional Statements
Conditional statements are declared as if {condition} { ... } else if {condition} { ... } else { ... }.
Conditional statements can be nested.
    let a: u8 = 1u8;
    
    if a == 1u8 {
        a += 1u8;
    } else if a == 2u8 {
        a += 2u8;
    } else {
        a += 3u8;
    }
Leo also supports ternary expressions.  Ternary expressions are declared as {condition} ? {then} : {else}, and can be nested.
let a: u8 = 1u8;    
a = (a == 1u8) ? a + 1u8 : ((a == 2u8) ? a + 2u8 : a + 3u8);
Return Statements
Return statements are declared as return {expression};.
    let a: u8 = 1u8;
    
    if a == 1u8 {
        return a + 1u8;
    } else if a == 2u8 {
        return a + 2u8;
    } else {
        return a + 3u8;
    }
For Loops
For loops are declared as for {variable: type} in {lower bound}..{upper bound}. The loop bounds must be integer constants of the same type. Furthermore, the lower bound must be
less than the upper bound. Nested loops are supported.
  let count: u32 = 0u32;
  for i: u32 in 0u32..5u32 {
    count += 1u32;
  }
  return count; // returns 5u32