调转符号
为了方便后面处理 ,我们先将所有的 二项表达式 进行预处理,将标识符放在左边, 数字放在右边, 比较简单,不多解释

转换逗号表达式
这里还原逗号表达式就要简单很多,主要是还原三元外的逗号表达式

处理后结果如下


最后将上面的合并起来,就是完整的将 三元转换成 if 语句了

转换 if else 结果图

转换变量声明语句+收集变量名

先看一下效果

遍历==变量声明语句==VariableDeclaration(var x, x2, x3),然后我们判断它声明的变量是不是大于1,如果是大于一的话,他就有可能含有赋值语句(x3 = "str"),就需要进行处理,如果只有一个的话,不需要管它,将这个变量名收集就好

在进行处理前,先定义两个变量,一个用来存储没有初始值的(1),一个用来存储有初始值的(2)

之后遍历声明遍历的数组,然后判断他的初始值是不是为 null,是就添加到 init_arr 里,不是就添加到 arr 里,顺便将这个变量名进行收集

-  将声明器添加到 arr 里的时候,要将他修改成只有一个声明器的声明语句,之后再添加,声明的类型和当前节点一致 O = "bi" ---> var O = "bi" 
-  最后就在当前节点的下方插入 含有初始值的数组,然后没有初始值的数组里有没有数据,没有的话就删掉当前节点,有的话就将当前节点声明变量的 declarations 数组修改成 init_arr 

有想交流或者交个朋友的可以加我
let v = Died_in2021本期还原后代码已放在星球中,有需要自行取用









![[Unity]在场景中随机生成不同位置且不重叠的物体](https://i-blog.csdnimg.cn/direct/2a8835e61521499ca6730a76cc16c7c5.png)









