227还原实战(三)

调转符号

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

转换逗号表达式

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

处理后结果如下

最后将上面的合并起来,就是完整的将 三元转换成 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

本期还原后代码已放在星球中,有需要自行取用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值