nl_tokens: ebnf case_list :: = (( T_CASE expr ) | T_DEFAULT ) ( : | ; ) inner_statement *
pl_tokens: function ( stopToken ) { const result = this . node ( "case" ) ; let test = null ; let body = null ; const items = [ ] ; if ( this . token === this . tok . T_CASE ) { test = this . next ( ) . read_expr ( ) ; } else if ( this . token === this . tok . T_DEFAULT ) { // the defaut entry - no condition this . next ( ) ; } else { this . expect ( [ this . tok . T_CASE , this . tok . T_DEFAULT ] ) ; } this . expect ( [ ":" , ";" ] ) && this . next ( ) ; body = this . node ( "block" ) ; while ( this . token != this . EOF && this . token !== stopToken && this . token !== this . tok . T_CASE && this . token !== this . tok . T_DEFAULT ) { items . push ( this . read_inner_statement ( ) ) ; } return result ( test , items . length > 0 ? body ( null , <mask> ) : null ) ; }