コード例 #1
0
 /**
  * Parses a trigger function macro constant in the trigger expression and
  * moves a current position ($this->pos) on a last symbol of the macro
  *
  * @return bool returns true if parsed successfully, false otherwise
  */
 private function parseFunctionMacro()
 {
     $startPos = $this->pos;
     if ($this->function_macro_parser->parse($this->expression, $this->pos) == CParser::PARSE_FAIL) {
         return false;
     }
     if ($this->function_parser->parse($this->function_macro_parser->getFunction()) == CParser::PARSE_FAIL) {
         return false;
     }
     $this->pos += $this->function_macro_parser->getLength() - 1;
     $function_param_list = [];
     for ($n = 0; $n < $this->function_parser->getParamsNum(); $n++) {
         $function_param_list[] = $this->function_parser->getParam($n);
     }
     $this->result->addToken(CTriggerExpressionParserResult::TOKEN_TYPE_FUNCTION_MACRO, $this->function_macro_parser->getMatch(), $startPos, $this->function_macro_parser->getLength(), ['host' => $this->function_macro_parser->getHost(), 'item' => $this->function_macro_parser->getItem(), 'function' => $this->function_macro_parser->getFunction(), 'functionName' => $this->function_parser->getFunction(), 'functionParams' => $function_param_list]);
     $this->expressions[] = ['expression' => $this->function_macro_parser->getMatch(), 'pos' => $startPos, 'host' => $this->function_macro_parser->getHost(), 'item' => $this->function_macro_parser->getItem(), 'function' => $this->function_macro_parser->getFunction(), 'functionName' => $this->function_parser->getFunction(), 'functionParam' => $this->function_parser->getParameters(), 'functionParamList' => $function_param_list];
     return true;
 }