=========================
Simple boolean Equality
=========================
parser simple() {
  state start {
    if (true == false) {
    }
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
    (parameters)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (conditionalStatement
        (if)
        (expression
         (simple_expression
          (binaryOperatorExpression
           (binaryEqualOperatorExpression
            (expression
             (simple_expression
              (booleanLiteralExpression
               (true)
              )
             )
            )
            (double_equal)
            (expression
             (simple_expression
              (booleanLiteralExpression
               (false)
              )
             )
            )
           )
          )
         )
        )
        (statement
         (blockStatement)
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Integer Equality
=========================
parser simple() {
  state start {
    if (1 == 2) {
    }
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
    (parameters)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (conditionalStatement
        (if)
        (expression
         (simple_expression
          (binaryOperatorExpression
           (binaryEqualOperatorExpression
            (expression
             (simple_expression
              (integer)
             )
            )
            (double_equal)
            (expression
             (simple_expression
              (integer)
             )
            )
           )
          )
         )
        )
        (statement
         (blockStatement)
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Array Access
=========================
parser simple() {
  state start {
    undeclared_array[5];
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
    (parameters)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (expressionStatement
        (expression
         (simple_expression
          (arrayAccessExpression
           (expression
            (simple_expression
             (identifier)
            )
           )
           (open_bracket)
           (expression
            (simple_expression
             (integer)
            )
           )
           (close_bracket)
          )
         )
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Struct Access
=========================
parser simple() {
  state start {
    abc.xyz;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
    (parameters)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (expressionStatement
        (expression
         (simple_expression
          (fieldAccessExpression
           (expression
            (simple_expression
             (identifier)
            )
           )
           (field_access)
           (identifier)
          )
         )
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Nested Struct Access
=========================
parser simple() {
  state start {
    abc.cde.xyz;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
    (parameters)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (expressionStatement
        (expression
         (simple_expression
          (fieldAccessExpression
           (expression
            (simple_expression
             (fieldAccessExpression
              (expression
               (simple_expression
                (identifier)
               )
              )
              (field_access)
              (identifier)
             )
            )
           )
           (field_access)
           (identifier)
          )
         )
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)
