/** * 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; }