=========================
Simple Declaration
=========================
parser simple() {
  state start {
    bool l;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (variableDeclaration
        (typeRef
         (baseType
          (bool)
         )
        )
        (identifier)
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Declaration (int)
=========================
parser simple() {
  state start {
    int l;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (variableDeclaration
        (typeRef
         (baseType
          (int)
         )
        )
        (identifier)
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Declaration (string)
=========================
parser simple() {
  state start {
    string l;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (variableDeclaration
        (typeRef
         (baseType
          (string)
         )
        )
        (identifier)
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Simple Declaration (string with initial value)
=========================
parser simple() {
  state start {
    string l = "testing";
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (variableDeclaration
        (typeRef
         (baseType
          (string)
         )
        )
        (identifier)
        (assignment)
        (expression
         (simple_expression
          (string_literal)
         )
        )
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

=========================
Non Basic Type Declaration (No Initial Value)
=========================
parser simple() {
  state start {
    header_t header;
    transition accept;
  }
};

---
(p4program
 (declaration
  (parserDeclaration
   (parserType
    (parser)
    (identifier)
   )
   (parserStates
    (parserState
     (state)
     (identifier)
     (parserStatements
      (parserStatement
       (variableDeclaration
        (typeRef
         (type_identifier)
        )
        (identifier)
       )
      )
     )
     (parserTransitionStatement
      (transition)
      (transitionSelectionExpression
       (identifier)
      )
     )
    )
   )
  )
 )
)

