whole_func_string: function() {
      const result = this.node("switch");
      this.expect(this.tok.T_SWITCH) && this.next();
      this.expect("(") && this.next();
      const test = this.read_expr();
      this.expect(")") && this.next();
      const shortForm = this.token === ":";
      const body = this.read_switch_case_list();
      return result(test, body, shortForm);
    }
func_code_string: function() {
      const result = this.node("switch");
      this.expect(this.tok.T_SWITCH) && this.next();
      this.expect("(") && this.next();
      const test = this.read_expr();
      this.expect(")") && this.next();
      const shortForm = this.token === ":";
      const body = this.read_switch_case_list();
      return result(test, body, shortForm);
    }
func_documentation_string: Reads a switch statement
  ```ebnf
  switch ::= T_SWITCH '(' expr ')' switch_case_list
  ```
  @return {Switch}
  @see http://php.net/manual/en/control-structures.switch.php