Beispiel #1
0
 public function active(&$sToken, ParseState $aParseState)
 {
     $arrValuesToken = Insert::createRawInsertValues();
     // 追溯前面的 字段列表
     if (end($aParseState->arrTree) === ')') {
         $nDepth = 0;
         do {
             $token = array_pop($aParseState->arrTree);
             if (is_string($token)) {
                 if ($token === ')') {
                     $nDepth++;
                     continue;
                 } else {
                     if ($token === '(') {
                         $nDepth--;
                         continue;
                     }
                 }
             }
             if (!empty($token['expr_type']) and $token['expr_type'] === 'column') {
                 $arrValuesToken['pretree']['COLUMNS']['subtree'][$token['column']] = $token;
                 $arrValuesToken['columns'][] = $token['column'];
             } else {
                 $arrValuesToken['pretree']['COLUMNS']['subtree'][] = $token;
             }
         } while ($nDepth);
         $arrValuesToken['pretree']['COLUMNS']['subtree'] = array_reverse($arrValuesToken['pretree']['COLUMNS']['subtree'], true);
         if (!empty($arrValuesToken['columns'])) {
             $arrValuesToken['columns'] = array_reverse($arrValuesToken['columns'], false);
         }
     }
     $aParseState->arrTree[] =& $arrValuesToken;
     $this->switchToSubTree($aParseState, $arrValuesToken);
 }