问题标签 [esprima]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
119 浏览

javascript - 无论格式如何,都合并 js 文件。前任。合并 esprima ast

您是否知道任何将 js 文件合并到另一个但保留格式的工具?

例如,合并

进入

结果是

而不是合并冲突

我认为一个可以合并到 js ast(esprima 和 FF Parser API 产生的语法树)的工具,只刷新值并保留现有块的格式信息,因为它不会那么复杂,但我没找到。我想念什么吗?

0 投票
1 回答
630 浏览

javascript - 如何在客户端使用 estraverse js 库?

我能够通过 npm 获得 estraverse 并让它在节点应用程序上运行。但是,当我尝试通过 bower 安装它以供客户端使用时,安装失败并显示“找不到选项包”。当我尝试直接加载 js 文件时,它在控制台中显示“未捕获的 ReferenceError:未定义导出”。

0 投票
2 回答
201 浏览

node.js - 如何离线安装node.js包esprima?

您好我想为 node.js 安装包 esprima,我想获取一些 JS 代码的 AST。但是我找不到下载软件包并将其安装在离线电脑中的方法。

有任何想法吗?

0 投票
0 回答
94 浏览

javascript - firefox os 应用的源和汇

我正在开发一个用于 Firefox OS 应用程序分析的工具。该工具使用静态代码分析来识别源和接收器。然后动态分析以污染从源到接收器的数据。

我使用 Esprima 解析 JavaScript 代码并使用 Estraverse 模块遍历抽象语法树。

现在我被困在识别源和汇。我怎样才能做到这一点?还有什么方法可以获取 Firefox OS 市场应用程序进行分析。

0 投票
0 回答
151 浏览

esprima - 在 esprima 中查找表达式的最佳方法

我需要检查代码并查找 esprima 树中是否使用了计时器表达式。你知道最好的方法吗?谢谢

0 投票
0 回答
149 浏览

esprima - 在 JavaScript 中为 Object 检测本机 API 调用

我正在尝试构建一个分析程序,用于对使用 esprima 和 estraverse 提供给程序的 java 脚本文件进行静态分析。我想区分用户定义的本地函数和对对象的本机库的调用,例如“Object.prototype()、Object.getOwnProperties()”。

不确定如何区分原生 API 调用。

任何提示都会有所帮助。感谢期待。

0 投票
1 回答
121 浏览

regex - 需要正则表达式来完成语言解析器的基本递归功能(或帮助制作 Babel 插件)

我有以下正则表达式:

它用于获取这样的代码:

并将其替换为:

对于该用例(这是最常见的),它可以正常工作,但如果在其中使用它就不起作用this

结果错误地是这样的:

应该是这样的:

嗯,这是第一个问题。它实际上应该像 一样转换this.doSomething,所以最终结果应该是:

基本上,我的正则表达式假设右括号 fromthis.baz()是右括号,this.doSomething()并且也不会递归操作。我在这里需要某种递归行为/控制。

我听说过xregexp,但我不确定这对我有什么帮助。似乎真正的语言解析器可能是唯一的出路。我在那里没有太多经验,但我不怕弄脏我的手。似乎像 Esprima 这样的工具可以提供帮助?

归根结底,我希望在代码的构建步骤中对语言/语法进行细微的更改,即与 Babel 完全一样。我实际上正在使用 Babel。也许某种 Babel 插件是一种选择?

无论如何,我对快速修复正则表达式技巧或更专业/强大的语言解析技术持开放态度。我也很好奇这些问题通常是如何处理的。扫描整个输入并匹配我假设的打开/关闭大括号/括号/等?

0 投票
1 回答
268 浏览

javascript - esprima 中的 loc 和 range

Esprima 是一个很好的解析、分析多用途 javascript 代码的库。但我不明白locrange在 esprima。在网站上,他们说:

  • loc节点具有基于行和列的位置信息。
  • range节点具有基于索引的位置范围(数组)

我使用示例代码来理解它是什么。

结果是:

你能帮我理解range意思吗。

谢谢并恭祝安康,

0 投票
2 回答
629 浏览

javascript - 如何识别以下代码模式

我有一个 js 承诺模式,我想为几个关键字识别

例如,如果我输入如下代码:

在文件中,我还有以下各自的值

完整的代码

例 1

我希望如果我把大代码文件(作为字符串)找到这个文件包含模式

另一个例子

var d = Q.defer(); /* 或 $q.defer */

在文件中,您还具有以下各自的值

完成示例 2

有可用于进行此类分析的开源代码(提供一个模式,它会找到......)

childProcess 有一些更复杂的模式,但现在还可以:)

0 投票
1 回答
448 浏览

javascript - 如何通过函数调用找到 JavaScript 变量的传递用法?

假设我可以访问可能正在使用 JavaScript 变量的全部源代码foo

一些源代码如下所示:

是否有任何可用的工具(ESLint 规则、NPM 模块等)可以在foo这里识别变量的所有用法?我在寻找变量的所有访问列表,包括范围内和嵌套对象。因此,它必须识别:

  • foo.bar在全局范围内的使用
  • 函数调用中的foo用法
  • b.bar调用是访问foo.bar