Example #1
0
 /**
  * Try to get next argument. Return false if there are no arguments left before ")"
  * @return null|mixed
  */
 private function getNextArgumentValue()
 {
     $validArgumentTypes = array(Lexer::T_STRING, Lexer::T_NUMBER, Lexer::T_BOOLEAN, Lexer::T_NULL);
     if ($this->lexer->isNextToken(Lexer::T_CLOSE_PARENTHESIS)) {
         return;
     }
     if ($this->lexer->isNextToken(Lexer::T_OPEN_CURLY_BRACE)) {
         return $this->getArrayArgument();
     }
     if ($this->lexer->isNextToken(Lexer::T_EXPANDER_NAME)) {
         return $this->getNextExpanderNode();
     }
     if (!$this->lexer->isNextTokenAny($validArgumentTypes)) {
         $this->unexpectedSyntaxError($this->lexer->lookahead, "string, number, boolean or null argument");
     }
     $tokenType = $this->lexer->lookahead['type'];
     $argument = $this->lexer->lookahead['value'];
     $this->lexer->moveNext();
     if ($tokenType === Lexer::T_NULL) {
         $argument = self::NULL_VALUE;
     }
     return $argument;
 }