60 lines
1.3 KiB
PHP
60 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Not implemented (yet) statements.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin\SqlParser\Statements;
|
|
|
|
use PhpMyAdmin\SqlParser\Parser;
|
|
use PhpMyAdmin\SqlParser\Statement;
|
|
use PhpMyAdmin\SqlParser\Token;
|
|
use PhpMyAdmin\SqlParser\TokensList;
|
|
|
|
/**
|
|
* Not implemented (yet) statements.
|
|
*
|
|
* The `after` function makes the parser jump straight to the first delimiter.
|
|
*/
|
|
class NotImplementedStatement extends Statement
|
|
{
|
|
/**
|
|
* The part of the statement that can't be parsed.
|
|
*
|
|
* @var Token[]
|
|
*/
|
|
public $unknown = [];
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function build()
|
|
{
|
|
// Building the parsed part of the query (if any).
|
|
$query = parent::build() . ' ';
|
|
|
|
// Rebuilding the unknown part from tokens.
|
|
foreach ($this->unknown as $token) {
|
|
$query .= $token->token;
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
|
|
/**
|
|
* @param Parser $parser the instance that requests parsing
|
|
* @param TokensList $list the list of tokens to be parsed
|
|
*/
|
|
public function parse(Parser $parser, TokensList $list)
|
|
{
|
|
for (; $list->idx < $list->count; ++$list->idx) {
|
|
if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) {
|
|
break;
|
|
}
|
|
|
|
$this->unknown[] = $list->tokens[$list->idx];
|
|
}
|
|
}
|
|
}
|