private function staticOperand() {
    static $scalar_types = [
      T_STRING_VARNAME,
      T_CLASS_C,
      T_LNUMBER,
      T_DNUMBER,
      T_CONSTANT_ENCAPSED_STRING,
      T_LINE,
      T_FILE,
      T_DIR,
      T_TRAIT_C,
      T_METHOD_C,
      T_FUNC_C,
      T_NS_C,
    ];
    if ($scalar = $this->tryMatchToken($scalar_types)) {
      return $scalar;
    }
    elseif ($this->currentType === '(') {
      $node = new ParenthesisNode();
      $this->mustMatch('(', $node, 'openParen');
      $node->addChild($this->staticScalar(), 'expression');
      $this->mustMatch(')', $node, 'closeParen', TRUE);
      return $node;
    }
    elseif (in_array($this->currentType, self::$namespacePathTypes)) {
      $namespace_path = $this->name();
      if ($this->currentType === T_DOUBLE_COLON) {
        $colon_node = new PartialNode();
        $this->mustMatch(T_DOUBLE_COLON, $colon_node);
        if ($this->currentType === T_CLASS) {
          return $this->classNameScalar($namespace_path, $colon_node);
        }
        else {
          $class_constant = $this->mustMatchToken(T_STRING);
          return $this->classConstant($namespace_path, $colon_node, $class_constant);
        }
      }
      else {
        $node = new ConstantNode();
        $node->addChild($namespace_path, 'constantName');
        return $node;
      }
    }
    elseif ($this->currentType === T_STATIC) {
      $static_node = $this->mustMatchToken(T_STATIC);
      $colon_node = new PartialNode();
      $this->mustMatch(T_DOUBLE_COLON, $colon_node);
      if ($this->currentType === T_CLASS) {
        return $this->classNameScalar($static_node, $colon_node);
      }
      else {
        $class_constant = $this->mustMatchToken(T_STRING);
        return $this->classConstant($static_node, $colon_node, $class_constant);
      }
    }
    elseif ($this->currentType === T_START_HEREDOC) {
      $node = new HeredocNode();
      $this->mustMatch(T_START_HEREDOC, $node);
      if ($this->tryMatch(T_END_HEREDOC, $node)) {
        return $node;
      }
      $this->mustMatch(T_ENCAPSED_AND_WHITESPACE, $node);
      $this->mustMatch(T_END_HEREDOC, $node);
      return $node;
    }
    else {
      return NULL;
    }
  }
private function staticOperand() {
    static $scalar_types = [
      T_STRING_VARNAME,
      T_CLASS_C,
      T_LNUMBER,
      T_DNUMBER,
      T_CONSTANT_ENCAPSED_STRING,
      T_LINE,
      T_FILE,
      T_DIR,
      T_TRAIT_C,
      T_METHOD_C,
      T_FUNC_C,
      T_NS_C,
    ];
    if ($scalar = $this->tryMatchToken($scalar_types)) {
      return $scalar;
    }
    elseif ($this->currentType === '(') {
      $node = new ParenthesisNode();
      $this->mustMatch('(', $node, 'openParen');
      $node->addChild($this->staticScalar(), 'expression');
      $this->mustMatch(')', $node, 'closeParen', TRUE);
      return $node;
    }
    elseif (in_array($this->currentType, self::$namespacePathTypes)) {
      $namespace_path = $this->name();
      if ($this->currentType === T_DOUBLE_COLON) {
        $colon_node = new PartialNode();
        $this->mustMatch(T_DOUBLE_COLON, $colon_node);
        if ($this->currentType === T_CLASS) {
          return $this->classNameScalar($namespace_path, $colon_node);
        }
        else {
          $class_constant = $this->mustMatchToken(T_STRING);
          return $this->classConstant($namespace_path, $colon_node, $class_constant);
        }
      }
      else {
        $node = new ConstantNode();
        $node->addChild($namespace_path, 'constantName');
        return $node;
      }
    }
    elseif ($this->currentType === T_STATIC) {
      $static_node = $this->mustMatchToken(T_STATIC);
      $colon_node = new PartialNode();
      $this->mustMatch(T_DOUBLE_COLON, $colon_node);
      if ($this->currentType === T_CLASS) {
        return $this->classNameScalar($static_node, $colon_node);
      }
      else {
        $class_constant = $this->mustMatchToken(T_STRING);
        return $this->classConstant($static_node, $colon_node, $class_constant);
      }
    }
    elseif ($this->currentType === T_START_HEREDOC) {
      $node = new HeredocNode();
      $this->mustMatch(T_START_HEREDOC, $node);
      if ($this->tryMatch(T_END_HEREDOC, $node)) {
        return $node;
      }
      $this->mustMatch(T_ENCAPSED_AND_WHITESPACE, $node);
      $this->mustMatch(T_END_HEREDOC, $node);
      return $node;
    }
    else {
      return NULL;
    }
  }
private function staticOperand ( ) { static $ scalar_types = [ T_STRING_VARNAME , T_CLASS_C , T_LNUMBER , T_DNUMBER , T_CONSTANT_ENCAPSED_STRING , T_LINE , T_FILE , T_DIR , T_TRAIT_C , T_METHOD_C , T_FUNC_C , T_NS_C , ] ; if ( $ scalar = $ this -> tryMatchToken ( $ scalar_types ) ) { return $ scalar ; } elseif ( $ this -> currentType === '(' ) { $ node = new ParenthesisNode ( ) ; $ this -> mustMatch ( '(' , $ node , 'openParen' ) ; $ node -> addChild ( $ this -> staticScalar ( ) , 'expression' ) ; $ this -> mustMatch ( ')' , $ node , 'closeParen' , TRUE ) ; return $ node ; } elseif ( in_array ( $ this -> currentType , self :: $ namespacePathTypes ) ) { $ namespace_path = $ this -> name ( ) ; if ( $ this -> currentType === T_DOUBLE_COLON ) { $ colon_node = new PartialNode ( ) ; $ this -> mustMatch ( T_DOUBLE_COLON , $ colon_node ) ; if ( $ this -> currentType === T_CLASS ) { return $ this -> classNameScalar ( $ namespace_path , $ colon_node ) ; } else { $ class_constant = $ this -> mustMatchToken ( T_STRING ) ; return $ this -> classConstant ( $ namespace_path , $ colon_node , $ class_constant ) ; } } else { $ node = new ConstantNode ( ) ; $ node -> addChild ( $ namespace_path , 'constantName' ) ; return $ node ; } } elseif ( $ this -> currentType === T_STATIC ) { $ static_node = $ this -> mustMatchToken ( T_STATIC ) ; $ colon_node = new PartialNode ( ) ; $ this -> mustMatch ( T_DOUBLE_COLON , $ colon_node ) ; if ( $ this -> currentType === T_CLASS ) { return $ this -> classNameScalar ( $ static_node , $ colon_node ) ; } else { $ class_constant = $ this -> mustMatchToken ( T_STRING ) ; return $ this -> classConstant ( $ static_node , $ colon_node , $ class_constant ) ; } } elseif ( $ this -> currentType === T_START_HEREDOC ) { $ node = new HeredocNode ( ) ; $ this -> mustMatch ( T_START_HEREDOC , $ node ) ; if ( $ this -> tryMatch ( T_END_HEREDOC , $ node ) ) { return $ node ; } $ this -> mustMatch ( T_ENCAPSED_AND_WHITESPACE , $ node ) ; $ this -> mustMatch ( T_END_HEREDOC , $ node ) ; return $ node ; } else { return NULL ; } }
Parse static operand.
@return Node
Parse static operand .