. * */ return [ //Parsing regexes 'functionRegex' => '/(CREATE\s+)?PROCEDURE\s+(?\w+)\((?.*?)\)\s+BEGIN\s+(?.*?)END(?!\s*@)/ms', 'paramRegex' => '/(IN|OUT|INOUT|LOCAL)\s+([\.@\w]+)\s*(\w+)?(\(\d+\))?,?(\s*--[^$\n]+)?[$\n]?/ms', 'valuesRegex' => '/\s*@VALUES\s*\(\s*:(?[\w\[\]]+)\s*\)\s*/ms', 'eachRegex' => '/\s*@EACH\s*\(\s*(\w+)\s*\,\s*([\w\.]+)\s*\)\s*/ms', 'eachVarRegex' => '/\s*@EACH\s*\(\s*:(.+?)\s*\)\s*/ms', 'filterRegex' => '/\s*:?(?[\w_\.]+)?\s*=?\s*@FILTER\s*\(\s*:(?[\w\._]+)\s*\,\s*(?[\w_]+),?\s*(?true|false)?,?\s*(?true|false)?\s*\)\s*/ms', 'varRegex' => '/:([\w+\.])/ms', 'importRegex' => '/import\(([\w\-\_\.\/]+?)\);?/', //Generated model templates 'placeholder' => '?', //Lexer 'tokenMap' => [ '@IF\s+.+?\s*THEN' => 'T_IF_START', '@ELSE' => 'T_ELSE', 'END @IF' => 'T_IF_END', '@KEYS\(.+?\)' => 'T_KEYS', '@LIST\(.+?\)' => 'T_LIST', //'@EACH\(.+?\)' => 'T_EACH_START', //'END @EACH' => 'T_EACH_END', '@SQL_COUNT\(.+?\)' => 'T_SQL_COUNT', '@SQL_LIMIT\(.+?\)' => 'T_SQL_LIMIT', '.+?' => 'T_SQL', ], 'macroMap' => [ //if 'T_IF_START' => [ '/\s*@IF\s*(?.+?)\s*THEN\s*/', //regex <<<'PHP' '; if ($%cond) { $sql .= ' PHP , ], 'T_ELSE' => <<<'PHP' '; } else { $sql .= ' PHP , 'T_IF_END' => '\'; } //end if $sql .= \'', //end if 'T_KEYS' => [ '/\s*@KEYS\s*\(\s*:(?[\w_\.]+)\s*\)\s*/ms', <<<'PHP' '; $q = $this->db->quote; $sql .= $q . implode("$q,$q", array_keys($params['%keys'])); $sql .= $q . ' PHP ], 'T_LIST' => [ '/\s*@LIST\s*\(\s*:(?[\w_\.]+)\s*\)\s*/ms', <<<'PHP' '; list($_sql, $_params) = $this->db->expandList($params['%list'], '%list'); $sql .= ' ' . $_sql; if (is_array($_params)) $paramTypes = array_merge($paramTypes, $_params); $sql .= ' ' . ' PHP ], 'T_SQL_COUNT' => [ '/\s*@SQL_COUNT\s*\(\s*(?.+?),\s*(?.+?)\s*\)\s*/ms', <<<'PHP' '; $sql .= $this->db->sqlCount($prevSql, '%column', $this->db->prefix . '%table'); $sql .= ' PHP ], 'T_SQL_LIMIT' => [ '/\s*@SQL_LIMIT\s*\(\s*(?.+?),\s*(?.+?)\s*\)\s*/ms', <<<'PHP' '; $sql .= $this->db->sqlLimit('%start', '%limit'); $sql .= ' PHP ], //'T_EACH_START' => 'EACH()', //'T_EACH_END' => '}', '@SQL_COUNT\(.+?\)' => 'T_SQL_COUNT', '@SQL_LIMIT\(.+?\)' => 'T_SQL_LIMIT', 'T_SQL' => '', ], ];