nl_tokens: reads a simple inner statement ebnf inner_statement :: = { inner_statements } | token
pl_tokens: function ( ) { switch ( this . token ) { case this . tok . T_FUNCTION : return this . read_function ( false , false ) ; // optional flags <mask> this . tok . T_ABSTRACT : case this . tok . T_FINAL : case this . tok . T_CLASS : return this . read_class ( ) ; case this . tok . T_INTERFACE : return this . read_interface ( ) ; case this . tok . T_TRAIT : return this . read_trait ( ) ; case this . tok . T_HALT_COMPILER : { this . raiseError ( "__HALT_COMPILER() can only be used from the outermost scope" ) ; // fallback : returns a node but does not stop the parsing let node = this . node ( "halt" ) ; this . next ( ) . expect ( "(" ) && this . next ( ) ; this . expect ( ")" ) && this . next ( ) ; node = node ( this . lexer . _input . substring ( this . lexer . offset ) ) ; this . expect ( ";" ) && this . next ( ) ; return node ; } default : return this . read_statement ( ) ; } }