gpt4 book ai didi

javascript - 如何获取 JavaScript *代码文件*(输入中的字符串形式的代码)的 JSON(或等效)表示形式?

转载 作者:行者123 更新时间:2023-12-03 10:22:15 25 4
gpt4 key购买 nike

一切都在标题中! ^^

我知道一些js的SourceCode浏览器;当代码相对遵守当前非正式 js 编码规范的结构时,它们通常允许找到一些小东西。

(例如,使用 new 运算符、主要通过定义( F foo() {} )而不是通过表达式语句或文字对象( var foo = F(){}{ foo: F(){} } )等创建的函数;规范 i 精确碰巧没有遵守)。

但是,我真正感兴趣的是对代码的完整解析,一个工具返回,例如,包含整个代码的 JSON 文件,即所有语句、函数调用,甚至函数的参数调用(通常在 js 源浏览器中被遗忘,因为这些对象实际上是匿名对象/函数;但是它们在类似函数式编程中大量使用,因此对我遇到的所有源浏览器都是不可见的)

当然,目的是从 JSON 化代码创建我自己的源浏览器,希望它比普通浏览器走得更远,并且可以满足我轻松浏览代码的需求,也可以轻松查看定义了哪个变量在哪里,以及其他一些可能会增强我的编码体验的东西。

无论如何;我并不是特别喜欢 JSON 格式,当然,因为我用 JS 编写源浏览器,所以它是直接简单的输入,但任何其他数据表示格式都可以,重要的是转换的解析器代码写入喉舌对象。任何看起来和做类似事情的东西(例如具有更详细和信息丰富的输出的 L/Hinter,或者其他)都是受欢迎的;)

提前致谢:)

¹ “对象”:JS 定义的对象,即类似于字典的抽象数据;不是基于类的 OO 语言定义的对象(类实例)

最佳答案

我认为您正在寻找一个标准来将 javascript 代码表示为抽象语法树 (AST)。 javascript AST 有一个广泛使用的标准,称为 ESTree 。有一个活跃的社区支持标准化项目,并且针对新版本的 javascript 进行了更新。

或者,还有Shift AST它提供了稍微不同的标准 AST,并且有一个在线实时解析工具。

AST 生成器的实现通常提供一个带有 parse() 方法的 Parser,该方法将您的 javascript 代码作为字符串参数值,并返回一个抽象语法树对象按照标准定义。

例如传递此代码:

c = a + b;

将生成此 AST:

type: "Script"
directives:[]
statements:
0:
type: "ExpressionStatement"
expression:
type: "AssignmentExpression"
binding:
type: "BindingIdentifier"
name: "c"
expression:
type: "BinaryExpression"
left:
type: "IdentifierExpression"
name: "a"
operator: "+"
right:
type: "IdentifierExpression"
name: "b"

最后,有代码生成器可以执行相反的过程:当拥有 AST 并希望从中生成 javascript 代码时。

可以找到 ESTree 解析器的更新且维护良好的实现 here .

关于javascript - 如何获取 JavaScript *代码文件*(输入中的字符串形式的代码)的 JSON(或等效)表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com