public static function execute(&$non_terminal, &$nodes) { if ($nodes[0]->getTokenString() !== 'strrpos') { return; } $tmp_nodes =& $nodes[2]->getNodes(); if (!$tmp_nodes) { return; } $tmp_nodes =& $tmp_nodes[0]->getNodes(); $parameters = array(); while (count($tmp_nodes) >= 3) { $parameters[] =& $tmp_nodes[2]; array_unshift($parameters, $tmp_nodes[2]); $tmp_nodes =& $tmp_nodes[0]->getNodes(); } array_unshift($parameters, $tmp_nodes[0]); $parameter =& $parameters[1]; $tmp_nodes =& $parameter->getNodes(); // add 'substr(' $terminal = new phpParserTerminal(); $terminal->setToken('substr('); array_unshift($tmp_nodes, $terminal); // add ', 0, 1)' $terminal = new phpParserTerminal(); $terminal->setToken(', 0, 1)'); array_push($tmp_nodes, $terminal); }
public function &getTerminal($terminal = null) { $token =& $this->getToken(); if (!$terminal) { $terminal = new phpParserTerminal(); } if (is_string($token)) { if ($this->debug) { $this->log("STRING: {$token}"); } $terminal->setToken($token); return $terminal; } else { if (!is_array($token)) { return $terminal; } } switch ($token[0]) { case T_CLOSE_TAG: case T_COMMENT: case T_DOC_COMMENT: case T_INLINE_HTML: case T_OPEN_TAG: case T_WHITESPACE: if ($this->debug) { $this->log(sprintf("%s: %s\n", token_name($token[0]), $token[1])); } $function = __FUNCTION__; $terminal->addInvalidToken($token); return $this->{$function}($terminal); } if ($this->debug) { $this->log(sprintf("%s: %s\n", token_name($token[0]), $token[1])); } $terminal->setToken($token); return $terminal; }