zoukankan      html  css  js  c++  java
  • 三元表达式转if

    https://www.jianshu.com/p/a3857fa5c899

    const fs = require('fs');
    const { parse } = require("@babel/parser");
    const traverse = require("@babel/traverse").default;
    const types = require("@babel/types");
    const generator = require("@babel/generator").default;
    
    let jscode = `
    
    void(1 - 1 ? aa = b + 4 : c + 5 ? cc = a + 1 : b + 2 ? ee = c + 3 : ff = 4)
    
    `;
    
    let ast = parse(jscode);
    
    
    const visitor =
        {
            ConditionalExpression: {
                exit(path) {
                    let {test, consequent, alternate} = path.node;
                    let new_consequent = types.BlockStatement([types.ExpressionStatement(consequent)]);
                    let new_alternate = types.BlockStatement([types.ExpressionStatement(alternate)]);
                    let if_node = types.IfStatement(test, new_consequent, new_alternate);
                    path.replaceWithMultiple(if_node);
                    path.stop()
                },
            }
    
        }
    
    
    const visitor1 =
        {
            UnaryExpression(path) {
                let operator = path.node.operator;
                if (operator === "void") {
                    path.replaceWithMultiple(path.node.argument)
                }
            },
        }
    
    traverse(ast, visitor1);
    traverse(ast, visitor);
    let { code } = generator(ast);
    console.log(code);
  • 相关阅读:
    批量管理 页面空间
    WinForm 程序Post GEt web程序方法
    ASP.NETSession详解
    ASP.NET 中实现会话状态的基础
    ASP.NET验证控件详解
    StringHelper类
    PowerDesigne 笔记
    asp.ent 会话标识ID
    常用正则表达式
    HashMap中的keySet
  • 原文地址:https://www.cnblogs.com/angdh/p/15776905.html
Copyright © 2011-2022 走看看