=========================
Simple If Statement (No Else)
=========================
parser simple() {
  state start {
    if (true) {
    };
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (conditionalStatement
        (if)
        (expression
         (true)
        )
        (statement
         (blockStatement)
        )
       )
      )
      (semicolon)
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
     (semicolon)
    )
   )
  )
 )
 (semicolon)
)

=========================
Simple If Statement (Else)
=========================
parser simple() {
  state start {
    if (true) {
    } else {
    };
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (conditionalStatement
        (if)
        (expression
         (true)
        )
        (statement
         (blockStatement)
        )
        (else)
        (statement
         (blockStatement)
        )
       )
      )
      (semicolon)
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
     (semicolon)
    )
   )
  )
 )
 (semicolon)
)

=========================
Simple If Statement (With Body)
=========================
parser simple() {
  state start {
    if (true) {
      true;
    } else {
      false;
    };
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (conditionalStatement
  (if)
        (expression
         (true)
        )
        (statement
         (blockStatement
          (statements
           (statement
            (expressionStatement
             (expression
              (true)
             )
            )
           )
           (semicolon)
          )
         )
        )
        (else)
        (statement
         (blockStatement
          (statements
           (statement
            (expressionStatement
             (expression
              (false)
             )
            )
           )
           (semicolon)
          )
         )
        )
       )
      )
      (semicolon)
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
     (semicolon)
    )
   )
  )
 )
 (semicolon)
)

