Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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;
 }