142 $tokenizer->skipWhiteSpace();
144 if ($tokenizer->testUpperText(
'IF'))
146 $tokenizer->skipWhiteSpace();
148 if ($tokenizer->testUpperText(
'NOT'))
150 $tokenizer->skipWhiteSpace();
153 if ($tokenizer->testUpperText(
'EXISTS'))
155 $tokenizer->skipWhiteSpace();
160 $table =
new Table($tokenizer->getCurrentToken()->text);
163 $tokenizer->nextToken();
164 $tokenizer->skipWhiteSpace();
166 if ($tokenizer->testText(
'('))
168 $tokenizer->skipWhiteSpace();
170 $token = $tokenizer->getCurrentToken();
171 $level = $token->level;
175 $tokenizer->testUpperText(
'INDEX')
176 || $tokenizer->testUpperText(
'KEY')
179 $tokenizer->skipWhiteSpace();
180 $table->createIndex($tokenizer,
false);
182 elseif ($tokenizer->testUpperText(
'UNIQUE'))
184 $tokenizer->skipWhiteSpace();
185 if ($tokenizer->testUpperText(
'KEY'))
187 $tokenizer->skipWhiteSpace();
189 elseif ($tokenizer->testUpperText(
'INDEX'))
191 $tokenizer->skipWhiteSpace();
193 $table->createIndex($tokenizer,
true);
195 elseif ($tokenizer->testUpperText(
'FULLTEXT'))
197 $tokenizer->skipWhiteSpace();
198 if ($tokenizer->testUpperText(
'KEY'))
200 $tokenizer->skipWhiteSpace();
202 elseif ($tokenizer->testUpperText(
'INDEX'))
204 $tokenizer->skipWhiteSpace();
206 $table->createIndex($tokenizer,
false,
true);
208 elseif ($tokenizer->testUpperText(
'PRIMARY'))
210 $tokenizer->skipWhiteSpace();
211 if (!$tokenizer->testUpperText(
'KEY'))
219 $table->createConstraint($tokenizer,
false);
221 elseif ($tokenizer->testUpperText(
'CONSTRAINT'))
223 $tokenizer->skipWhiteSpace();
224 $constraintName = $tokenizer->getCurrentToken()->text;
226 $tokenizer->nextToken();
227 $tokenizer->skipWhiteSpace();
229 if ($tokenizer->testUpperText(
'PRIMARY') || $tokenizer->testUpperText(
'UNIQUE'))
232 $table->createConstraint($tokenizer, $constraintName);
234 elseif ($tokenizer->testUpperText(
'FOREIGN'))
237 $table->createConstraint($tokenizer, $constraintName);
241 throw new NotSupportedException(
"'PRIMARY KEY' expected. line:" . $tokenizer->getCurrentToken()->line);
244 elseif ($tokenizer->testUpperText(
')'))
250 $table->createColumn($tokenizer);
253 $tokenizer->skipWhiteSpace();
255 $token = $tokenizer->getCurrentToken();
257 if ($token->level == $level && $token->text ===
',')
259 $token = $tokenizer->nextToken();
261 elseif ($token->level < $level && $token->text ===
')')
263 $tokenizer->nextToken();
270 $token = $tokenizer->getPrevToken();
273 throw new NotSupportedException(
"',' or ')' expected got (" . $token->text .
'). line:' . $token->line);
276 $tokenizer->skipWhiteSpace();
278 while (!$tokenizer->
endOfInput() && $token->level >= $level);
283 $suffix .= $tokenizer->getCurrentToken()->text;
284 $tokenizer->nextToken();
288 $table->setBody($suffix);