1. Go to this page and download the library: Download zqx/sql-translation library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// 由于存在类似S -> S oper S的左递归生成式,LL无法使用,而且LR暂时无法手写出来,改成了手动代码进行状态转移。
$tree = new Token(['type' => root]);
foreach ($tokenList as $token) {
switch($token->type) {
case 左括号
if tree的末尾是函数 then 替换tree为函数节点进入I2
else if tree的末尾是关键字 then 标识为代码块进入I4
else 标识为括号表达式,进入I3
case 右括号
逐层判断父节点是否完毕,进行上升
case 运算符
标识为计算表达式,进入I1
默认
生成token并把token加到当前节点的子节点列表中
}
}