src/parser/expr.js
function() {
    if (
      this.token === this.tok.T_NS_SEPARATOR ||
      this.token === this.tok.T_STRING ||
      this.token === this.tok.T_NAMESPACE
    ) {
      let result = this.read_namespace_name(true);
      if (this.token === this.tok.T_DOUBLE_COLON) {
        result = this.read_static_getter(result);
      }
      return result;
    } else if (this.is("VARIABLE")) {
      return this.read_variable(true, false, false);
    } else {
      this.expect([this.tok.T_STRING, "VARIABLE"]);
    }
  }
function() {
    if (
      this.token === this.tok.T_NS_SEPARATOR ||
      this.token === this.tok.T_STRING ||
      this.token === this.tok.T_NAMESPACE
    ) {
      let result = this.read_namespace_name(true);
      if (this.token === this.tok.T_DOUBLE_COLON) {
        result = this.read_static_getter(result);
      }
      return result;
    } else if (this.is("VARIABLE")) {
      return this.read_variable(true, false, false);
    } else {
      this.expect([this.tok.T_STRING, "VARIABLE"]);
    }
  }
function ( ) { if ( this . token === this . tok . T_NS_SEPARATOR || this . token === this . tok . T_STRING || this . token === this . tok . T_NAMESPACE ) { let result = this . read_namespace_name ( true ) ; if ( this . token === this . tok . T_DOUBLE_COLON ) { result = this . read_static_getter ( result ) ; } return result ; } else if ( this . is ( "VARIABLE" ) ) { return this . read_variable ( true , false , false ) ; } else { this . expect ( [ this . tok . T_STRING , "VARIABLE" ] ) ; } }
Reads a class name
```ebnf
read_new_class_name ::= namespace_name | variable
```
Reads a class name ebnf read_new_class_name :: = namespace_name | variable